Android Studio多渠道打包之productFlavors
2018-02-13 09:50
381 查看
一、 productFlavors简介
productFlavors顾名而思义,就是用于定义产品的特性,这是每个产品不同的地方。有了它我们可以用同一套代码创建不同的产品。由于不同渠道,对项目会进行一定的修改,比如图片、文字等。所以需要根据渠道来加载相应的资源文件和代码,以达到相应渠道个性定制的目的,同时不需要新建module。二、 productFlavors配置
1. 找到app项目下的build.gradle文件,2. 文件中添加配置productFlavors,注意要在android下添加,如图,添加bingoone和bingotwo两个渠道
3. 在命令行执行gradle build命令(前提是你的环境变量都配置好)
4. Gradle 命令可能执行失败,但是不要紧,主要去看你的app/build/outputs/apk下面是否生成你想要的渠道apk。若生成表示配置成功。
三、 根据渠道加载代码
1. 打开项目的工程目录,切换到Project视图,打开app/src目录,在此目录下新建两个与main目录同级且与productFlavors中的渠道名相同的文件夹,如下图所示:2. 参照main中为目录结构,在bingoone目录下添加java目录,res资源目录,以及AndroidManifest文件,可以直接复制main中的整个文件夹,再根据需要删除不需要的文件。如下图所示:
在java中新建一个BingooneActivity,在res/layout中添加布局文件,在AndroidManifest中注册BingooneActivity。为了便于标识,BingooneActivity只添加了一个TextView,text内容设置为“textView
”。
3. 在helloworld中重复上述步骤,保证此目录下的BingooneActivity的包名与productdemo中的BingooneActivity包名相同,如下图所示:
4.
5. 在main目录下的MainActivity中添加一个按钮,添加点击时跳转到BingooneActivity的点击事件。执行gradle build命令,会在app/build/output/apk目录下生成bingoone和bingotwo的apk包。
分别安装apk,点击Button,查看跳转的页面。就可以看到不同渠道的差异化
6. 在res目录下同样添加对应的mipmap文件夹,把需要设置的icon放到对应的目录下,保证icon图片的名字与main下的相同,这样渠道包在加载的时候会优先加载渠道目录下的资源文件,而bingoone渠道目录下没有添加icon文件,会默认加载main目录下的资源文件。
五.附加说明
1. 如果在主目录代码中用到渠道目录下的java文件,必须保证所有渠道目录下都有此java文件,并且包名相同,java文件的内容可以有差异。
2. 执行gradle buid会编译所有的渠道包,如果只想编译一个渠道的release包,可以执行gradle assemblexxxRelaese命令。
3. 在渠道目录中新建的Activity、Service等组件需要分别在每个渠道目录下的AndroidManifest中注册,也可以只在main目录下的AndroidManifest中注册。
4. 对于渠道包来说,它的AndroidManifest文件实际上是该渠道目录下的AndroidManifest和main目录下的AndroidManifest的总和,两个目录下的内容不能有重复。
同样的,渠道包的java代码也是项目代码和渠道目录下的java代码的总和,两个目录下的java文件不能存在包名相同的情况,也就是相同目录下不存在同名类。
完整代码已上传到github:点击打开链接
相关文章推荐
- android studio打包签名错误please select the product flavors to build and sign
- Android Studio 多渠道打包中针对不同渠道不同应用名称的处理方法
- [Android Studio] Android studio 多渠道打包(超简洁版)
- Android Studio系列教程六--Gradle多渠道打包
- Android Studio系列教程六--Gradle多渠道打包
- AS3.0多渠道打包解决Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.a
- [Android Studio 权威教程]打包、生成jks密钥、签名Apk、多渠道打包
- [Android Studio] Android studio 多渠道打包(超简洁版)
- Android Studio 多渠道打包、自动版本号及 gradlew 命令的基本使用
- 使用Android studio Gradle 实现友盟多渠道打包
- 【Android Studio】代码混淆与多渠道打包(二)
- Android studio 多渠道打包
- Android studio 1.0 多渠道打包
- Android studio 3.0上进行多渠道打包
- Android studio 多渠道打包
- Android Studio系列教程六--Gradle多渠道打包
- [Android Studio] Android studio 多渠道打包(超简洁版)
- android studio 使用友盟多渠道打包
- android studio 多渠道打包