首页 > 代码库 > gradle
gradle
摘自:https://segmentfault.com/a/1190000004229002
buildscript {
repositories {
jcenter()
}
dependencies {
classpath ‘com.android.tools.build:gradle:1.3.1‘
}
}
apply plugin: ‘com.android.application‘
android {
compileSdkVersion 23
buildToolsVersion "23.1.0"
}
buildscript { ... } 配置了用于驱动构建的代码。上述代码声明了项目使用 jCenter 仓库,并且声明了一个 jCenter 文件的 classpath。该文件声明了项目的 Android Gradle 插件版本为 1.3.1。
接着,使用了 com.android.application 插件。该插件用于编译 Android 应用
android { ... } 配置了所有 android 构建所需的参数,这也是 Android DSL 的入口点。默认情况下,只有compileSdkVersion 和 buildtoolsVersion 这两个属性是必须的。
android {
buildTypes {
debug {
applicationIdSuffix ".debug"
}
jnidebug {
initWith(buildTypes.debug)
packageNameSuffix ".jnidebug"
jnidebugBuild true
}
}
}
- 配置默认的 debug Build Type:
- 设置包名为
<app appliationId>.debug
,以便能够在同一个设备上安装 debug 和 release 版的 apk
- 设置包名为
- 创建了名为 jnidebug 的新 BuildType,并且以 debug 的配置作为默认配置。
- 继续配置 jnidebug,开启了 JNI 组件的 debug 功能,并添加了包名后缀。
android {
signingConfigs {
debug {
storeFile file("debug.keystore")
}
myConfig {
storeFile file("other.keystore")
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}
buildTypes {
foo {
signingConfig signingConfigs.myConfig
}
}
}
以上代码片段指定了 debug keystore 的路径在项目根目录下。其他使用了相同配置的 Build Types 亦会受影响,在该例子中为 debug Build Type。该代码片段同时还创建了新的 Signing Config 及使用该签名配置的Build Type。
dependencies {
compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
}
本地包依赖
- compile 编译主 moudle
- androidTestCompile 编译主 moudle 的测试
- debugCompile debug Build Type 的编译
- releaseCompile release Build Type 的编译
repositories {
jcenter()
}
dependencies {
compile ‘com.google.guava:guava:18.0‘
}
远程包依赖
Gradle 支持从 Maven 或 Ivy 仓库中拉取依赖文件。首先必须将仓库添加到列表中,然后必须在 dependencies 中添加 Maven 或 Ivy 声明的包。
include ‘:app‘, ‘:libraries:lib1‘, ‘:libraries:lib2‘
其中 setting.gradle
的内容非常简单。该文件定义了各 Gradle 项目的位置
productFlavors {
flavor1 {
...
}
flavor2 {
...
}
}
每一个 Build Type 都会生成新的 APK。Product Flavors 同样也会做这些事情:项目的输出将会组合所有的 Build Types 和 Product Flavors(如果有定义 Flavor)。每一种组合(包含 Build Type和 Product Flavor)就是一个 Build Variant(构建变种版本)。
android {
...
defaultConfig {
minSdkVersion 8
versionCode 10
}
productFlavors {
flavor1 {
packageName "com.example.flavor1"
versionCode 20
}
flavor2 {
packageName "com.example.flavor2"
minSdkVersion 14
}
}
}
ProductFlavor 类型的 android.productFlavors.* 对象与 android.defaultConfig 对象的类型是相同的。就是说着它们之间属性共享。
defaultConfig 为所有的 flavor 提供基本的配置,每个 flavor 都可以重写这些配置的值。
BuildConfig 包含的值如下:
- boolean DEBUG —— 当前构建是否开启了 debuggable
- int VERSION_CODE
- String VERSION_NAME
- String APPLICATION_ID
- String BUILD_TYPE —— build type 的名字,例:"release"
- String FLAVOR —— flavor 的名字,例:"paidapp"
gradle