Android Studio Gradle相关
创始人
2024-04-15 05:08:12
0

一、区分gradle version与gradle plugin version

参考博客

gradle是一个构建工具,理论上来说,它可以用来构建任何项目(如java项目,ios项目)。它可以与任何类型的IDE集成(如ecllipse,android studio),方便的帮我们将项目代码进行构建打包,是一个脚本工具。

 配置gradle version的地方在项目目录下的gradle-wrapper.properties或者在File->Project Structure->project menu里的gradle version

 

 Android Gradle Plugin(简称AGP)是android基于gradle开发,整合了几项专门用于构建Android应用的功能。而该工具命名为:com.android.tools.build:gradle:xxxx 。

配置android gradle version的地方在根build.gradle里或者在File->Project Structure->project menu里的android gradle plugin version

buildscript {....dependencies {classpath 'com.android.tools.build:gradle:3.1.3'}....
}

所以,到这里大家理解两者关系了。两者是不同团队开发的,所以版本不一致。但是因为anroid gradle是依赖于gradle开发的,所以两个之间的对应关系比较重要。

//这个地方是android自己定制化Gradle的插件版本classpath 'com.android.tools.build:gradle:3.6.4'//gradle/wrapper/gradle-wrapper.properties 这个是系统独立的Gradle的版本号。distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
Android Gradle 插件版本所需的 Gradle 版本
1.0.0 - 1.1.32.2.1 - 2.3
1.2.0 - 1.3.12.2.1 - 2.9
1.5.02.2.1 - 2.13
2.0.0 - 2.1.22.10 - 2.13
2.1.3 - 2.2.32.14.1 - 3.5
2.3.0+3.3+
3.0.0+4.1+
3.1.0+4.4+
3.2.0 - 3.2.14.6+
3.3.0 - 3.3.34.10.1+
3.4.0 - 3.4.35.1.1+
3.5.0 - 3.5.45.4.1+
3.6.0 - 3.6.45.6.4+
4.0.0+6.1.1+
4.1.0+6.5+
4.2.0+6.7.1+
7.07.0+

由于以前两个插件的版本一直对应不上,容易造成大家的误解。Android Gradle的版本号 在Gradle发布7.0后,进行了同步。也就是我们在上面看到的。7.0之后就同步上了。两个版本号一致。

 android gradle 7.0+更新

工具最低版本默认版本
Gradle7.0.27.0.2
SDK Build Tools30.0.230.0.2
NDK不适用21.4.7075529
JDK1111

也就是我们如果将Android Gradle 升级到7.0后,我们的Gradle必须要在7.0.2以上。并且jdk必须是11.而不再是jdk8了。

 二、build.gradle里的各种配置

 1、project的build.gradle

buildscript {apply from: "config.gradle"//引用全局配置// 配置 Gradle 脚本依赖项上所需要的存储库addRepos(repositories)// 配置 Gradle 脚本所需要的依赖项dependencies {classpath deps.android_gradle_pluginclasspath deps.android_greendao_pluginclasspath deps.android_butterknife_gradle_pluginclasspath deps.huawei_agconnect// 添加神策分析 android-gradle-plugin2 依赖classpath deps.sensorsdata_plugin}// 配置 Gradle 脚本依赖项上所需要的存储库repositories {google()}
}
// 配置项目本身及其每个子项目所需要的依赖
allprojects {// 配置此项目所需依赖的存储库addRepos(repositories)
}// 运行 gradle clean 时,执行此处定义的 task 任务。该任务继承自 Delete,删除根目录中的 build 目录。
// 相当于执行Delete.delete(rootProject.buildDir)。
task clean(type: Delete) {delete rootProject.buildDir
}//指定编译的编码
tasks.withType(JavaCompile) {options.encoding = "UTF-8"
}

 2、app的build.gradle

