gradlew wrapper使用下载到本地的gradle.zip文件安装。

使用gradlew build项目时的本地安装gradle方法
本文介绍如何在无法下载gradle-2.2.1-all.zip的情况下,通过本地安装gradle的方法。包括下载zip包、修改gradle-wrapper.properties文件并运行gradlew build的过程。
使用gradlew来build项目时,有时候老是需要下载gradle-2.2.1-all.zip安装来安装。但是因为gradle-2.2.1-all.zip老是被墙下不了。这里说一种从本地安装的方法。

1. 先下载gradle-2.2.1-all.zip包。
2. 把下载好的zip包放到{project.dir}\gradle\wrapper目录下(也就是跟gradle-wrapper.properties同一个目录)修改{project.dir}\gradle\wrapper\gradle-wrapper.properties文件。如下:
[quote]#Wed Apr 10 15:27:10 PDT 2013
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
[color=red]distributionUrl=gradle-2.2.1-all.zip[/color][/quote]
3. 然后就运行gradlew build就行了。
4. 安装好gradle之后把gradle-wrapper.properties改回来就行了
[quote]#Wed Apr 10 15:27:10 PDT 2013
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
[color=red]#distributionUrl=gradle-2.2.1-all.zip[/color][/quote]


还有另一种办法,就是把下载好的gradle-2.2.1-all.zip解压到某个目录, 然后设置好gradle命令的path,再到工程目录下运行gradle build就行了(注意:是gradle而不是gradlew)

