Android的APP多版本,Android多版本共存-基于gradle实现debug版和release版app共存
在開發中,測試環境與正式環境是分開的,常常需要修改配置打不同環境下的apk,而且如何在android平臺下讓debug和release的app共存?本著提高效率避免重復工作的目的與大家分享一個方案。
本文是基于強大的AndroidStudio的構建工具gradle來實現的。
配置應用的build.gradle文件
android{
...
buildTypes{
debug{
//在編譯打包時會給包名加上后綴
applicationIdSuffix'.debug'
}
release{
}
}
...
}
之后開啟Build Variants界面(在androidstudio左下角的窗口選擇器可以選擇),
選擇不同的選項,run的時候走的就是對應的gradle配置。
230049551073205.png
權限重復的問題
如果項目中使用了第三方庫,而且在AndroidManifest.xml中聲明了權限,例如個推
android:name="getui.permission.GetuiService.package_name"
android:protectionLevel="normal"/>
android5.0以上安裝應用時會報duplicate permission exception,所以要保證debug和release安裝包的permisson name不同,
可以在gradle文件下debug和release節點下配置一個字段,然后在AndroidManifest.xml中引用來實現打包時動態配置AndroidManifest.xml中的信息,如下:
修改AndroidManifest.xml
android:name="${getui_name}"
android:protectionLevel="normal"/>
配置build.gradle
debug{
applicationIdSuffix'.debug'
getui_name:"getui.permission.GetuiService.package_name_debug",
}
release{
getui_name:"getui.permission.GetuiService.package_name",
}
AndroidManifest.xml其他動態信息也可以采用這種方式配置,如app_name,可以實現測試包和正式包的名字不同。
代碼中使用geadle中的動態字段
例如:可以在gradle文件中debug和release節點下如下配置字段,然后在代碼中以BuildConfig.IS_DEBUG形式來引用
release{
...
buildConfigField "boolean", "IS_DEBUG", "false"
...
}
debug{
...
buildConfigField "boolean", "YY_DEBUG", "true"
...
}
PS
AndroidManifest.xml如果配置了provider,也需要采用上面的方式配置provider的
android:authorities屬性,只要保證名稱不同即可,否則安裝會報異常。
包名加了后綴后,微信無法調起,所以測試時如果設計微信則要處理一下。
總結
以上是生活随笔為你收集整理的Android的APP多版本,Android多版本共存-基于gradle实现debug版和release版app共存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言比较麻烦的编程题,C语言编程题,比
- 下一篇: c语言是结构化 模块化,c语言是完全模块