博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发:《Gradle Recipes for Android》阅读笔记(翻译)3.2——设置Flavors和Variants...
阅读量:4514 次
发布时间:2019-06-08

本文共 1875 字,大约阅读时间需要 6 分钟。

问题:

需要构建大体上一样,但是使用不同资源或者类的应用。

解决方案:

产品的flavors可以帮助你对同一个app创建不同的版本。

讨论:

build types是开发过程的一部分,一般用来将app从开发版进化到生产版。默认的build types:debug和release反应了这个。

Flavors让你能够构建同一个app的不同版本。当你想对不同版本的app自定义不同的外观,或者你需要一个免费版和收费版的app,你可以使用Flavors。

可以使用productFlavors块来声明product的flavor。

考虑下这样的场景,设置一个基于简单edittext入口的“helloworld”风格的欢迎界面。你给app设置不同的flavors:“friendly”,“arrogant”,“obsequious”:

android {    productFlavors {         arrogant {              applicationId 'com.oreilly.helloworld.arrg'         }          friendly {             applicationId 'com.oreilly.helloworld.frnd'         }         obsequious {             applicationId 'com.oreilly.helloworld.obsq'         }     }}

每个都有不同的applicationId,这样三个都可以安装在同一个设备上面。

注:flavor的名字不可以和已经存在build type的名字或者预定义的androidTest相同。

每个产品的flavor都有下列属于自己的属性,其中,都是基于defaultConfig中相同的属性:

applicationId

minSdkVersion

targetSdkVersion

versionCode

versionName

signingConfig

每个flavor定义自己的代码设置和资源,它们是主目录的同级代码。意味着,除了app/src/main/java文件夹外,你可以把代码放在以下的目录:

app/src/arrogant/java

app/src/friendly/java

app/src/obsequious/java

你也可以增加额外的资源文件在:

app/src/arrogant/res

app/src/arrogant/res/layout

app/src/arrogant/res/values

同样的资源结构会被应用到所有flavors,如:

相似的文件结构。一个build type和一个flavor的组合被称作variant。对于默认的两个build types(debug和release)和上面展示的三个flavors(arrogant,friendly和obsequious),6种不同变体(variant)的apk可以被生成。

为了看到所有可能的变体名,可以在module的build文件中增加自定义任务:

task printVariantNames() {    doLast {        android.applicationVariants.all { variant ->            println variant.name        }     }}

在命令行下执行./gradlew printVariantNames

为了部署一个指定的变体,android sudio提供了一个build variant的视图。可以在下拉列表中选择合适的变体:

  

product flavors使用后,assemble任务会构建所有可能的变体。assemble<variant>任务会构建指定的build type和flavor。你也可以使用assemble<BuildType>构建这个build type下所有的flavors,或者使用assemble<Flavor>任务构建这个flavor下所有的build type。install任务被分配到每个变体,如installArrogantDebug或者installFriendlyRelease。

转载于:https://www.cnblogs.com/tootwo2/p/6390280.html

你可能感兴趣的文章
json转换成Map
查看>>
MySQL查看当前用户、存储引擎、日志
查看>>
tpcc-mysql 系列二:进行TPCC测试
查看>>
将16进制的颜色值变成UIColor
查看>>
[转]magento 2 modes – 每种模式的特点及如何切换(翻译)
查看>>
求n的阶乘【VB代码实现】
查看>>
VSCode(Visual Studio Code) 自用插件
查看>>
NOIp2016纪录[那些我所追求的]
查看>>
(VB)定时更换(IE)代理IP(代理轮换)
查看>>
Node.js HTTP Server对象及GET、POST请求
查看>>
LintCode Coins in a Line
查看>>
[题解]POJ 3207 Ikki's Story IV - Panda's Trick
查看>>
Translate Animation
查看>>
MyEclipse使用反向工程
查看>>
获取当前页面url信息
查看>>
Java容器类源码分析前言之集合框架结构(基于JDK8)
查看>>
linux下C/C++程序的内存布局
查看>>
单词计数问题
查看>>
php 魔术方法 __autoload()
查看>>
js div拖动动画运行轨迹效果
查看>>