在开发中,测试环境与正式环境是分开的,常常需要修改配置打不同环境下的apk,而且如何在android平台下让debug和release的app共存着提高效率避免重复工作的目的与大家分享一个方案。
配置应用的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属性,只要保证名称不同即可,否则安装会 异常。
包名加了后缀后,微信无法调起,所以测试时如果设计微信则要处理一下。
相关资源:桌面开满999朵玫瑰花软件绿色版.rar-其它代码类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!