- Gradle是什么,有什么用
编译、打包Android工程的一个构件工具 - Project与Module的关系
一个Project里面可以有多个Module
Module可以是app类型的,也可以是library类型的
Project中的 build.gradle
gradle 插件的使用版本
gradle版本
grade版本需要与gradle 插件版本匹配,不然很容易在这里出错
在这里可以查看两者的版本匹配关系
https://developer.android.google.cn/studio/releases/gradle-plugin.html#updating-gradle
APP中的gradle
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
application "com.example.myapplication"
minSdkVersion 19
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJunitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'
}
}
compileOptions {
//java的SDK的版本
sourceCompatibility JavaVersion.Version_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dependencies {
//编译依赖库
}
}
compileSdkVersion、minSdkVersion、targetSdkVersion、buildToolsVersion之间的区别
- compilesSdkVersion是编译代码所使用的sdk版本,并且与sdk manager里面下载的那些sdk platforms是对应的,也就是说, compilesSdkVersion使用的版本,在sdk manager里面必须是已经下载了才能用,最新的as做了优化,及时你没有下载,当写上某个版本后,as会自动帮你下载
- minSdkVersion是对app可运行的手机设备的最小版本限制,与sdk manager里面下载的东西无关,只是一个标识而已
- targetSdkVersion 是对app要运行的手机设备的目标版本的标识,也与sdk manager 里面下载的东西无关,表示了该app是为某个版本的手机设备而设计的,在这个目标版本的手机上做了充分的测试-----当你的手机版本大于这个目标版本时,该app也能运行,因为高版本的手机是可以运行低版本软件的
- 这也符合常理,越先进的手机功能应该越强大,不仅能运行新东西,也能兼容老东西
- 因此, minSdkVersion和tarSdkVersion是对我们开发的app所能运行设备的系统版本的范围约束,最低不能小于MinSdkVersion,但没有最高限制
minSdkVersion <= targetSdkVersion <= compilesSdkVersion
- 如果使用了support library, support library的版本要和compileSdkVersion一致
因为support library也是用来编译的,只不过是一种"支持库"
比如使用23.1.1的support Library,那么 compileSdkVersion需要23