每个版本的build variant代表了你可以构建的每一个版本。虽然你未直接配置build variants,你可以通过配置build type和product flavor。

  比如,一个demo的product flavor可以声明不同的特性和设备需求,比如自定义源码,资源和最小的API。但是debug的build type却有不同构建和打包设置,比如调试选项和签名文件。

  配置Build Types

  你可以在模块的build.gradle文件里的Android{}区块中来创建和配置构建类型。当你创建一个新的模块的时候,Android Studio自动为你创建debug和release。虽然debug构建类型不出现在构建配置文件中,Android Studio通过debuggable true来配置。这会允许你在一个安全的Android设备中调试app,并且使用一个通用的debug的keystore对APK进行签名。

  如果你想添加或更高确定的设置,你可以添加debug构建类型到你的配置中。接下来的例子声明为debug构建类型声明了一个applicationIdSuffix。并且配置一个jnidebug构建类型,设置其根据debug构建类型进行初始化。

Java代码
  1. android {  
  2.     ...  
  3.     defaultConfig {...}  
  4.     buildTypes {  
  5.         release {  
  6.             minifyEnabled true  
  7.             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  
  8.         }  
  9.   
  10.         debug {  
  11.             applicationIdSuffix ".debug"  
  12.         }  
  13.   
  14.         /** 
  15.          * The 'initWith' property allows you to copy configurations from other build types, 
  16.          * so you don't have to configure one from the beginning. You can then configure 
  17.          * just the settings you want to change. The following line initializes 
  18.          * 'jnidebug' using the debug build type, and changes only the 
  19.          * applicationIdSuffix and versionNameSuffix settings. 
  20.          */  
  21.   
  22.         jnidebug {  
  23.   
  24.             // This copies the debuggable attribute and debug signing configurations.  
  25.             initWith debug  
  26.   
  27.             applicationIdSuffix ".jnidebug"  
  28.             jniDebuggable true  
  29.         }  
  30.     }  
  31. }  

  配置Product Flavor

  创建product flavor跟创建构建类型相同:将其添加到productFlavors{}区块中,并且配置你需要的设置。Product flavors支持defaultConfit,这是因为defaultConfig属于ProfuctFlavor类。这就意味着你可以为所有的Flavors在defaultConfig{}提供基本的配置。每个flavor可以复写任何这些默认值。比如applicationId。

  注意:你仍然需要在manifest文件中的package属性中来声明包名。

  以下是一个代码示例,创建一个demo和full的product flavor,并设置了他们自己的applicationId和versionName。

Java代码
  1. android {  
  2.     ...  
  3.     defaultConfig {...}  
  4.     buildTypes {...}  
  5.     productFlavors {  
  6.         demo {  
  7.             applicationId "com.example.myapp.demo"  
  8.             versionName "1.0-demo"  
  9.         }  
  10.         full {  
  11.             applicationId "com.example.myapp.full"  
  12.             versionName "1.0-full"  
  13.         }  
  14.     }  
  15. }  

  在你创建和配置你的product flavor之后,点击消息提示条中出现的Sync Now按钮。在同步完成后,Gradle根据你的构建类型和product flavor自动创建build variants,并且用<product-flavor>。比如,如果你创建demo和full两个product flavor,并且保持debug和release为默认,Gradle则会创建以下build variants:

  1、 demoDebug

  2、 demoRelease

  3、 fullDebug

  4、 fullRelease

  为Build Variants创建Source Sets

  默认情况下,Android Studio创建main/ source set和目录在所有的build variants中共享。然而,你可以创建新的source sets来控制Gradle编译和特定的build types,product flavors和build variants。例如,你可以在main/ source set中定义基本的功能,使用product flavor source sets来改变你的app的东西,包括权限和日志等。

  Gradle希望你通过确定的方式来组织source set文件和目录。

  Android的Gradle插件提供了一个非常有用的Gradle 任务来显示你如何为乜咯build type,product flavor和build variants来组织你的文件。比如,以下的报告部分描述了Gradle希望找到debug 的build type的特定的文件:

Java代码
  1. ------------------------------------------------------------  
  2. Project :app  
  3.   
  4.   
  5.   
  6.   
  7. debug  
  8.   
  9. Compile configuration: compile  
  10. build.gradle name: android.sourceSets.debug  
  11. Java sources: [app/src/debug/java]  
  12. Manifest file: app/src/debug/AndroidManifest.xml  
  13. Android resources: [app/src/debug/res]  
  14. Assets: [app/src/debug/assets]  
  15. AIDL sources: [app/src/debug/aidl]  
  16. RenderScript sources: [app/src/debug/rs]  
  17. JNI sources: [app/src/debug/jni]  
  18. JNI libraries: [app/src/debug/jniLibs]  
  19. Java-style resources: [app/src/debug/resources]  

  为了生成和查看你的构建配置的报告,遵循如下:

  1、 点击右面的IDE窗口

  2、 找到MyApplication > Tasks > android,双击sourceSets

  3、 查看报告,点击IDE窗口底部的Gradle Console

  当你创建一个新的build variant,Android Studio不会为你创建一个source set 目录,但是会给你一些选项来帮助你。比如,为你的debug构建类型创建java/目录:

  1、 打开项目面板,选择Project视图

  2、 找到MyProject/app/src

  3、 右键单击src目录,选择New > Folder > Java Folder

  4、 在下拉中找到Target Source Set,选择debug

  5、 点击Finish

  Android Studio为你的debug构建类型创建一个source set目录,然后创建一个java/目录到里面。你同样可以让Android Studio为特定的build variant创建的新的文件来创建相应的目录。比如,为你的debug构建类型创建一个values XML文件:

  1、 在Project面板中,右键单击src目录,选择New > XML > Values XML File

  2、 输入XML文件名字,或者保持默认。

  3、 在下拉中找到Target Source Set,选择debug

  4、 点击Finish

  因为debug构建类型是针对特定的source set,Android Studio在创建XML文件时自动创建必要的目录。如图:

Android Studio(十七):配置你的Build Variant

本文发布:Android开发网
本文地址:http://www.jizhuomi.com/android/environment/666.html
2017年3月27日
发布:鸡啄米 分类:Android开发环境 浏览: 评论:0