Android多渠道打包

作者: CaptainJno | 来源:发表于2017-03-24 11:49 被阅读0次

    APP开发过程中,有时会遇到一个需求:公司让开发两个客户端(比如买家端、卖家端),两个APP有很多共同点,开发者为了代码方便,于是在一个项目中开发,但,最终还是要打包成两个APP,就会遇到一些比较棘手的问题:

    问题一、APP名字怎么办

    1、将Manifest中application的label修改如下:

    android:label="${app_name}"               //占位写法,$是占位符,app_name是占位标签

    2、在Module的build.gradle中增加下面代码:

    productFlavors {

    seller {

    versionCode1

    versionName"1.0.0"

    applicationId"com.test.seller"

    //app_name是上述label中的占位标签

    //app_name_seller是res文件中的字符串资源id

    manifestPlaceholders= [app_name:"@string/app_name_seller"]      

    }

    buyer {

    versionCode1

    versionName"1.0.0"

    applicationId"com.test.buyer"

    //app_name是上述label中的占位标签

    //app_name_buyer是res文件中的字符串资源id

    manifestPlaceholders= [app_name:"@string/app_name_buyer"]    

    }

    }

    这样,打出来的release包就是两个不同名字。

    问题二、APP包名怎么办

    在“问题一”中,已经把该问题解决了,就是设置不同的applicationId。大家都知道,不同的applicationId代表不同的APP。

    按照“问题一”配置后,开发过程中如果需要调试运行seller端,需要注释掉buyer{...}这段代码。反之调试buyer,注释掉sellerr{...}。

    问题三、APP图标怎么办

    方法类似“问题一”的换APP名字:

    1、将Manifest中application的icon修改如下:

    android:icon="${app_icon}"

    2、在Module的build.gradle中增加下面代码(下面以seller端为例):

    manifestPlaceholders= [app_icon:"@string/app_icon_seller"]

    注:如果同时需替换APP名字和APP图标,那么manifestPlaceholders这么写:

    manifestPlaceholders= [app_name:"@string/app_name_seller",app_icon:"@string/app_icon_seller"]

    问题四、其他代码怎么办

    有人会问,上面3个问题都是将Manifest中要用到的资源给提取出来,放在gradle中配置了。那,非Manifest中的资源怎么办?

    比如:我想在项目中,不同端的登录,我只想用一个LoginActivity.java实现不同跳转;又比如:我想为不同端APP设置不同启动页图片,欢迎页图片等。

    其实,这个问题我没有好办法。。。网上有说在与main文件夹同级的目录中,新建两个文件夹(seller、buyer),子文件夹结构和main都一样,只是,文件中资源采用同名不同内容的方法,这样编译打包时会根据"问题一"中2的配置来自动调用。但是,个人亲自尝试验证,此方法不可行。

    所以,我只能采用了笨方法。因为两个项目的applicationId不同,所以我在需要区分APP端口的地方,用了如下的代码

    if(getApplicationContext().getPackageName().equals("com.test.seller")) {

    //TODO ...卖方

    }else if(getApplicationContext().getPackageName().equals("com.test.buyer")) {

    //TODO ...买方

    }

    好了,以上就是全部内容。谢谢!


    文章末尾:如果大家看到我的文章,有关于问题 四 的好的解决方案,还麻烦评论里说一下,或发个链接。谢谢!

    相关文章

      网友评论

        本文标题:Android多渠道打包

        本文链接:https://www.haomeiwen.com/subject/kzpxottx.html