本文主要是介绍【ProductFlavors】Android差异化打包productFlavors ( 一套代码生成两个APK),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
有些时候,因为业务扩展,需要两个相同的app,通过分支管理,两套代码当然ok,但是这样后期维护,BUG修复总不能两套代码同时修改吧,这里推荐使用productFlavors差异化打包,一套代码生成两个APK
一、Flavor创建
在APP中build.gradle文件中的一段代码:
android {...}//差异化打包productFlavors {project1 {applicationId "com.android.app1"versionCode 120versionName "1.2.0"manifestPlaceholders = [label: "APP1", icon: "@mipmap/icon_1",key:"11111"]}project2 {applicationId "com.android.app2"versionCode 100versionName "1.0.0"manifestPlaceholders = [label: "APP2", icon: "@mipmap/icon_2",push_key:"22222"]}}buildTypes {...}
二、添加相应目录
三、Manifest中的操作(主要是引用的一些第三方操作)
1、图标、APP命更换
<applicationandroid:name=".base.ElephantApplication"android:allowBackup="true"android:icon="${icon}" //引用前面定义好的iconandroid:label="${label}"//引用前面定义好的APP名字android:supportsRtl="true"android:theme="@style/AppTheme">
2、对于一些第三方工具如推送,包名 key的更换
<serviceandroid:name="cn.jpush.android.service.DaemonService"android:enabled="true"android:exported="true"><intent-filter><action android:name="cn.jpush.android.intent.DaemonService" /><category android:name="${applicationId}" />//引用前面定好的包名</intent-filter></service>
<meta-dataandroid:name="JPUSH_CHANNEL"android:value="developer-default" /><meta-dataandroid:name="JPUSH_APPKEY"android:value="${key}" /> //引用前面定好的key
四、一些资源的更换
在对应的目录下,放置相同名字的资源文件,打包的时候,会自动匹配该目录下的资源文件,对于一些公用的图片不用处理
对于一些颜色的修改、布局的修改,都可以用同一种方法(不同包下的同名文件)
五、代码动态控制展示
if (BuildConfig.FLAVOR.equals("project1")) {//当flavors是project1 的时候,需要做的处理,比如设置某个布局的隐藏之类的 } else if (BuildConfig.FLAVOR.equals("project2")) {//当flavors是project2 的时候,需要做的处理}
六、打包或者AS调试
1、as调试
在这里可以选择,你要调试的包,然后进行运行测试
2、打包
七、大功告成
如果错误或者不对的地方,多多指教纠正
这篇关于【ProductFlavors】Android差异化打包productFlavors ( 一套代码生成两个APK)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!