第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建

本文介绍了如何使用Gradle在Android Studio中配置项目,包括导入第三方jar包的方法及与libs文件夹导入的区别,并详细讲解了签名打包的过程。

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

【声明】 

欢迎转载,但请保留文章原始出处→_→ 

生命壹号:http://www.cnblogs.com/smyhvae/

文章来源:http://www.cnblogs.com/smyhvae/p/4456420.html

联系方式:smyhvae@163.com 

 

【系列】

第一次使用Android Studio时你应该知道的一切配置

第一次使用Android Studio时你应该知道的一切配置(二):新建一个属于自己的工程并安装Genymotion模拟器

第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建

 

目录:

1、gradle的概念

2、gradle配置jar包,和libs文件夹导入jar包的区别

3、签名打包:

    (1)Studio

    (2)命令行

    (3)gradle wrapper的原理

4、BuildConfig的使用

5、简单介绍module中build.gradle文件参数含义

 

一、gradle的概念:

  • gradle是一个构建工具
  • gradle是以Groovy语言为基础的
  • gradle主要面向的是Java语言

打开Android Studio内置的终端,在输入如下命令查看gradle版本:

gradlew -v

 

如果是第一次运行这个命令,系统会帮我们下载gradle到本地,下载到的路径是:

f0d528a1-b7cb-410d-978f-a5f975e24246

输入上述命令后,查看到gradle的版本2.2.1,如下图所示:

74c0b9b1-ca40-49fc-bdbc-197c0786fa16

 

二、通过gradle来导入jar包:

我们在上一篇文章中第二段的第3小节中讲到了通过拷贝文件到libs文件夹来导入jar包。这次来讲一下怎么通过gradle来配置jar包。我们还是以谷歌的gjson.jar为例,如果之前已经通过拷贝文件方式倒入过了,请先自行删掉。

1、通过gradle配置第三方jar包

我们看到,每个module都有一个build.gradle文件,它其实是对应module的配置文件。关于build.gradle文件中具体内容的含义,我们将在最后一段进行讲解。

我们先来看一下名为app的这个module,它的build.gradle对应的图形界面其实是下面这个Project Stucture:

a4eb5912-20cf-4f46-90ea-67bd27f192d8

上图中,切换到dependencies标签下,如下图所示:

4f8405c6-942d-4ad1-af6c-680ed40089b9

上图中,点击添加,然后选择"Library dependency",弹出如下界面:

49c4a575-aec8-4f41-96c7-a667d5d1ddd7

上图中,我们在搜索框中输入“gson”,然后确定,就弹出了箭头处的我们需要的jar包,添加它即可:

646e1935-bdde-4429-9ff8-d70902d5b34f

之后我们会发现,app这个module的build.gradle中多了一行代码,表示引入了gson.jar:

b2841508-79d5-465d-ac3f-8ccc263b2008

其实,如果你能记得住上方这行代码,直接写出代码来也是可以导入的。

此时,gson这个jar包不再是出现在libs这个文件夹下了,而是出现在最下方的External Libraries中,如下图所示:(而且是最新版本哦)

58f33bae-0e14-4d4c-886d-95811f4d88a0

2、gradle导入jar包的特点:(和libs文件夹导入jar包的区别)

  • gradle导入jar包更方便,一行代码即可搞定。不像后者那样还要自己去官方下载。
  • 如果官方将jar包更新了,我们只需要在build.gradle中改一下版本号就行了,不用重新去官网下载。

 

3、通过gradle导入的jar包是从哪里来的:

需要注意的是:不是所有的jar包都是可以通过gradle来导入的。那通过gradle导入的jar包是从哪里来的呢?解释如下:

我们发现HelloWorld这个project的目录下有一个build.gradle文件,打开它:

b1590c7d-e046-46a5-a659-ee4ceb633054

上图中第17行的"jcenter()"的意思是,所有通过gradle导入的jar包都是从http://bintray.com/bintray/jcenter这个中央仓库上扒下来的。如果你需要的jar包在这个网站上没有,那就无法通过gradle的方式来导入哦。

顺便提一下,上图中第8行的classpath中的gradle 1.1.0是android的一个gradle插件(也是从中央仓库扒下来的)。而我们自己使用的gradle版本如下图所示:

452c7226-a262-4ccf-9b0f-8bd39ff59b42

