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配置。

3724533dcd6aomobile=yes

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文库

来源:某朵牛 Pusto

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月23日
下一篇 2021年4月23日

相关推荐