//声明时Android程序
//com.android.application 表示这是一个应用程序模块,可直接运行
// com.android.library 标识这是一个库模块,是依附别的应用程序运行
apply plugin: 'com.android.application'android {// 编译sdk的版本,也就是API Level,例如API-20、API-28等等。compileSdkVersion 28// build tools的版本,其中包括了打包工具aapt、dx等// 这个工具的目录位于你的sdk目录/build-tools/下    buildToolsVersion "28.0.2"// 默认配置 应用程序包名、最小sdk版本、目标sdk版本、版本号、版本名称defaultConfig {applicationId "xx.xx.xx" //应用程序的包名minSdkVersion 16  //最小sdk版本,如果设备小于这个版本或者大于maxSdkVersion将无法安装这个应用targetSdkVersion 28 //目标sdk版本,充分测试过的版本(建议版本)versionCode 1//版本号,第一版是1,之后每更新一次加1versionName "1.0"//版本名,显示给用户看到的版本号testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"//Instrumentation单元测试}//signingConfigs 一定要在 buildTypes 之前 否则 找不到configsigningConfigs {// 签名配置debug {keyAlias 'xxx'keyPassword 'xxxxx'storeFile file('./xxxx.jks')storePassword 'xxxx'}release {keyAlias 'xxx'keyPassword 'xxxx'storeFile file('./xxx.jks')storePassword 'xxxxx'}}// 指定生成安装文件的配置,是否对代码进行混淆;//常有两个子包:release,debug,注:直接运行的都是debug安装文件buildTypes {// release版本的配置,即生成正式版安装文件的配置release {debuggable falseminifyEnabled false// 是否对代码进行混淆,true表示混淆zipAlignEnabled true// 是否支持zipshrinkResources true //资源瘦身// proguard-android.txt指所有项目通用的混淆规则,proguard-rules.pro当前项目特有      的混淆规则proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}sourceSets {//通过修改SourceSets中的属性,可以指定需要被编译的源文件,不在指定路径下的源文件将会被排除(即不会被编译)main {jniLibs.srcDirs = ['libs']  // 设置so包地址res.srcDirs = ['src/main/res', 'src/main/res/person']// resource目录}dev {java.srcDirs = ['src/dev', 'src/dev/java', 'src/dev/java/']// java源代码目录}prod {java.srcDirs = ['src/prod', 'src/prod/java', 'src/prod/java/']}}// 分环境打包配置productFlavors {//开发环境打包配置dev {applicationId "com.cloudy.component"buildConfigField "boolean", "IS_DEBUG", "true"versionNameSuffix ".beta"}//生产环境打包配置prod {applicationId "com.cloudy.component"buildConfigField "boolean", "IS_DEBUG", "false"}}lintOptions {//lint 配置;abortOnError falsecheckReleaseBuilds false}}repositories {//仓库配置flatDir {dirs 'libs'dirs project(':lib_qr').file('libs')dirs project(':lib_ntalkerChatUI').file('libs')dirs project(':unityLibrary').file('libs')dirs project(':lib_vc').file('libs')}
}dependencies {//指定当前项目的所有依赖、本地依赖,库依赖以及远程依赖;implementation fileTree(dir: 'libs', include: ['*.jar'])// 本地依赖implementation project(':library')// 库依赖声明// 远程依赖,androidx.appcompat是域名部分,appcompat是组名称,1.0.2是版本号implementation 'androidx.appcompat:appcompat:1.0.2'implementation 'androidx.constraintlayout:constraintlayout:1.1.3'testImplementation 'junit:junit:4.12'// 声明测试用列库androidTestImplementation 'androidx.test.ext:junit:1.1.1'androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

三、gradle中第三方库的配置

参考博客1

参考博客2

android中常见的第三方库为:so,jar,aar

so一般来说.是C或C++语言的内容打包成的库。

jar只包含了class文件与清单文件 ,不包含资源文件(如图片等所有res中的文件)。

aar包含所有资源(class以及res资源文件)。

 1、so依赖

so文件默认在app/src/main/jniLibs路径下。如果更改so文件到指定位置下,需要重新设置gradle

例如将so文件放在app/libs目录下

// app的build.gradle
android {...sourceSets {main {jniLibs.srcDirs = ['libs']  //这个必须加,因为我们把.so文件放在了libs文件夹中}}
}

2、jar依赖

将jar包放入libs目录下,再添加gradle依赖

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

3、aar依赖

将aar文件放置到libs文件夹,再添加gradle依赖

android {...repositories {flatDir {dirs 'libs'}}
}dependencies {implementation(name: 'lfilepickerlibrary-release', ext: 'aar')
}

相关内容

热门资讯

政策带旺消费,广州线下落地20... 2026年1月1日,随着新年钟声敲响,广东新年消费品以旧换新活动(即“国补”活动)正式启动。零点刚过...
日照市2026年基本医疗保险政... 日照市职工2026年基本医疗保险政策汇总一览表(暂行) 日照市居民2026年基本医疗保险政策汇总一...
“芙蓉花红”映民心 恒达社区答... 长沙晚报掌上长沙12月31日讯(通讯员 刘梦莹)12月30日,芙蓉区荷花园街道恒达社区开展“芙蓉花红...
*ST熊猫(600599)披露... 截至2025年12月31日收盘,*ST熊猫(600599)报收于9.93元,较前一交易日下跌4.98...
陆家嘴(600663)披露公司... 截至2025年12月31日收盘,陆家嘴(600663)报收于7.91元,较前一交易日上涨0.38%,...
宝泰隆(601011)披露控股... 截至2025年12月31日收盘,宝泰隆(601011)报收于3.4元,较前一交易日下跌0.87%,最...
ST帕瓦(688184)披露公... 截至2025年12月31日收盘,ST帕瓦(688184)报收于9.28元,较前一交易日下跌0.11%...
九鼎投资(600053)披露2... 截至2025年12月31日收盘,九鼎投资(600053)报收于19.87元,较前一交易日下跌1.73...
重庆啤酒(600132)披露与... 截至2025年12月31日收盘,重庆啤酒(600132)报收于52.24元,较前一交易日下跌0.4%...
黑龙江2026年以旧换新政策来... 原标题:汽车、家电等多品类可享补贴!黑龙江2026年以旧换新政策来了 黑龙江省商务厅于2025年12...