我们自己下载好的gradle的路径如下:

672d7347-1d2b-4acc-8dce-7ba3551357e8

三、签名打包的两种方式:

注:给我们自己开发的app签名,就代表着我自己的版权,以后要进行升级,也必须要使用相同的签名才行。签名就代表着自己的身份(即keystore),多个app可以使用同一个签名。

如果不知道签名是啥意思,请自行百度哦。在eclipse中签名的方法是:选中工程,邮件选择"export-android-export android application",

1、方式1:通过Android Studio进行签名:

选中app这个module,选择菜单栏"Build-Generate signed apk":

30d1daba-bdb4-4dde-9324-89293482a84e

弹出如下界面:

5a3058ac-cba2-44d1-84cf-b77b246bb4d1

上图中,如果你是第一次使用签名,就单击红框部分创建一个新的签名;如果你之前有过签名的文件,就选择蓝框部分进行导入即可。那我就先选择红框部分吧:

70ae6ac4-ed0b-4938-b3f5-229dba3fea29

3b69eb78-a2bc-408b-b49f-272b46b32a31

3ef16884-13b8-453f-bad5-b9dba1a667f7

f757b8aa-277b-45f0-9afd-403adc82082c

上图中,点击"finish"之后,可以看到Android Studio的最下方显示:Gradle正在执行assembleRelease这样一个任务,如下图所示:

bf6076fd-480d-48b4-bb1a-e2bfee785e5e

生成签名好的apk之后,会弹出提示:

8b42d822-e3a2-4c66-aea4-6b2b4e83fef3

77cd9b25-b0f0-4f0b-85ec-c00b4e13b61b

 

 

2、方式2:通过命令行的方式进行签名:

(1)加载Key Store:

我们先删掉上面的通过第一种方式所签名的apk文件。接下来进行第二种方式来签名,即命令行的方式。

打开Project Stucture图形化界面:

03458b6c-92b8-42be-ab1d-e2c3097570eb

d6d07e96-330b-40c6-bc22-32fc37391144

上图中,选中app这个module,然后切换到singning标签栏,紧接着点击添加,然后生成release签名信息,紧接着点击"OK"。接着做如下操作:

c638147d-7741-4c63-9d3a-0066ac959219

上图中,切换到Build Types标签,将Signing config选择为"release",即将刚刚生成的release签名信息配置进去。

操作完成之后,我们可以看到app这个module的build.gradle文件多出了如下红框部分的代码:

f59c1858-e26a-41a4-96b5-f7e32eb6c8ac

然后执行菜单栏的"build-clean Project":

a7af4c5b-23c2-4997-8d6f-47940c1a0f1c

(2)生成realease版本的apk:

紧接着在命令行Terminal输入如下命令:(AS已经将命令行Terminal集成到了软件当中)

gradlew assembleRelease

如果运行成功,效果如下:

74e21bb0-7afc-4bc6-9103-a4748f2003bf

生成的签名好的apk在如下位置:

b8f81109-cf7f-4649-a4da-a4bb91a3c96a

 

3、为什么要使用gradlew命令而不是gradle命令:

在HelloWorld工程目录下有一个gradle文件夹,在gradle/wrapper目录下有一个gradle-wrapper.properties文件,打开它:

c5bb106f-081e-40d8-816e-ea04a4814977

上图代表着HelloWorld这个工程所依赖的gradle的版本信息。上图的红线表示,如果我们的工程中没有gradle,软件会根据这个url去下载gradle,终于知道为啥第一次打开AS时会这么慢了吧?

如果我们执行了gradlew命令,实际上是执行上面的gradle wrapper,然后找到我们已经下载好的gradle 2.2.1。如果现在有很多个工程,但是每个工程的gradle版本都不一样,我就必须要将每个版本的gradle都要配置到环境变量当中,而执行了gradlew命令,就会避免这个麻烦。

四、BuildConfig文件:

BuildConfig是IDE自动生成的一个类,在elipse中即存放在gen目录下(如R文件)。而在Adroid Studio中,BuildConfig文件存放的位置是:app/build/generated/source/buildconfig/dubug/<packagename>/BuildConfig.java中。如下图所示:

42c80b8f-7e10-4e57-bacb-178a0ae4fc56

五、module中build.gradle文件参数含义:

