android修改渠道,Android 多渠道定制化打包
这里要用到 productFlavors ,productFlavors 可以用来自定义应用构建版本
1.区分渠道,使用对应的包名
在 build.gradle文件中 android 目录下添加 以下代码即可
productFlavors {
//默认,不设置 applicationId ,继承 defaultConfig 中的配置
flavors_default {
}
//开发版本, applicationId 替换为 com.xxx.dev
flavors_dev {
applicationId "com.xxx.dev"
}
//发布版本, applicationId 替换为 com.xxx.release
flavors_release {
applicationId "com.xxx.release"
}
}
2.区分渠道,使用对应 App名称,应用图标,常量 ,图片资源等
替换 AndroidManifest.xml 中的属性
该方案通过在 AndroidManifest.xml 文件中 application 标签下指定 设置占位符来实现动态替换属性值。
在 build.gradle文件中
注:此方式可以能会引起异常如下
Error:Execution failed for task ':app:processDebugManifest'.
>Manifest merger failed with multiple errors, see logs
此问题产生原因大概有三个:
1.清单文件有错,这种错不会在编译时指出来,当然as中还是可以看到的
2.引入的三方包存在相同的label icon 等名字
解决:清单文件用tools
然后添加 replace字段
如 tools:replace="icon,label" 即可
替换 资源文件 drawable,String,assets目录下的文件等
在 main 的同级目录下创建以渠道名命名的文件夹,然后创建资源文件(路径要与 main 中的一致),然后打包的时候 gradle 就会自己替换或者合并资源。
例如, App 的默认 icon 路径为 main\res\mipmap-hdpi\ic_launcher.png ,那么 flavors_dev的路径就为 flavors_dev\res\mipmap-hdpi\ic_launcher.png ,打包 flavors_dev 渠道的时候会自动替换图片。同理assets中文件如下:
区分渠道,动态修改指定的常量
使用 BuildConfig 的变量
当我们定义如下字段之后,编译后自动生成文件,在 app/build/source/BuildConfig/dev/com.xxx.dev/BuildConfig 目录,
打开这个文件,我们就能看到我们所定义的字段了。
1.设置字段 使用 buildConfigField
设置好后编译一下,咦,什么鬼,怎么出错了?
明明设置的字符串怎么会这样,好了这是我们需要注意的地方,设置值需要这样写
它的意思是 "default" 这个整体是属于一个字符串,然后在编译一下
恩,ok
2.使用字段
3.使用Gradle命令打包
常用命令 看这里
gradlew assembleDebug
打包所有渠道的 debug 版本
gradlew assembleRelease
打包所有渠道的 release 版本
gradlew assembleflavors_devRelease
单独打包 flavors_dev 的 release 版本
gradlew assembleflavors_devDebug
单独打包 flavors_dev 的 Debug 版本
android修改渠道,Android 多渠道定制化打包相关推荐
- [置顶]Gradle 实现 Android 多渠道定制化打包
Gradle 实现 Android 多渠道定制化打包 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在项目中遇到需要实现 Apk 多渠道.定制化打包, Google .百度查找了一些资料, ...
- Gradle 实现 Android 多渠道定制化打包
最近在项目中遇到需要实现 Apk 多渠道.定制化打包, 查找了一些资料,成功实现了上述功能,在此记录以备不时之需,温故而知新,可以为师矣~ 需求可以总结如下:  如何实现多个 Apk 安装在同一设备 ...
- SpringBoot使用assembly进行项目定制化打包
SpringBoot使用assembly进行项目定制化打包 一.项目配置 1.添加插件 (1)编辑项目的 pom.xml 文件,加入 assembly 打包插件: <build><p ...
- Android修改高度,android – 如何在运行时更改软键盘的高度?
原始解决方案发布在 https://stackoverflow.com/a/9695482/1241783但它没有解释所以在这里我延伸了一点. 1)创建一个扩展Keyboard类的新类,该类覆盖get ...
- android修改猎豹浏览器,Android 反编译:揭秘猎豹设置默认浏览器逻辑
设置默认浏览器是浏览器类软件的基本功能之一,通过设置默认浏览器,提高用户主动打开自家产品的机会.但是由于国内不同Rom差异很大,想要把这个功能做好,却也不易.本文主要分享,如何通过竞品分析的角度,解决 ...
- android 获取渠道,Android 获取渠道名称
直接看代码, //获取渠道名称public static String getChannelName(Activity ctx) { if (ctx == null) { return null; } ...
- Maven定制化打包后的包名(加入时间戳)
在对应的pom文件中加入配置 设置时间戳格式 <properties> <maven.build.timestamp.format>yyyy-MM-dd_HH_mm</m ...
- android修改 apn_什么是APN,以及如何在Android手机上进行更改?
android修改 apn Android gives users a whole lot of customization options, some of which are useful for ...
- SpringBoot--->>>web-->>定制化原理
原理分析 在SpringBoot中,通过之前的web开发原理的探究,会发现,SpringBoot底层总能自己根据场景跑起来.流程是:导入场景 -> 对应的AutoConfiguration就会启 ...
- android打包工具多渠道批量打包,Android 快速渠道批量打包详解教程-美团多渠道打包方案...
今天写一篇文章来总结下android批量打渠道包美团版本.之前项目上一直用的是gradle 批量打包方式,那个速度啊真是令人发指,15个渠道得跑上半个小时,出去吃顿饭回来,还在跑.特别是赶上项目上线的 ...
最新文章
- PMCAFF微课堂|简书大咖彭小六:6年PM是如何利用阅读进行职场提升
- ValidateUtil
- 高鸿股份与鸿蒙,高鸿股份(000851)个股分析_牛叉诊股_同花顺财经
- Java魔法类:Unsafe应用解析
- Linux笔记-bash中执行命令并将执行的命令结果存储为变量
- ASP.NET MVC路由扩展:路由映射
- MySQL 数据库插入速度调整
- 一组关于女生的秘密数据!
- 页面静态化3 --- 伪静态技术
- visio阵列_什么软件可以画这种图,Visio怎么画?
- SuperMap iDesktop / iDesktopX 加载大疆智图(DJI Terra)导出的OSGB数据效果异常的绕行方案
- js+html+css筋斗云导航栏
- 周 7 福利日:中奖名单公布
- 《MySQL DBA:SSL连接》
- vps虚拟服务器主机,vps虚拟服务器主机
- 2017年华为实习面试心得
- 认识数字影片版本(CAM、TS、TC、DVD、HD、BD、TVRIP等)
- splite()方法的使用
- 英语读书笔记-Book Lovers Day 07
- AirPods过河,苹果拆桥:被“钞能力”征服的Beats何以至此?