这样一说,其中的原理大家应该知道了吧。
Caused by: java.lang.RuntimeException: No value with key 'distributionUrl' specified in wrapper properties file '/root/workspace/usb-serial-for-android/gradle/wrapper/gradle-wrapper.properties'. at org.gradle.wrapper.WrapperExecutor.reportMissingProperty(WrapperExecutor.java:135) at org.gradle.wrapper.WrapperExecutor.readDistroUrl(WrapperExecutor.java:78) at org.gradle.wrapper.WrapperExecutor.prepareDistributionUri(WrapperExecutor.java:67) at org.gradle.wrapper.WrapperExecutor.<init>(WrapperExecutor.java:54) ... 2 more [root@localhost usb-serial-for-android]# ./gradlew :usbSerialExamples:assembleDebug --no-build-cache Exception in thread "main" java.lang.RuntimeException: Could not load wrapper properties from '/root/workspace/usb-serial-for-android/gradle/wrapper/gradle-wrapper.properties'. at org.gradle.wrapper.WrapperExecutor.<init>(WrapperExecutor.java:61) at org.gradle.wrapper.WrapperExecutor.forWrapperPropertiesFile(WrapperExecutor.java:45) at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:62) Caused by: java.lang.RuntimeException: No value with key 'distributionUrl' specified in wrapper properties file '/root/workspace/usb-serial-for-android/gradle/wrapper/gradle-wrapper.properties'. at org.gradle.wrapper.WrapperExecutor.reportMissingProperty(WrapperExecutor.java:135) at org.gradle.wrapper.WrapperExecutor.readDistroUrl(WrapperExecutor.java:78) at org.gradle.wrapper.WrapperExecutor.prepareDistributionUri(WrapperExecutor.java:67) at org.gradle.wrapper.WrapperExecutor.<init>(WrapperExecutor.java:54) 因为我在gradle-wrapper.properties 文件中添加了-distributionUrl=file\:///root/gradle-7.4.2-bin.zip +distributionUrl=file\:///root/gradle-7.5.1-bin.zip 问题是什么怎么解决?
05-14
<think>好的,我现在需要解决用户在gradle-wrapper.properties文件中添加多个distributionUrl导致的错误:'No value with key 'distributionUrl' specified'。首先,我得理解这个问题的根本原因。根据用户提供的引用内容,特别是引用[3]中提到,Gradle Wrapper的配置文件gradle-wrapper.properties中应该指定一个distributionUrl来定义Gradle的版本和下载路径。如果用户在这个文件里添加了多个distributionUrl,Gradle在解析时就会遇到冲突,不知道应该使用哪一个,从而抛出错误。 接下来,我需要确认gradle-wrapper.properties文件的正确结构。根据引用[3],正确的配置应该只有一行distributionUrl,例如: distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip 如果用户不小心添加了多个这样的行,或者在其他地方重复配置,就会导致问题。例如,可能用户尝试通过多个镜像源来加速下载,但Gradle并不支持这种写法。 解决方案的第一步应该是检查gradle-wrapper.properties文件,确保只有一个distributionUrl。需要指导用户打开该文件,查找是否有重复的行,并删除多余的配置。同时,用户可能想使用国内镜像,如引用[2]中提到的阿里云镜像,这时候应该替换原有的distributionUrl,而不是添加新的。例如,将原URL替换为: distributionUrl=https\://maven.aliyun.com/repository/gradle-distributions/gradle-x.y.z-bin.zip 另外,用户可能在其他地方配置了Gradle版本,比如在项目的build.gradle文件中,这可能导致冲突。需要检查是否有其他配置位置指定了Gradle版本,确保所有配置一致。比如,在build.gradle中可能有类似classpath 'com.android.tools.build:gradle:x.y.z'的语句,需要确认这里的版本与wrapper中的distributionUrl版本兼容。 清理缓存也是一个重要步骤。有时候即使修正了配置文件Gradle可能仍然使用旧的缓存,导致错误依旧。引用[2]提到Gradle同步(Gradle sync)的步骤,用户需要执行清理操作,比如删除.gradle目录和重新同步项目。此外,Android Studio的缓存也可能需要清理,可以通过File > Invalidate Caches / Restart来操作。 如果用户确实需要多版本管理,可能需要指导他们使用不同的机制,比如通过命令行参数或不同的项目配置,而不是在同一配置文件中添加多个distributionUrl。例如,可以为不同项目使用不同的wrapper配置,或者通过环境变量动态设置。 在检查过程中,还需要注意是否有语法错误,比如多余的空格、转义符是否正确(如URL中的冒号被转义为\:),以及路径是否正确。引用[2]和[3]中的示例显示,distributionUrl中的冒号需要转义,如https\://,这也是需要确认的细节。 最后,需要提醒用户在修改配置文件后,执行Gradle同步操作,确保更改生效。如果问题依旧存在,可能需要更深入的排查,比如查看完整的错误日志,确认是否有其他配置冲突或版本不兼容的情况。</think>### 解决方案 在 `gradle-wrapper.properties` 文件中配置多个 `distributionUrl` 会导致 Gradle 无法识别有效路径,从而触发 `No value with key 'distributionUrl' specified` 错误。以下是逐步解决方案: --- #### **1. 检查并修正配置文件** - **定位文件**:打开项目中的 `gradle/wrapper/gradle-wrapper.properties` 文件- **删除重复项**:确保仅保留 **一行** `distributionUrl`,例如: ```properties distributionUrl=https\://maven.aliyun.com/repository/gradle-distributions/gradle-7.4.2-bin.zip ``` 若需使用国内镜像,直接替换原 URL 即可(参考引用[2])。 --- #### **2. 语法验证** - **转义符检查**:URL 中的冒号 `:` 必须用反斜杠转义为 `\:`,例如: ```properties distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip ``` - **路径格式**:确保 URL 指向有效的 Gradle 发行(`.zip` 或 `.all.zip`)。 --- #### **3. 清理缓存并重新同步** - **删除本地缓存**:手动删除项目目录下的 `.gradle` 文件夹。 - **Android Studio 操作**: 1. 点击菜单栏的 **File > Sync Project with Gradle Files**。 2. 若仍报错,执行 **File > Invalidate Caches / Restart**(参考引用[3])。 --- #### **4. 版本一致性检查** - 确保 `gradle-wrapper.properties` 中的 Gradle 版本与 `build.gradle` 中定义的插件版本兼容。例如: ```groovy // 项目级 build.gradle classpath 'com.android.tools.build:gradle:7.4.2' ``` --- #### **5. 多镜像配置替代方案** 若需通过多个镜像源加速下载,**不可直接添加多个 `distributionUrl`**,而应: - **方案一**:在 `build.gradle` 中配置全局镜像仓库: ```groovy allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/public' } mavenCentral() } } ``` - **方案二**:通过环境变量或命令行参数指定 Gradle 发行路径(需自定义逻辑)。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值