内容简介:某天测试反映,每次测试不同环境的时候都要卸载旧的包。太麻烦了,能不解决?研究发现发现两个方案比如我有一个app 包他可能有这样几种类型
某天测试反映,每次测试不同环境的时候都要卸载旧的包。太麻烦了,能不解决?
两种方案
研究发现发现两个方案
- app内可以切不同的环境
- 通过多包共存的方式 --- xx.正式, xxx.测试、xx.开发环境 主要讲一下app 共存
多包共存
包类型
比如我有一个app 包他可能有这样几种类型
- debug 包(默认渠道)
- release 包(默认渠道)
- debug 包(其他渠道 --- 比如美团)
- release 包(默认渠道 --- 比如美团)
怎么共存
虽然我是个前端仔,but 查资料还是会的。经过不懈的努力,终于发现
安卓系统中区分不同应用使用的是 applicationId 属性 复制代码
so 下一步问题变成如何去改 appId 了 查询资料发现可以利用 gradle 去设置 productFlavors 可以很方便的实现这个需求.
具体操作
修改 android/app/build.gradle productFlavors { beta {//测试环境 applicationId "com.x.beta" // applicationIdSuffix ".beta" manifestPlaceholders = [ app_name: "@string/app_name_beta", ] // resValue("string", "envTag", "beta环境") } product {//生产环境 applicationId "com.x.product" // applicationIdSuffix ".product" manifestPlaceholders = [ app_name: "@string/app_name", ] // resValue("string", "envTag", "生产环境") } } 复制代码
这里有两种访问去改 appId
- 第一种就是我那种去直接去设置不同的id
- 第二种就是去设置 applicationIdSuffix 也就是应用标识后缀,比如我默认 appid是 com.x。执行 /gradlew assembleReleaseBeta 会在后面追加 com.x.beat。当然不应命令行在 android Studio 里面也能看到这个选项
动态设置app_name、icon、appkey
我们可以通过 manifestPlaceholders 也就是占位符来设置
// 扩展上面 beta { ... manifestPlaceholders = [ app_name: "@string/app_name_beta", app_icon: '@xxxx' JPUSH_APPKEY: '123' // 极光推送, GoogleMapKey: '456' //谷歌地图 ] } product {} 复制代码
build.gradle 修改完了,接下来还要设置 /android/app/src/main/AndroidManifest.xml里面的内容
<application android:icon="${app_icon}" android:label="${app_name}" xxxxx> <!-- Google Map Key --> <meta-data android:name="com.google.android.geo.API_KEY" android:value="${GoogleMapKey}" /> <!-- 极光推送--> <!-- User defined. 用户自定义的广播接收器--> <receiver android:name="com.ablegenius.member.receiver.JpushReceiver" android:enabled="true"> <!--android:process=":remote"广播运行在远端单独进程中 ,调试断点无法执行需要关闭 或者 debug时候选择 remote ! --> <intent-filter> xxxxx <!--推送包名必须一致使用Gradle中的常量才是最终的 --> <category android:name="${applicationId}" /> </intent-filter> </receiver> </application> 复制代码
最后配置包名 android/app/src/main/res/values/strings.xml
<resources> <string name="app_name">x正式</string> <string name="app_name_beta">x测试版</string> </resources> 复制代码最开始的时候我以为我的两个版本appid 是一样的,然而并不是解决了我的问题
通过 productFlavors 这种方式动态去改 appid,其实也就是现在的通用的一种说法 --- 多渠道打包 所以如果用这种方式 可以直接打渠道包上架到不同的市场
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 模块化-Application多module共存编译生成解决方案
- 实体继承与@Builder注解共存
- 安全与公平共存的智慧城市
- Centos多版本php共存
- Spring Cloud与Dubbo共存方案总结
- 飞特 3.1,商城与后台起飞,模板与注解共存
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Developing Large Web Applications
Kyle Loudon / Yahoo Press / 2010-3-15 / USD 34.99
As web applications grow, so do the challenges. These applications need to live up to demanding performance requirements, and be reliable around the clock every day of the year. And they need to withs......一起来看看 《Developing Large Web Applications》 这本书的介绍吧!
URL 编码/解码
URL 编码/解码
RGB HSV 转换
RGB HSV 互转工具