zoukankan      html  css  js  c++  java
  • Android开发:《Gradle Recipes for Android》阅读笔记(翻译)3.2——设置Flavors和Variants

    问题:

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

    解决方案:

    产品的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。

  • 相关阅读:
    计算机网络基础 汇总
    指针与数组
    卡特兰数
    Leetcode Sort Colors
    Leetcode Group Shifted Strings
    Leetcode Summary Ranges
    Leetcode Count Primes
    Leetcode Reverse Words in a String II
    Leetcode Reverse Words in a String
    Leetcode Rotate Array
  • 原文地址:https://www.cnblogs.com/tootwo2/p/6390280.html
Copyright © 2011-2022 走看看