Android build.gradle写法

本文介绍了Android项目中build.gradle文件的配置,包括外层目录与app目录下的不同作用。主要内容涉及repositories的jcenter配置,dependencies中classpath的声明,以及android闭包中的各种配置,如minSdkVersion、buildToolsVersion、defaultConfig、buildTypes等。同时,文章讨论了不同类型的依赖方式,如本地依赖、库依赖和远程依赖,并举例说明了如何编写这些配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近几天打开一个android 项目,因为gradle依赖的版本本地没有缓冲,需要去下载,但是网不好,先看一下这个gradle

这里写图片描述

作为一个看惯了AS创建就生成的gradle的小白,根本就不知道怎么改
经过一番百度,在这里就重新介绍一下gradle
gradle它使用了一种基于Groovy的领域特定语言(DSL)来声明项目设置,摒弃了传统基于XML(如Ant和Mave)的各种繁琐配置
先看一下最外层目录下的build.gradle文件

这里写图片描述

首先,两处repositories的闭包中斗声明了jcenter()这行配置,它是一个代码托管库,很多Android开源项目都会选择将代码托管到jcenter,声明这行配置之后,我们就可以在项目中引用任何jcenter上的项目了。
dependencies闭包中使用classpath声明了一个Gradle插件。因为Gradle并不是专门用来构建Android项目的,java,C++等很多项目都可以用Gradle来构建,因此要声明插件。再看app目录下的build.gradle文件

这里写图片描述

首先第一行应用了一个插件,一般有两种值可选:com.android.application表示这是一个应用程序模块
com.android.library表示这是一个库模块
应用程序模块和库模块的最大区别在于,一个是可以直接运行的,一个只能作为代码库依附于应用程序模块来运行

接下来是一个大的android闭包

minSdkVersion:用于指定项目的编译版本
buildToolsVersion “25.0.2”:用于指定项目构建工具的版本
defaultConfig闭包:对项目更多细节进行配置
applicationId :用于指定项目的包名
minSdkVersion:用于指定项目最低兼容的Android系统版本
targetSdkVersion:指定的值表示你已在该目标版本上做过了充分的测试,系统将会为你的应用程序启动一些最新的功能和特性
versionCode:用于指定项目的版本号
versionName:用于指定项目的版本名

buildTypes:用于指定生成安装文件的相关配置,通常只会有两个闭包,一个是debug,一个是release闭包
debug:用于指定生成测试版安装文件的配置,可以忽略不写
release:用于指定生成正式版安装文件的配置

release闭包中的:
minifyEnabled:用于指定是否对项目的代码进行混淆。true表示混淆,false表示不混淆。
proguardFiles:用于指定混淆时使用的规则文件
proguard-android.txt:是在Android SDK目录下的,里面是项目通用的混淆规则
proguard-rules.pro:是当前项目根目录下的,里面可以编写当前项目特有的混淆规则。
注意:Android Studio直接运行的项目生成的都是测试版安装文件

dependencies:指定当前项目所有依赖关系,通常 Android Studio 项目一共有3种依赖方式,本地依赖,库依赖,和远程依赖
1.本地依赖:可以对本地的Jar包或目录添加依赖关系
2.库依赖:可以对项目中的库模块添加依赖关系
3.远程依赖:可以对jcenter库上的开源项目添加依赖关系

compile fileTree:是一个本地依赖声明,表示将libs目录下所以.jar后缀的文件都添加到项目的构建路径当中

compile:远程依赖声明
com.android.support:是域名部分,用于可其他公司的库作区分
appcompat-v7:是组名称,用于和同一个公司不同的库做区分
25.3.0:是版本号,用于和同一个库的不同版本作区分

注意:Gradle在构建项目时会首先检查一下本地是否已经有这个库的依赖,如果没有的话则回去自动联网下载,然后在添加到项目的构建路径当中

testCompile:用于声明测试用例库

废话不多说的,接下来写我遇到的gradle写法:

在app目录下的build.gradle文件这样写:

这里写图片描述
这里写图片描述

这个版本详情具体写在外层目录下的build.gradle文件中

这里写图片描述

还有在app目录下的build.gradle文件这样写的

这里写图片描述

这个版本详情具体写在外层目录下

这里写图片描述
这里写图片描述

这里写图片描述
这里写图片描述

我也碰到了这几种写法,小伙伴们看看喜欢那种,也试试吧

