Android应用模块基本配置元素

2019-12-10  本文已影响0人  Fizzzzer

Android应用模块基本配置元素

/**
* 构建配置中的第一行
* 将Gradle的Android插件应用到这个构建中
* 并使Android块可用来指定Android特定的构建选项。
*/
apply plugin: 'com.android.application'

/**
 * 这是你配置所有Android特有块的地方
 * 构建选项
 */

android {

  /**
   * compileSdkVersion指定Gradle应该使用的Android API级别
   * 编译你的应用程序。这意味着你的应用程序可以使用包含的API特性
   */

  compileSdkVersion 28

  /**
   * buildToolsVersion指定SDK构建工具的命令行版本的工具个编译器
   * Gradle使用他们来构建你的应用程序
   * 您需要使用SDK管理器来下载构建工具
   * 此属性是可选的,因为插件默认使用推荐的构建工具版本
   */

  buildToolsVersion "29.0.0"

  /**
   * defaultConfig块封装了所有构建变体的默认设置和条目
   * 并且可以覆盖main/AndroidManifest中的一些属性
   * 从构建系统动态地生成xml
   * 您可以配置产品口味来覆盖应用程序不同版本的这些值。
   */

  defaultConfig {

    /**
     * applicationId惟一地标识要发布的包
     * 但是,您的源代码仍然应该引用主/AndroidManifest.xml文件中的package属性定义的包名。
     */

    applicationId 'com.example.myapp'

    // 定义你的app所能运行的最低级别API
    minSdkVersion 15

    // 指定测试应用的API级别
    targetSdkVersion 28

    // 指定你的应用APP的版本号
    versionCode 1

    // 指定你的应用的版本名字
    versionName "1.0"
  }

  /**
   * 你可以在buildTypes块中配置多个构建类型,默认情况下,
   * 系统定义了两个构建类型,debug和release
   * 在默认的情况下,debug的构建类型中是没有显示配置的
   * 但是他包含调试工具,使用默认的debug-key进行签名
   * build type应用了Proguard设置,默认情况下没有签名
   */

  buildTypes {

    /**
     * 默认情况下,Android Studio使用minifyEnabled配置发布构建类型来启用代码压缩,
     * 并指定Proguard设置文件。
     */

    release {
        minifyEnabled true // 为版本构建类型启用代码资源压缩,其实就是是否使用混淆
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }

  /**
   * 在productFlavors块中可以配置多个产品风味
   * 这允许你创建不同版本的应用程序
   * 用他们来覆盖defalutConfig块中的属性设置
   * 产品风味是可选的,系统默认不创建他们
   *
   * 这个示例创建了free和paid两个productFlavors
   * 每一个productFlavors都有他们自己特有的一个application ID
   * 所以他们可以同时存在于Google Play Store或者一个Android设备中
   * 
   * 如果你声明一个productFlavors,那么你就必须要声明口味维度(flavorDimension)
   * 并为每一个productFlavors分配一个flavorDimensions
   */
  flavorDimensions "tier"
  productFlavors {
    free {
      dimension "tier"
      applicationId 'com.example.myapp.free'
    }

    paid {
      dimension "tier"
      applicationId 'com.example.myapp.paid'
    }
  }

  /**
   * 在splits块中,你可以配置不同的apk构建
   * 每个只包含支持的屏幕密度或代码和资源ABI
   * 您还需要配置您的构建,以保证每一个APK都有一个自己不同的versionCode
   */
  splits {
    // 基于屏幕密度来构建多个apk
    density {

    // 启用或禁用构建多个apk
    enable false

    // 当构建多个apk的时候排除这些配置
    exclude "ldpi", "tvdpi", "xxxhdpi", "400dpi", "560dpi"
    }
  }
}

/**
 * 指定模块所需的依赖项
 */
dependencies {
    implementation project(":lib")
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}
上一篇 下一篇

猜你喜欢

热点阅读