解决发布测试版和正式版修改N多代码的问题
来源:互联网 发布:家用洗地机 知乎 编辑:程序博客网 时间:2024/06/15 12:56
前言:有时候我们需要在手机上能同时安装测试版和正式版app,这就要求我们app的包名不同,包名不同的话,就要求我们的测试版用的第三方SDK的app key就不同,比如项目中用了极光推送,我们就要申请两个app key。
如果不借助gradle话每次手动修改包名、app key、极光server的category显然很容易弄混淆。
在android studio中是通过applicationId来判断是否为同一个app,并且server中的category节点的包名其实也是applicationId,在android studio中如果没有写applicationId那么默认与packageName是一样的。
核心代码:
productFlavors { //发布正式环境 prod{ //如果是多渠道打包就把这个花括号中的内容写到 productFlavors.all 中 applicationId = "com.xxx.xxxx" //可以在manifet.xml引用manifestPlaceholders的键值对 manifestPlaceholders = [APP_NAME:"云MAS", PGYER_APPID : "85fb81911exxxxxxxxxxxxx773d7de34",//设置app_key JPUSH_APPKEY:"1910xxxxxxxxxxxxxb10d0e8",//设置app_key APPLICATION_ID : applicationId]//设置程序包名,区别packageName //可以在java代码中来获取url,第一个参数表示类型,第二个参数表示引用名,第三个参数表示引用的值,注意字符串类型需要在爽引号的基础上再打上单引号。 buildConfigField("String","HOST_URL",'"1xx.xx.xx.xx:xx00/xxxxx/app"') //可以在java代码中来获取这个图片 buildConfigField("int","ICON_CLOUD","R.drawable.xxxxx") }//发布测试环境 dev{ applicationId = "com.xxx.xxx.beta" manifestPlaceholders = [APP_NAME:"云MAS(测试)", PGYER_APPID : "85fb81911exxxxxxxxxxxxx73d7de34", JPUSH_APPKEY:"1910xxxxxxxxxxxxxxxxx0e8", APPLICATION_ID : applicationId] buildConfigField("String","HOST_URL",'"1xx.3x.xx.7x:9000/messaxxxxxxice/app"') buildConfigField("int","ICON_CLOUD","R.drawable.xxxxx_test") } }
在manifest.xml中引用:
//极光推送的权限需要包名<uses-permission android:name="${APPLICATION_ID}.permission.JPUSH_MESSAGE" />//动态改变app名tools:replace="android:label"android:label="${APP_NAME}"//服务中引用包名<service android:name="cn.jpush.android.service.DaemonService" android:enabled="true" android:exported="true" > <intent-filter> <action android:name="cn.jpush.android.intent.DaemonService" /> <category android:name="${APPLICATION_ID}" /> </intent-filter> </service>
java代码中动态设置
//动态设置RUL,测试版使用测试版的url,正式版使用正式版的url,使用前需要同步gradle,否则就会找不到HOST_URLprivate static String serverAddress= BuildConfig.HOST_URL;//动态设置图片,测试版使用测试版的图片,正式版使用正式版的图片,使用前需要同步gradle,否则就会找不到ICON_CLOUDiamgeView.setImageResource(BuildConfig.ICON_CLOUD);
0 0
- 解决发布测试版和正式版修改N多代码的问题
- Ubuntu9.04 正式版发布时间的WEB倒计时代码
- 关于百度地图获取测试版SHA1和发布版发布版SHA1的问题
- 代码发布的问题
- N多android 解决不了的问题
- 解决C#代码修改Windows注册表不生效的问题
- VS2010发布web应用程序详解(解决发布丢失非代码文件的问题)
- 非非.Net代码生成器1.0正式版发布
- 解决Android Studio 正式版无法在线更新的问题
- android studio 2.0正式版更新遇到的问题与解决
- 解决Android Studio正式版无法在线更新的问题
- Visual Studio 2008 LINQ to SQL 的Beta 2测试版和RTM正式版的差异
- Visual Studio 2008 LINQ to SQL 的Beta 2测试版和RTM正式版的差异
- Visual Studio 2008 LINQ to SQL 的Beta 2测试版和RTM正式版的差异
- Mybatis的OneToMany,ManyToOne和解决N+1查询问题
- N皇后问题的解决
- N 次跳票后,Fedora 27 正式版终于发布了
- 在代码中修改textview的字体颜色(解决只能修改一次的问题)
- ExecuteNonQuery()返回受影响行数不适用select语句
- 查找算法之二分查找
- 基于Linux的Socket编程之TCP全双工Server-Client聊天程序
- ios中关于获取当前时间和截止时间的时间差
- aop 实现方法计时 日志
- 解决发布测试版和正式版修改N多代码的问题
- 那年,我开始编程
- 积性函数学习笔记
- 验证Xposed模块自身是否被启用
- CodeForces-716B. Complete the Word(模拟)
- 安卓APP版本更新及自动打开
- code review的看法
- 关于百度地图sdk,需要的sha1值
- 推荐系统开源软件列表汇总和点评