<think>我们正在将项目的构建脚本从Groovy(build.gradle)转换为KotlinDSL(build.gradle.kts)。以下是依赖项的转换:原Groovy依赖配置:dependencies{//Retrofitimplementation'com.squareup.retrofit2:retrofit:2.9.0'implementation'com.squareup.retrofit2:converter-gson:2.9.0'//MaterialDesignimplementation'com.google.android.material:material:1.9.0'//RecyclerViewimplementation'androidx.recyclerview:recyclerview:1.3.1'//Lifecyclecomponentsimplementation'androidx.lifecycle:lifecycle-extensions:2.2.0'}转换为KotlinDSL(build.gradle.kts)的格式如下:注意:在KotlinDSL中,我们使用双引号,并且依赖项配置使用字符串。同时,在KotlinDSL中,我们使用`implementation`等作为函数调用。</think> 以下是将 `build.gradle` (Groovy) 转换为 `build.gradle.kts` (Kotlin DSL) 的完整解决方案: ### Gradle Kotlin DSL 转换后的代码 ```kotlin plugins { id("com.android.application") // 如果你使用的是 library,使用 id("com.android.library") kotlin("android") version "1.9.0" // 确保与你的项目匹配 } android { compileSdk = 34 // 其他 Android 配置... } dependencies { // Retrofit implementation("com.squareup.retrofit2:retrofit:2.9.0") implementation("com.squareup.retrofit2:converter-gson:2.9.0") // Material Design implementation("com.google.android.material:material:1.9.0") // RecyclerView implementation("androidx.recyclerview:recyclerview:1.3.1") // Lifecycle components implementation("androidx.lifecycle:lifecycle-extensions:2.2.0") // 更多声明方式见下方说明 } // 其他配置... ``` ### 关键转换要点解释 1. **语法差异**: - Groovy 使用单引号 `' '`,Kotlin DSL 使用双引号 `" "` - Groovy 用 `=` 赋值,Kotlin DSL 中直接调用方法 - Groovy 的 `compileSdkVersion 34` → Kotlin DSL 的 `compileSdk = 34` 2. **依赖声明**: ```kotlin // Groovy 写法: // implementation 'com.squareup.retrofit2:retrofit:2.9.0' // Kotlin DSL 写法: implementation("com.squareup.retrofit2:retrofit:2.9.0") ``` 3. **变量处理**: ```kotlin // Groovy: def retrofitVersion = "2.9.0" // Kotlin: val retrofitVersion = "2.9.0" implementation("com.squareup.retrofit2:retrofit:$retrofitVersion") ``` 4. **插件声明**: ```kotlin plugins { id("com.android.application") version "8.0.2" // 版本可选 kotlin("android") version "1.9.0" } ``` 5. **设置存储库**: ```kotlin repositories { google() mavenCentral() } ``` ### 额外配置示例 #### 1. 多模块设置 ```kotlin // settings.gradle.kts pluginManagement { repositories { google() mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } } rootProject.name = "MyApp" include(":app") ``` #### 2. 自定义任务 ```kotlin tasks.register("hello") { doLast { println("Hello from Kotlin DSL!") } } ``` #### 3. Build Types & Flavor 配置 ```kotlin android { buildTypes { getByName("debug") { isMinifyEnabled = false } create("staging") { initWith(getByName("debug")) matchingFallbacks += "debug" } } productFlavors { create("free") { dimension = "pricing" } create("pro") { dimension = "pricing" } } } ``` ### 转换完整示例 **原 build.gradle (Groovy)**: ```groovy apply plugin: 'com.android.application' android { compileSdkVersion 34 defaultConfig { applicationId "com.example.myapp" minSdkVersion 21 targetSdkVersion 34 versionCode 1 versionName "1.0" } } dependencies { implementation 'com.squareup.retrofit2:retrofit:2.9.0' } ``` **转换后 build.gradle.kts**: ```kotlin plugins { id("com.android.application") } android { compileSdk = 34 defaultConfig { applicationId = "com.example.myapp" minSdk = 21 targetSdk = 34 versionCode = 1 versionName = "1.0" } } dependencies { implementation("com.squareup.retrofit2:retrofit:2.9.0") } ``` ### 转换工具建议 1. **官方迁移工具**: - 在 Android Studio 中尝试 "Convert to Kotlin DSL" - 通过 Gradle 命令:`./gradlew kotlinDslAccessorsReport` 2. **辅助资源**: - [官方迁移文档](https://docs.gradle.org/current/userguide/kotlin_dsl.html) - [Android Kotlin DSL 示例](https://github.com/android/gradle-recipes) ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值