Android gradle 脚本配置<一>

AndroidStudiogradle脚本实用配置。

Project/settings.gradle Module列表配置

1
2
3
include ':app'
include ':zxing'
include ':Aliyunplayer:AlivcPlayer'

定义Project所包含的Module

自定义统一化配置

定义 config.gradle 配置文件

1
2
3
4
5
6
7
ext {
// Build Gradle Plugin
externalAndroidBuildGradlePlugin = 'com.android.tools.build:gradle:3.1.3'
// Android support Libraries
externalAndroidAppCompatV7 = 'com.android.support:appcompat-v7:27.1.0'
// ...
}

引入配置文件: Project/build.gradle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
buildscript {
repositories {
google()
jcenter()
maven { url "..." } // 自定义maven路径
}
// 引用配置文件
apply from: 'config.gradle'
dependencies {
classpath externalAndroidBuildGradlePlugin
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }
}
apply plugin: 'idea'
}
task wrapper(type: Wrapper) {
gradleVersion = '4.2.1'
}
task clean(type: Delete) {
delete rootProject.buildDir
}

app/build.gradle 单个Module配置

基本配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
apply plugin: 'com.android.application'
// com.android.application 表示是一个应用程序app
// apply plugin: 'com.android.library' 表示是一个 library
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.xxxxx"
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
// ...
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation project(':Aliyunplayer:AlivcPlayer')
implementation project(':zxing')
implementation externalAndroidAppCompatV7
implementation externalAndroidRecyclerView
}

多渠道Flavor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
android {
flavorDimensions "stage"
productFlavors {
dev {
dimension "stage"
minSdkVersion 25
versionNameSuffix "-dev"
applicationIdSuffix '.dev'
}
prod {
dimension "stage"
minSdkVersion 25
versionNameSuffix "-prod"
applicationIdSuffix '.prod'
resConfigs "zh-rCN", "xxhdpi"
// 限制只使用zh-rCN, xxxhdpi 资源文件
}
}
}

签名文件sign配置

1
2
3
4
5
6
7
8
9
10
android {
signingConfigs {
release {
keyAlias 'key_alias'
keyPassword 'pwd...'
storeFile file('/Users/ccfyyn/Documents/xy.keystore')
storePassword 'pwd...'
}
}
}

配置buildType

1
2
3
4
5
6
7
8
9
10
11
12
13
14
android {
buildTypes {
debug {
minifyEnabled false
multiDexEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// 引用上面配置的signingConfigs.release签名
signingConfig signingConfigs.release
}
release {
// ...
}
}
}

配置ndk

1
2
3
4
5
6
7
8
9
10
11
12
13
14
android {
defaultConfig {
applicationId "com.xxx.xxx"
minSdkVersion 16
targetSdkVersion 26
versionCode 2
versionName "1.0.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk {
abiFilters "armeabi-v7a"
}
}
}

配置sourceSets

1
2
3
4
5
6
7
8
9
android {
sourceSets.main {
jni.srcDirs = []
jniLibs.srcDir "src/main/libs"
// 添加其它源码目录...
main.java.srcDirs += '/android.dmg/AOSP/frameworks/base/services'
main.java.srcDirs += '/android.dmg/AOSP/frameworks/base/core'
}
}

引用第三方plugin

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
buildscript {
repositories {
google()
jcenter()
maven { url "..." } // 自定义maven路径
}
// 引用配置文件
apply from: 'config.gradle'
dependencies {
classpath externalAndroidBuildGradlePlugin
// 引用 com.tencent.bugly
classpath 'com.tencent.bugly:symtabfileuploader:latest.release'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }
flatDir { dirs 'src/main/libs' }
}
apply plugin: 'idea'
// 指定编译临时文件存放地址, buildDir和rootDir,是gradle中的内置变量
buildDir = new File(rootDir, "gradle-build/${path.replaceAll(':', '/')}")
}
task wrapper(type: Wrapper) {
gradleVersion = '4.2.1'
}
task clean(type: Delete) {
delete rootProject.buildDir
}

上面是在Project/build.gradle中进行配置,在Module/build.gradle中还需要进行引用。

1
2
3
4
5
6
7
apply plugin: 'bugly'
bugly {
appId = '...' // 注册时分配的App ID
appKey = '...' // 注册时分配的App Key
debug = true
}

使用aar文件

新建Module的时候,选择Import .jar/.aar Package,选择aar文件后会自动生成比如下面这样的一个gradle文件。

1
2
configurations.maybeCreate("default")
artifacts.add("default", file('AlivcPlayer-3.4.8.aar'))

更多

Gradle-Link