主要是module的build.gradle,截图如下:

1518e471-4c75-4610-89f5-47ba9bc701f8

01行:apply plugin: 'com.android.application'    表示该module是这个应用程序的module

15行:applicationId "com.smyhvae.helloworld"    应用程序的包名

16、17行:向下兼容的最小版本、编译版本。    注:在app/src/main/AndroidManifest.xml中不再出现这个信息了。

23行:需不需要利用24行的proguard文件来混淆代码。在release状态下,最好改为true。

<think>好的,我现在需要帮助用户配置Android Studio项目,使其在导入优先使用镜像源下载Gradle和依赖项。这个问题我之前可能没有实际操作过,但根据我的知识,我需要回忆一下相关的配置步骤,并确保信息准确。 首先,用户的问题是希望在导入新项目Gradle和依赖项从镜像源下载,而不是默认的Maven仓库。这通常是为了加快下载速度,特别是在国内访问Google的仓库可能较慢,所以需要替换成国内的镜像源,比如阿里云、腾讯云等。 接下来,我需要考虑如何配置Gradle使用镜像源。Gradle配置通常涉及到修改构建脚本中的仓库地址。用户可能需要在项目的build.gradle文件中更改repositories部分,将mavenCentral()或google()替换为镜像源的URL。不过,用户可能希望这个配置对所有项目都有效,而不仅仅是一个项目,所以可能需要配置全局的Gradle初始化脚本或者在用户主目录下的gradle.properties文件中设置。 另外,Gradle本身的下载也可能很慢,尤其是在第一次导入项目Android Studio会下载特定版本的Gradle发行包。这候,可以配置Gradle使用镜像源来下载Gradle发行包本身。这可能需要修改gradle-wrapper.properties文件中的distributionUrl,将其指向镜像地址,例如将services.gradle.org替换为镜像站的地址,比如https://mirrors.cloud.tencent.com/gradle/。 但用户提到的是“优先使用配置的镜像源”,所以可能需要分两部分处理:一是Gradle Wrapper的下载,二是项目依赖的仓库地址。我需要分别考虑这两个方面。 首先,对于Gradle Wrapper,修改distributionUrl。例如,使用腾讯云或阿里云的镜像。用户需要找到项目中的gradle/wrapper/gradle-wrapper.properties文件,将distributionUrl中的地址替换掉。比如原本是https\://services.gradle.org/distributions/gradle-8.4-bin.zip,改为https\://mirrors.cloud.tencent.com/gradle/gradle-8.4-bin.zip。 其次,对于项目依赖项,需要在build.gradle(可能是项目级的和模块级的)中的repositories部分添加镜像仓库。通常,Android项目会在buildscript和allprojects部分设置仓库。用户需要将mavenCentral()、google()和可能的jcenter()替换为镜像仓库的地址。例如,使用阿里云的Maven仓库,添加maven { url 'https://maven.aliyun.com/repository/public' },以及针对google的镜像:maven { url 'https://maven.aliyun.com/repository/google' }。需要注意的是,这些仓库应该放在原有的前面,或者直接替换掉原有的,以确保优先使用镜像源。 此外,用户可能希望这些配置在创建新项目自动生效,而不需要每次手动修改。这候,可能需要配置Android Studio的模板,或者设置全局的Gradle初始化脚本。全局初始化脚本位于~/.gradle/init.d/目录下(在Linux/Mac)或者C:\Users\用户名\.gradle\init.d\(在Windows),可以在这里添加一个init.gradle脚本,配置所有项目的仓库地址。例如: allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/google' } mavenCentral() } } 但需要确认这个初始化脚本是否会影响所有项目,以及是否会被项目的build.gradle中的配置覆盖。因为Gradle构建脚本会合并父项目和子项目配置,但仓库的添加顺序可能会影响优先级。可能需要在初始化脚本中将镜像源放在前面。 另外,关于Gradle的全局配置,用户还可以在gradle.properties文件中设置代理或者镜像相关的系统属性,但这可能不如直接修改仓库地址直接有效。 还有一个方面是,如果用户使用的是Android StudioGradle插件,可能还需要在settings.gradle配置插件管理的仓库地址,例如: pluginManagement { repositories { maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } maven { url 'https://maven.aliyun.com/repository/google' } gradlePluginPortal() } } 这样插件下载也会使用镜像源。 总结步骤应该是: 1. 修改gradle-wrapper.properties中的distributionUrl,使用镜像站的Gradle发行包地址。 2. 在项目的build.gradle或全局的初始化脚本中配置仓库地址为镜像源。 3. 在settings.gradle配置插件管理的仓库地址为镜像源。 4. 可能需要清除Gradle的缓存,或者重新导入项目以使配置生效。 需要验证这些步骤是否正确,比如检查阿里云镜像是否包含所需的依赖项,是否支持Gradle插件。另外,不同的镜像源可能有不同的URL结构,用户需要根据具体镜像站的文档进行配置。 例如,阿里云镜像的仓库地址可能分为public、google、jcenter等,需要正确添加各个部分。而腾讯云的Gradle发行包镜像可能需要特定的路径。 可能的错误点包括:镜像源没有所需的依赖项,导致构建失败;或者仓库地址写错;或者Gradle版本与镜像站的版本不匹配。 因此,用户需要根据自己选择的镜像源,查找其官方文档,获取正确的仓库URL,并确保镜像源的可用性。 最后,还需要提醒用户,某些项目可能依赖特定的仓库,如果镜像源没有同步这些仓库,可能需要保留原来的仓库地址,但将镜像源放在前面,这样Gradle会先检查镜像源,找不到再使用原地址。这样可以平衡速度和可靠性。</think>在导入新的 Android Studio 项目,通过以下步骤配置镜像源以加速 **Gradle** 和依赖项的下载: --- ### **一、配置 Gradle Wrapper 镜像(加速 Gradle 本体下载)** 1. 修改项目中的 `gradle-wrapper.properties` 文件: - 路径:`项目根目录/gradle/wrapper/gradle-wrapper.properties` - 替换 `distributionUrl` 为国内镜像地址: ```properties distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-8.4-bin.zip # 其他镜像示例: # 腾讯云: https://mirrors.cloud.tencent.com/gradle/ # 阿里云: https://mirrors.aliyun.com/gradle/ ``` --- ### **二、配置依赖项镜像(加速库下载)** #### **方式 1:修改项目级 build.gradle** 1. 打开 **项目级** `build.gradle`(或 `build.gradle.kts`): - 路径:`项目根目录/build.gradle` - 替换 `repositories` 为镜像源: ```groovy buildscript { repositories { // 阿里云镜像(优先) maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } mavenCentral() // 备用 } // ... } allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/google' } mavenCentral() } } ``` #### **方式 2:全局配置(所有项目生效)** 1. 创建全局 Gradle 初始化脚本: - 文件路径:`~/.gradle/init.gradle`(Windows: `C:\Users\<用户名>\.gradle\`) - 内容: ```groovy allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/google' } mavenCentral() } } ``` --- ### **配置插件仓库镜像** 1. 修改 `settings.gradle` 文件: - 路径:`项目根目录/settings.gradle` - 添加插件镜像源: ```groovy pluginManagement { repositories { maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } maven { url 'https://maven.aliyun.com/repository/google' } gradlePluginPortal() } } ``` --- ### **四、其他优化** 1. **清理缓存**(可选): - 删除 `~/.gradle/caches/` 目录,强制重新下载依赖。 2. **代理设置**(如需要): - 在 `gradle.properties` 中添加代理配置(示例): ```properties systemProp.http.proxyHost=127.0.0.1 systemProp.http.proxyPort=7890 systemProp.https.proxyHost=127.0.0.1 systemProp.https.proxyPort=7890 ``` --- ### **常用镜像地址** | 镜像提供商 | 仓库地址 | |------------------|---------------------------------------------| | 阿里云 | `https://maven.aliyun.com/repository/...` | | 腾讯云 | `https://mirrors.cloud.tencent.com/...` | | 华为云 | `https://repo.huaweicloud.com/repository/...` | --- ### **验证配置** 1. 重新同步 Gradle(点击 Android Studio 右上角的 **Sync Now**)。 2. 查看 **Gradle Console** 日志,确认依赖是否从镜像源下载。 通过以上步骤,可显著提升依赖下载速度并避免网络问题。如果遇到依赖缺失,请检查镜像源是否同步了所需仓库(如 `google()` 或 `mavenCentral()`)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值