这里要用到 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 多渠道定制化打包相关推荐

  1. [置顶]Gradle 实现 Android 多渠道定制化打包

    Gradle 实现 Android 多渠道定制化打包 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在项目中遇到需要实现 Apk 多渠道.定制化打包, Google .百度查找了一些资料, ...

  2. Gradle 实现 Android 多渠道定制化打包

    最近在项目中遇到需要实现 Apk 多渠道.定制化打包, 查找了一些资料,成功实现了上述功能,在此记录以备不时之需,温故而知新,可以为师矣~ 需求可以总结如下:  如何实现多个 Apk 安装在同一设备 ...

  3. SpringBoot使用assembly进行项目定制化打包

    SpringBoot使用assembly进行项目定制化打包 一.项目配置 1.添加插件 (1)编辑项目的 pom.xml 文件,加入 assembly 打包插件: <build><p ...

  4. Android修改高度,android – 如何在运行时更改软键盘的高度?

    原始解决方案发布在 https://stackoverflow.com/a/9695482/1241783但它没有解释所以在这里我延伸了一点. 1)创建一个扩展Keyboard类的新类,该类覆盖get ...

  5. android修改猎豹浏览器,Android 反编译:揭秘猎豹设置默认浏览器逻辑

    设置默认浏览器是浏览器类软件的基本功能之一,通过设置默认浏览器,提高用户主动打开自家产品的机会.但是由于国内不同Rom差异很大,想要把这个功能做好,却也不易.本文主要分享,如何通过竞品分析的角度,解决 ...

  6. android 获取渠道,Android 获取渠道名称

    直接看代码, //获取渠道名称public static String getChannelName(Activity ctx) { if (ctx == null) { return null; } ...

  7. Maven定制化打包后的包名(加入时间戳)

    在对应的pom文件中加入配置 设置时间戳格式 <properties> <maven.build.timestamp.format>yyyy-MM-dd_HH_mm</m ...

  8. android修改 apn_什么是APN,以及如何在Android手机上进行更改?

    android修改 apn Android gives users a whole lot of customization options, some of which are useful for ...

  9. SpringBoot--->>>web-->>定制化原理

    原理分析 在SpringBoot中,通过之前的web开发原理的探究,会发现,SpringBoot底层总能自己根据场景跑起来.流程是:导入场景 -> 对应的AutoConfiguration就会启 ...

  10. android打包工具多渠道批量打包,Android 快速渠道批量打包详解教程-美团多渠道打包方案...

    今天写一篇文章来总结下android批量打渠道包美团版本.之前项目上一直用的是gradle 批量打包方式,那个速度啊真是令人发指,15个渠道得跑上半个小时,出去吃顿饭回来,还在跑.特别是赶上项目上线的 ...

最新文章

  1. PMCAFF微课堂|简书大咖彭小六:6年PM是如何利用阅读进行职场提升
  2. ValidateUtil
  3. 高鸿股份与鸿蒙,高鸿股份(000851)个股分析_牛叉诊股_同花顺财经
  4. Java魔法类:Unsafe应用解析
  5. Linux笔记-bash中执行命令并将执行的命令结果存储为变量
  6. ASP.NET MVC路由扩展:路由映射
  7. MySQL 数据库插入速度调整
  8. 一组关于女生的秘密数据!
  9. 页面静态化3 --- 伪静态技术
  10. visio阵列_什么软件可以画这种图,Visio怎么画?
  11. SuperMap iDesktop / iDesktopX 加载大疆智图(DJI Terra)导出的OSGB数据效果异常的绕行方案
  12. js+html+css筋斗云导航栏
  13. 周 7 福利日:中奖名单公布
  14. 《MySQL DBA:SSL连接》
  15. vps虚拟服务器主机,vps虚拟服务器主机
  16. 2017年华为实习面试心得
  17. 认识数字影片版本(CAM、TS、TC、DVD、HD、BD、TVRIP等)
  18. splite()方法的使用
  19. 英语读书笔记-Book Lovers Day 07
  20. AirPods过河,苹果拆桥:被“钞能力”征服的Beats何以至此?

热门文章

  1. VLC接收RTP的H264流串流成OGGT向HTTP发送,可以直接用HTML5播放
  2. html 的smap标签,SMap.Label
  3. 客户贷款逾期预测[1]-逻辑回归模型
  4. CloudDrive — 将阿里云盘变成电脑本地磁盘,网盘挂载映射为本地磁盘!
  5. 5个最佳免费Linux杀毒软件
  6. html页面跳转闪屏,闪屏页.html
  7. 我所热爱的多触摸系统 bill buxton
  8. 谈谈对 JWT 理解
  9. ionic4--下拉刷新(refresher)
  10. 启动springboot项目APPLICATION FAILED TO START