一、Android 编译系统的工作原理
- 编译器将您的源代码转换成 DEX 文件,并将其他所有内容转换成编译的资源。
- APK 打包器将 DEX 文件和编译的资源组合成单个 APK。
- APK 打包器使用调试或发布密钥库为 APK 签名。
二、编译配置文件
2.1 settings.gradle
include ':app'
rootProject.name='My Application'
位于项目根目录,用于指示 Gradle 在编译应用时应将哪些模块包含在内
2.2 顶级build.gradle
文件位于项目根目录
//buildscript为gradle本身配置存储库和依赖的语句块
buildscript {
ext.kotlin_version = '1.3.50'
repositories {
google()
jcenter()
maven {url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
// Android Plugin for Gradle,gradle的android插件
dependencies {
classpath 'com.android.tools.build:gradle:3.5.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
// 项目中所有模块使用的存储库和依赖
allprojects {
repositories {
google()
jcenter()
maven {url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
用于定义适用于项目中所有模块的编译配置。默认情况下,顶级编译文件使用
buildscript
代码块来定义项目中所有模块共用的代码库和依赖项
2.3 模块级build.gradle
文件位于每个project/module/
目录
//gradle 的android插件
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
// android 配置
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 15
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
//构建模块本身需要的依赖
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.core:core-ktx:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}
用于为其所在的特定模块配置编译设置
2.4 gradle.properties
org.gradle.jvmargs=-Xmx1536m
android.useAndroidX=true
android.enableJetifier=true
配置项目范围的 Gradle 设置,如 Gradle 守护进程的最大堆大小
2.5 local.properties
sdk.dir=/home/wy/Android/Sdk
配置编译系统的本地环境属性,如 SDK 安装路径