Android 中的Gradle

翻译自stackoverflow
转载请注明

一个最基本的build.gradle 文件

这是一个默认的一个模块的build.gradle

apply plugin: 'com.android.application'

android {
    signingConfigs {
        applicationName {
            keyAlias 'applicationName'
            keyPassword 'password'
            storeFile file('../key/applicationName.jks')
            storePassword 'anotherPassword'
        }
    }
    compileSdkVersion 24
    buildToolsVersion '24.0.1'

    defaultConfig {
        applicationId 'com.company.applicationName'
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName '1.0'
        signingConfig signingConfigs.applicationName
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile 'com.android.support:appcompat-v7:24.1.1'
    compile 'com.android.support:design:24.1.1'

    testCompile 'junit:junit:4.12'
}

DSL(domain-specific language)

在这个文件里的每一个块成为一个DSL

Plugins

第一行,apply plugin: 'com.android.application' 应用安卓插件G绕到了去构建项目,使得android {}可以去指定安卓构建选项

android {…}

这个模块是也是一个安卓DSL,这个DSL包含了你的项目的信息。它的子模块defaultConfig,持有了你的清单文件的默认值。你可以稍后重写它。

Dependencies

这个dependencies 指定了你的应用里想引入哪些外部的库(通常是Android库,当然了Java库也可以,比如说Gson)。Gradle会自动下载这些依赖,你只需要加上compile 当你想使用别的库。例子

`compile ‘com.android.support:design:24.1.1’

`
这一行就好像在说“给我的安卓应用加上设计支持库”。Gradle会保证这个库下载,并且可以使用。它的代码也会引入到你的app里。
如果一熟悉Maven,Maven的语法是 GroupId:ArtifactId:版本号,可以让你完全控制享用那个版本。

当然你也可以指定artifact的版本通过使用+号,但现实是最好不要这样做,因为有可能库会会更新,有些更新你可能还不知道,这就会导致问题。

注意:v7是appcompat-v7

compile 'com.android.support:appcompat-v7:24.1.1

最简单的意思就是这个库(Appcompat)在Api7以后才行。

指定不同构建方式的依赖

你可以指定一个依赖,这个依赖只能在特定的构建方式下才能用(比如debug,test或者release)。可以通过使用debugCompile, testCompile or releaseCompile而不是通用的compile

这个可以保证你的app尽可能的小,并且任何debug的信息都不能被用作去获得你app的核心信息。

签名配置

signingConfig 允许你为Gradle配置包含keystore的信息,保证在构建应用的时候会使用这些配置,然后正确的签名。

注意:不推荐在你的Gradle文件里写签名的配置。

在你的签名配置中你可以指定:
- storeFile:keystore文件
- storePassword:keystore的密码
- keyAlias:key 的别名
- keyPassword:key别名的密码

可以定义signingConfigs 块去 配置

android {
    signingConfigs {

        myConfig {
            storeFile file("myFile.keystore")
            storePassword "myPasswork"
            keyAlias "aKeyAlias"
            keyPassword "myAliasPassword"
        }
    }
    //....
}

附录:通过示例代码深入理解Dsl

/**
 * 不说了,上面有
 */

apply plugin: 'com.android.application'

/**
 * 在android {} block 里去配置所有构建的选项。
 */

android {

  /**

   * compileSdkVersion 之情了Gradle需要使用的API版本去编译你的app,这意味着你的app可以使用Api版本以及以下的功能。
   *
   * buildToolsVersion 指定了SDK build tools的版本,命令行工具以及Gradle将会使用的编译器。你需要通过SKD Manager去下载build tools
   */

  compileSdkVersion 23
  buildToolsVersion "23.0.3"

  /**
   * 在defaultConfig {} 里包含了默认的设置和所有构建变量的实体,可以动态的重写清单文件的一些属性。,你可以为了你的不同版本去配置product flavor去重写这些值。
   */

  defaultConfig {

    /**
     * 应用唯一的id,在打包和发布时候会用到。你的代码应该是定义在清单文件中的包名

     */

    applicationId 'com.example.myapp'

    // 最小的版本.
    minSdkVersion 14

    // 测试版本
    targetSdkVersion 23

    // 版本号
    versionCode 1

    // 用户看到的版本号
    versionName "1.0"
  }

  /**
   * 在 buildTypes {} 这里你可以配置多个build type。默认的,构建系统定义了两种模式:debug和release。debug迷失不是显示的展示默认的构建参数,但包含了debugging工具和debug key。release版本应用Proguard 设置,默认没有被签名
   */

  buildTypes {

    /**
     * 默认的, Android Studio 配置的是release,确保代码的压缩,使用minifyEnabled,之情proguard设置文件
     */

    release {
        minifyEnabled true // 确保代码的压缩
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }

  /**
   * 在 productFlavors {} 模块 你可以配置多个productFlavors ,这个允许你可以创建不同版本的app,这些app可以分别重写 各自的defaultConfig {}。productFlavors 是可选项,编译系统不会默认的去创建他们,下面的例子创建了一个free and paid flavor。每一个 profuct flavor之情了各自的application Id,所以他们都能存在在Google Play 商店、安卓设备上。
   */

  productFlavors {
    free {
      applicationId 'com.example.myapp.free'
    }

    paid {
      applicationId 'com.example.myapp.paid'
    }
  }
}

/**
 * dependencies {} 在module层的配置只指定了这个模块所需要的依赖
 */

dependencies {
    compile project(":lib")
    compile 'com.android.support:appcompat-v7:24.1.0'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值