在项目开发过程中,经常会有需要打包buildType的 APK 的需求。 比如 debug版,release版,dev版等等。 有时候不同的版本中使用到的不同的服务端api域名也不相同。 比如 debug_api.com,release_api.com,dev_api.com等等。
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
qafc {
//这里是关键代码
// 属性applicationIdSuffix作用是在packageId后面加上一个后缀,后缀必须以『.』开头
applicationIdSuffix '.qafc'
signingConfig signingConfigs.config
}
dev {
applicationIdSuffix '.dev'
signingConfig signingConfigs.config
}
}
再进一步方便调试app,点Android Studio上这个按钮 将不同版本的包直接运行到手机上,我们还需要做以下配置。
image.png
Setp2.
image.png
Setp3.
点击按钮直接将dev包安装到手机上
如何一步安装dev、release、debug所有的包到手机
创建一个gradle task
image.png
将之前创建的任务都加到这个任务中,installAll最终包括了所有的任务
image.png
如果你在一台设备上安装两个 App,一个是 Debug 版一个是 Release 版,那么你很难区分出来到底哪个是哪个(不打开的情况下)。
可以在你的 App icon 上加一个蒙层用以区分出各个 BuildType 的 App,所以我们需要从修改应用图标入手。
image.png
Setp1.准备几张带有buildtype标签的logo图
Setp2.
//利用manifestPlaceholders属性做图标的动态替换
// 注意,这里是添加,在 string.xml 不能有这个字段,会重名!!!
release{
signingConfig signingConfigs.release
resValue "string", "app_name", "应用预览版"
manifestPlaceholders =[app_icon:"@drawable/app_icon_test"]
}
Setp3.
//将在AndroidManifest.xml中替换成引用
<application
android:name=".app.MyApplication"
android:allowBackup="true"
android:configChanges="orientation"
android:icon="${app_icon}"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:supportsRtl="true"
android:theme="@style/AppTheme.NoActionBar">