使用gradle的productFlavors实现Android项目多渠道打包
来源:互联网 发布:剑灵捏脸数据人男 编辑:程序博客网 时间:2024/06/03 18:45
productFlavors 用法
productFlavors顾名思义,就是用来分别定义产品不同的特性,使用它可以用一套代码创建不同的产品
就是用于定义产品的特性,这是每个产品不同的地方。有了它我们可以用同一套代码创建不同的产品。设置productFlavors的方法如下:
在build.gradle中加入productFlavors结构
在app(module)目录下的build.gradle文件中加入productFlavors结构:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
可以看到我们在android节点下建立了一个productFlavors节点,里面包含了两个产品,productA与productB就是产品名
在AndroidStudio左下角的Build Variants菜单中可以看到如下界面:
平时调试的时候可以在这里通过选择一个产品的Debug版本来调试
productFlavors的应用场景
不同包名的产品
通过为产品设置不同的applicationId就可以编译出不同包名的APK
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
不同渠道包的产品
由于国内引用市场较多,因此需要为不同市场打包相应的包,通常这种包就叫做渠道包,我们可以使用productFlavors配合manifestPlaceholders属性的方法来替换渠道值
宁波整形医院http://www.zuanno.com/
宁波最好的整形医院http://www.zuanno.com/
一般用渠道的统计无非是用友盟或者其它之类的,以友盟为例
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
或者
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
然后在AndroidManifest中使用:
不同依赖库的产品
productFlavors还支持自定义依赖,产品A只编译自己需要的依赖库,不需要编译对自己无用的依赖库
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
这里使用productFlavors里定义的产品名+Compile关键字来替代compile关键字
不同代码和资源的产品
gradle中有一个source set概念,不同产品可以设置不同的source set,通常src/main目录是ide自动帮我们创建的文件夹,因此我们可以在src目录下创建productA/productB这样的目录,目录名需要和productFlavors中定义的产品名对应
这样src/productA/java文件内可以放不同的代码,src/productA/res文件夹内可以放不同的资源文件,同时也可以定义不同的AndroidManifest文件,比如申请不同的权限之类
assemble命令实现多渠道打包
上面介绍了productFlavors,下面来介绍如何一次性编译打包多个渠道或产品
可以在Android Studio底部的terminal里输入命令
assemble命令介绍:
assemble 是和 Build Variants 一起结合使用的,而 Build Variants = Build Type(Debug/Release) + Product Flavor(如wandoujia)
使用实例:
- ./gradlew assembleDebug
编译并生成Debug包,包含productFlavors下所有定义的产品或渠道包 - ./gradlew assembleRelease
编译并生成Release包,包含productFlavors下所有定义的产品或渠道包 - ./gradlew assembleWandoujia
编译并生成Release和Debug包,仅生成productFlavors下定义的wandoujia渠道 - ./gradlew assembleWandoujiaRelease
编译并生成Release包,仅生成productFlavors下定义的wandoujia渠道
apk生成目录在rootProject/app/build/outputs/apk目录下
图形操作实现多渠道打包
如果不想用命令行方式也可以另外两种方式来统一打包apk
- Generate Signed APK方式
点击Android Studio上方工具栏 build ->Generate Signed APK…
然后多选要打包的渠道包,同时可以指定APK生成目录和指定BuildType - Gradle 工具方式
定位到图中的目录后选择则相应的命令即可
参考:
http://www.cnblogs.com/0616–ataozhijia/p/4203997.html
http://blog.csdn.net/crazyman2010/article/details/53471162
http://stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/
转自:http://blog.csdn.net/lj402159806/article/details/54947658
- 使用gradle的productFlavors实现Android项目多渠道打包
- 使用gradle的productFlavors实现Android项目多渠道打包
- 使用gradle的productFlavors实现Android项目多渠道打包
- 使用gradle的productFlavors实现Android项目多渠道打包
- Android 使用gradle的productFlavors实现多渠道打包
- [Android]配置Gradle的productFlavors构建项目用于多渠道打包或多环境运行
- Gradle App项目的多渠道打包实现
- Gradle Library项目的多渠道打包实现
- Android快速使用Gradle实现多渠道打包
- Android使用Gradle实现多渠道打包
- Android 使用 Gradle 多渠道打包
- Android 使用 Gradle 多渠道打包
- productFlavors 实现多渠道多版本打包调试
- 使用Android studio Gradle 实现友盟多渠道打包
- 使用Android studio Gradle 实现友盟多渠道打包
- 使用Android studio Gradle 实现友盟多渠道打包
- 使用Android studio Gradle 实现友盟多渠道打包
- 使用Android studio Gradle实现友盟多渠道打包
- 基于热电偶的温度测量系统
- WiFi已攻占世界 芯片原厂、模组方案商盘点
- 一个小程序不知道哪里出问题了,python
- 解决问题:Unable to compile class for JSP
- maven下载jar包速度慢(解决办法)
- 使用gradle的productFlavors实现Android项目多渠道打包
- RequireJS学习
- [知了堂学习笔记]_JS的DOM基本操作
- SpringBoot入门系列:第一篇 Hello World
- c# 将实体类集合转化为datetable格式案例
- Python——dict
- Scala知识点
- ORACLE 数据库升级步骤
- 有趣的代码注释