Android差异化打包productFlavors --- 一套代码生成两个APK

来源:互联网 发布:java中反射method 编辑:程序博客网 时间:2024/06/05 10:26

有些时候,因为业务扩展,需要两个相同的app,通过分支管理,两套代码当然ok,但是这样后期维护,BUG修复总不能两套代码同时修改吧,这里推荐使用productFlavors差异化打包,一套代码生成两个APK

一、Flavor创建

在APP中build.gradle文件中的一段代码:
这里写图片描述

android {    ...    }    //差异化打包    productFlavors {        project1 {            applicationId "com.android.app1"            versionCode 120            versionName "1.2.0"            manifestPlaceholders = [label: "APP1", icon: "@mipmap/icon_1",key:"11111"]        }        project2 {            applicationId "com.android.app2"            versionCode 100            versionName "1.0.0"            manifestPlaceholders = [label: "APP2", icon: "@mipmap/icon_2",push_key:"22222"]        }    }    buildTypes {    ...    }

二、添加相应目录

这里写图片描述

三、Manifest中的操作(主要是引用的一些第三方操作)

1、图标、APP命更换

  <application        android:name=".base.ElephantApplication"        android:allowBackup="true"        android:icon="${icon}"  //引用前面定义好的icon        android:label="${label}"//引用前面定义好的APP名字        android:supportsRtl="true"        android:theme="@style/AppTheme">

2、对于一些第三方工具如推送,包名 key的更换

 <service            android: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-data            android:name="JPUSH_CHANNEL"            android:value="developer-default" />        <meta-data            android: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、打包

这里写图片描述

七、大功告成

如果错误或者不对的地方,多多指教纠正

原创粉丝点击