实际开发中,我们可能需要对项目进行多版本打包,比较笨的方法是需要打什么包就修改相关配置,打出来就行了,但是
这种做法太过于笨重。下面讲下多版本打打包的实现方法
多版本打包
需求场景:同一个手机安装同一个apk的不同版本。比如安装两个不同生产环节的apk、beta版及pro版等。
实现:
首先打开app下的build.gradle 找到defaultConfig
defaultConfig{
applicationId"com.zhangkx.androidprinter"
minSdkVersion15
targetSdkVersion25
versionCode1
versionName"1.0"
testInstrumentationRunner"android.support.test.runner.AndroidJUnitRunner"}
这里的defaultConfig就是默认的版本配置,也就是主配置,如果想要配置多版本的话需要添加新的配置,
下面给出配置代码
//配置更多版本的apk
productFlavors{
//beta版
Beta{
applicationId"com.zhangkx.androidprinter.beta"
//获取string.xml文件总stryKey的值java代码context.getResources().getString(R.string.versionKey);
resValue("string","versionKey","version_beta");}
//Pro版
Pro{
applicationId"com.zhangkx.androidprinter.pro"
//获取string.xml文件总stryKey的值java代码context.getResources().getString(R.string.versionKey);
resValue("string","versionKey","version_pro");
}
}
这样在打包的时候就可以选择打不通版本代码,并且能安装两个不同版本的代码到手机中
如果需要对不同版本设置不同的icon的话 可以这样实现
android:allowBackup="true"
android:icon="${icon}" ///注意这里的写法 这里可以使用引用的icon
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
gradle 这样配置就可以了
//配置更多版本的apk
productFlavors{
//beta版
Beta{
applicationId"com.zhangkx.androidprinter.beta"
manifestPlaceholders=[app_name:"com.zhangkx.androidprinter.beta",icon:"@mipmap/icon"] //这里是设置对应版本的icon的
//获取string.xml文件总stryKey的值java代码context.getResources().getString(R.string.versionKey);
resValue("string","versionKey","version_beta");
}
//Pro版
Pro{
applicationId"com.zhangkx.androidprinter.pro"
manifestPlaceholders=[app_name:"com.zhangkx.androidprinter.beta",icon:"@mipmap/ic_launcher_round"]
//获取string.xml文件总stryKey的值java代码context.getResources().getString(R.string.versionKey);
resValue("string","versionKey","version_pro");
}
}
当然,如果不同版本有特殊的标记或者api不一样的话,也可以通过这种方式进行更改,到此,多版本打包已经完成了