一、前言
什么是多渠道打包以及多渠道打包可以做什么,这里就不做介绍了,相信看到这篇文章的你已经了解了,多渠道打包的方式比较多,这里我们用Gradle多渠道打包方式。
和其他文章有什么不同
网上看到的大多数文章都只讲解了
1.如何修改包名
2.如何修改变量的值
3.如何替换string中的资源
4.如何替换AndroidManifest中的资源
本篇文章会在上述知识点上增加
5.不同渠道如何使用不同的java文件
6.Base模块化中如何使用多渠道
新建项目,在app下build.gradle中android下添加如下代码:
productFlavors{ baidu{ applicationId "com.baidu" buildConfigField "String","BaseApi",'"http://baidu.com"' resValue "string","tip",'"hello this is form baidu"' manifestPlaceholders = [ app_name:"百度APP" ] } sougou{ applicationId "com.sougou" buildConfigField "String","BaseApi",'"http://sougou.com"' resValue "string","tip",'"hello this is form sugou"' manifestPlaceholders = [ app_name: "搜狗APP" ] } }
这里我们定义两个渠道,一个渠道名称是baidu,一个渠道名称是sougou,通过applicationId直接指定应用包名
不同渠道我们使用的请求地址不同,字段是BaseApi,我们可以通过buildConfigField指定BaseApi中的值,通过buildConfigField
指定的值,我们可以在系统生成的BuildConfig中获取,比如我们获取多渠道中定义的BaseApi:
String baseApi = BuildConfig.BaseApi;
我们来看下BuildConfig中的内容
BaseApi是我们自己定义的,其他的都是默认生成的,这里我们可以看到,应用包名也是我们指定的。
resValue我们可以修改变量的值,这个值会生成在string.xml中,比如上面我们定义了一个tip变量,需要注意的是,这个变量不能出现在string.xml中,否则会提示资源重复。
如果要定义在配置文件中使用的值,则需要使用
manifestPlaceholders
我们分别修改app_name的值,在配置文件中使用占位符${} 使用,如下:
android:label="${app_name}"
接下来,我们将tip的值和BaseApi显示在TextView上,分别运行app的baidu渠道版本和sougou渠道版本
baidu渠道运行如下:
sougou渠道运行如下:
从运行结果我们可以看出来,已经达到我们想要的结果了。
如何使用不同的app图标
那么如何修改不同渠道的app图标呢,当然我们可以在manifestPlaceholders中添加图标资源的占位符,但是我们这里使用另一种方法,
有时候我们不仅要替换图标,可能要替换raw下的资源或者assets下的资源,这种情况下我们就需要
使用下面的方式:
在src目录下新建与main同级且与渠道名称一样的文件包名,并且新建res资源目录,放入图标使用的图片资源,必须要与main中的名称相同才可以覆盖,如图所示:
并且在gradle中设置sourceSet
sourceSets{ baidu{ res.srcDirs = ['src/baidu/res','src/baidu/res'] } sougou{ res.srcDirs = ['src/sougou/res','src/sougou/res'] } }
我们通过res.srcDirs就指定了不同渠道使用的资源文件,这里从网上随便找了两张截图作为图标(如有侵权,联系删除)
运行两个app,结果显示如下:
moudle中如何配置多渠道
在实际的开发中,我们可能会有一个base模块,不同渠道base模块中引用的资源也不同,我们该如何配置呢?
我们新建basemoudle模块,app依赖basemodule模块
同样,我们在模块的gradl下 配置如下:
productFlavors { baidu { buildConfigField "String", "BaseMoudeDesc", '"这是base模块百度的描述"' resValue "string", "basetip", '"i come form base_baidu"' } sougou { buildConfigField "String", "BaseMoudeDesc", '"这是base模块搜狗的描述"' resValue "string", "basetip", '"i come form base_baidu"' } }
因为我们的base模块也有两个渠道,所以app在依赖的时候,必须分渠道去依赖
baiduCompile project(path:':basemodule',configuration:'baiduRelease') sougouCompile project(path: ':basemodule',configuration:'sougouRelease')
我们直接编译会出现上面的问题,因为module模块可能没有生成对应的编译资源,因为android的默认编译是debug类型的,所以为了和app主模块同步,我们设置去掉默认的发布类型,需要在module中的gradle中添加:
publishNonDefault true
变量的使用和上面app的使用方式一样,在这里就不展示了。
不同渠道如何使用不同java文件
同不同渠道使用资源文件一样,不过需要注意的是,main文件中就不能存放要替换的java文件了,否则会报资源重复的错误,同样的我们在base模块分别新建baidu和sougou渠道包,并且分别新建MainActivity,如图所示。
设置java资源目录
sourceSets { baidu { res.srcDirs = ['src/baidu/res', 'src/baidu/res'] java.srcDirs = ['src/baidu/java','src/baidu/java'] } sougou { res.srcDirs = ['src/sougou/res', 'src/sougou/res'] java.srcDirs = ['src/sougou/java','src/sougou/java'] } }
为了展示两个页面的不同,我们将百度渠道的页面背景设为粉红色,搜狗渠道的页面背景设置蓝色,在app添加按钮并添加监听事件,打开module中的主页面。
运行效果如下所示:
到这里,常用的多渠道打包需要的配置就结束了,如有错误欢迎指正。
总结
到此这篇关于Android Gradle多渠道打包的文章就介绍到这了,更多相关Android Gradle多渠道打包内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
国内Android应用下载有360、小米、豌豆荚、百度等等非常多的渠道, 如果我们想统计每个渠道的下载量和活跃度,就需要使用统计平台. 我们以友盟统计为例,介绍如何配置渠道信息并执行自动化打包. 1.在AndroidMainfest.xml配置可动态替换的渠道参数 友盟集成文档中有说明,使用友盟统计需要在AndroidMainfest.xml配置相应的渠道号: <meta-data andro
我们在日常开发中多多少少都会遇到多渠道打包的情况。这些版本可能会上传到不同的应用市场,也可能是是线下多渠道推荐。有时候可能不同的渠道使用的资源图片都不一样。古老的做法就是,需要打多少个渠道包拉出多少份代码分支,分别替换对应的资源文件和包名配置信息等。这种做法非常的耗时耗力。Gradle 可以帮我们用一份代码通过配置实现打出所有的渠道包。 1. 创建多渠道资源文件目录 首先,我们新创建一个工程,然后
本文向大家介绍Android多渠道打包时获取当前渠道的方法,包括了Android多渠道打包时获取当前渠道的方法的使用技巧和注意事项,需要的朋友参考一下 作为Android app,发布多个分发平台是常规操作。然后,有时由于个渠道面对的用户不同,或平台审核标准不同,需要在各渠道使用不同的业务逻辑,这就需要根据渠道使用选择差异化代码。 这里把简单的代码记一下。 首先,分渠道打包很简单。 在项目的bui
本文向大家介绍Android Studio中一套代码多渠道打包的实现方法,包括了Android Studio中一套代码多渠道打包的实现方法的使用技巧和注意事项,需要的朋友参考一下 一套代码达到以下效果: 打包不同applicationId能同时安装在同一手机上 不同logo,app名称, 不同第三方SDK接入配置(例如微信分享appid,激光推送appkey) 能区分debug和release配置
本文向大家介绍Android Studio多渠道打包的配置方法,包括了Android Studio多渠道打包的配置方法的使用技巧和注意事项,需要的朋友参考一下 说到多渠道,这里不得不提一下友盟统计,友盟统计是大家日常开发中常用的渠道统计工具,而我们的打包方法就是基于友盟统计实施的。按照友盟官方文档说明,渠道信息通常需要在AndroidManifest.xml中配置如下值: 上面的value值Cha
本文向大家介绍Android Studio多渠道打包套路,包括了Android Studio多渠道打包套路的使用技巧和注意事项,需要的朋友参考一下 说到多渠道,这里不得不提一下友盟统计,友盟统计是大家日常开发中常用的渠道统计工具,而我们的打包方法就是基于友盟统计实施的。按照友盟官方文档说明,渠道信息通常需要在AndroidManifest.xml中配置如下值: 上面的v
本文向大家介绍Android Studio使用教程(六):Gradle多渠道打包,包括了Android Studio使用教程(六):Gradle多渠道打包的使用技巧和注意事项,需要的朋友参考一下 由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这再也不是事了。 友盟多渠道打包 废话不
本文向大家介绍Android 7.0中新签名对多渠道打包的影响详解,包括了Android 7.0中新签名对多渠道打包的影响详解的使用技巧和注意事项,需要的朋友参考一下 老签名多渠道打包原理 前言 由于Android7.0发布了新的签名机制,加强了签名的加固,导致在新的签名机制下无法通过美团式的方式再继续打多渠道包了。不过在说新的签名机制对打包方案的 影响和为什么会影响我们原有的打包机制之前,需要先