pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

為什么同一個版本的gradle會有多個副本

Why there are multiple copies for the same version of gradle(為什么同一個版本的gradle會有多個副本)
本文介紹了為什么同一個版本的gradle會有多個副本的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我有一個android studio項目,文件gradle/wrapper/gradle-wrapper.properties配置如下.

I have an android studio project, with the file gradle/wrapper/gradle-wrapper.properties configured as following.

#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

我的主目錄中安裝了 2.2.1-all 版本.

And I have the 2.2.1-all version installed in my home directory.

.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1-all.zip

當我調用 ./gradlew 命令來構建項目時.我應該使用 gradle-2.2.1-all.zip 來構建.

When I invoke ./gradlew command to build the project. I should use the gradle-2.2.1-all.zip to build.

但它不會,即使是相同版本,它也會下載另一個 gradle.因此,版本 2.2.1-all 有兩個 gradle.因為我的網絡連接很慢,所以需要很長時間.

But it doesn't, it will download another gradle even for the same version instead. So, there are two gradles for the version 2.2.1-all. Because my internet connection is very slow, it takes too long.

.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1-all.zip
.gradle/wrapper/dists/gradle-2.2.1-all/6dibv5rcnnqlfbq9klf8imrndn/gradle-2.2.1-all.zip

這很煩人,因為每次我調用命令來構建我的項目時,它都必須為同一版本下載一個新版本.

It's very annoying since it has to download a new one for the same version very time I invoke the command to build my project.

為什么 gradle 構建系統無法選擇已安裝的系統?

Why the gradle build system couldn't pick the installed one?

推薦答案

出現問題是因為s??tudio的gradle-wrapper.jar和最新的下載url的hash策略不同gradle-wrapper.jar.

The problem occurred is because the hash policy for the download url is different between studio's gradle-wrapper.jar and latest gradle-wrapper.jar.

我的 Android 應用目錄下的 gradle-wrapper.jar(我猜它是從 android-sdk-macosx/tools/templates/gradle/wrapper/gradle/wrapper/gradle-wrapper.jar)使用下面的方法計算下載url的hash.

The gradle-wrapper.jar under my Android app directory (I guess it's copied from android-sdk-macosx/tools/templates/gradle/wrapper/gradle/wrapper/gradle-wrapper.jar) use the following method to calculate hash for the download url.

// PathAssembler.java
private String getMd5Hash(String string) {
    try {
        MessageDigest e = MessageDigest.getInstance("MD5");
        byte[] bytes = string.getBytes();
        e.update(bytes);
        return (new BigInteger(1, e.digest())).toString(32);
    } catch (Exception var4) {
        throw new RuntimeException("Could not hash input string.", var4);
    }
}

但是最新的gradle-wrapper.jar使用下面的方法來做.基數從 32 變為 36.

But the latest gradle-wrapper.jar use the following method to do. The radix change from 32 to 36.

private String getHash(String string) {
    try {
        MessageDigest messageDigest = MessageDigest.getInstance("MD5");
        byte[] bytes = string.getBytes();
        messageDigest.update(bytes);
        return new BigInteger(1, messageDigest.digest()).toString(36);
    } catch (Exception e) {
        throw new RuntimeException("Could not hash input string.", e);
    }
}

我在目錄名中找到的魔法字符串是下載url的md5哈希字符串.

The magic string I found in the directory name is the md5 hash string of the download url.

對于2.10版本,有目錄名

For version 2.10, there is a directory name

.gradle/wrapper/dists/gradle-2.10-all/a4w5fzrkeut1ox71xslb49gst

并且 a4w5fzrkeut1ox71xslb49gst 是從下載 url 散列的.

And the a4w5fzrkeut1ox71xslb49gst is hashed from the download url.

try {
    MessageDigest messageDigest = MessageDigest.getInstance("MD5");
    messageDigest.update("https://services.gradle.org/distributions/gradle-2.10-all.zip".getBytes());
    System.out.println(new BigInteger(1, messageDigest.digest()).toString(36));
} catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
}

通過對來自 gradle/wrapper/gradle-wrapper.properties 的相同下載 url 使用相同的哈希方法(使用相同的 gradle-wrapper.jar),有同一版本的 gradle 不會被多次下載.

By using the same hash method (use the same gradle-wrapper.jar) for the same download url from gradle/wrapper/gradle-wrapper.properties, there won't be multiple downloads for the same version of gradle.

這個問題只存在于android studio項目和其他gradle項目之間.

This issue only exist between android studio project and other gradle project.

這篇關于為什么同一個版本的gradle會有多個副本的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

IncompatibleClassChangeError after updating to Android Build Tools 25.1.6 GCM / FCM(更新到 Android Build Tools 25.1.6 GCM/FCM 后出現 IncompatibleClassChangeError)
How to get current flavor in gradle(如何在 gradle 中獲取當前風味)
How to fix quot;unexpected element lt;queriesgt; found in lt;manifestgt;quot; error?(如何修復“意外元素lt;查詢gt;在“清單中找到錯誤?)
Multi flavor app based on multi flavor library in Android Gradle(基于 Android Gradle 中多風味庫的多風味應用)
Android dependency has different version for the compile and runtime(Android 依賴在編譯和運行時有不同的版本)
Transitive dependencies for local aar library(本地 aar 庫的傳遞依賴)
主站蜘蛛池模板: 六自由度平台_六自由度运动平台_三自由度摇摆台—南京全控科技 | 珠光砂保温板-一体化保温板-有釉面发泡陶瓷保温板-杭州一体化建筑材料 | 二手电脑回收_二手打印机回收_二手复印机回_硒鼓墨盒回收-广州益美二手电脑回收公司 | 直齿驱动-新型回转驱动和回转支承解决方案提供商-不二传动 | led太阳能路灯厂家价格_风光互补庭院灯_农村市政工程路灯-中山华可路灯品牌 | 沈阳楼承板_彩钢板_压型钢板厂家-辽宁中盛绿建钢品股份有限公司 轴承振动测量仪电箱-轴承测振动仪器-测试仪厂家-杭州居易电气 | 合肥触摸一体机_触摸查询机厂家_合肥拼接屏-安徽迅博智能科技 | 伸缩器_伸缩接头_传力接头-巩义市润达管道设备制造有限公司 | 振动台-振动试验台-振动冲击台-广东剑乔试验设备有限公司 | 发电机组|柴油发电机组-批发,上柴,玉柴,潍柴,康明斯柴油发电机厂家直销 | 上海璟文空运首页_一级航空货运代理公司_机场快递当日达 | 高清视频编码器,4K音视频编解码器,直播编码器,流媒体服务器,深圳海威视讯技术有限公司 | 金联宇电缆总代理-金联宇集团-广东金联宇电缆实业有限公司 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 吸污车_吸粪车_抽粪车_电动三轮吸粪车_真空吸污车_高压清洗吸污车-远大汽车制造有限公司 | 郑州外墙清洗_郑州玻璃幕墙清洗_郑州开荒保洁-河南三恒清洗服务有限公司 | 玉米深加工机械,玉米加工设备,玉米加工机械等玉米深加工设备制造商-河南成立粮油机械有限公司 | 深圳市宏康仪器科技有限公司-模拟高空低压试验箱-高温防爆试验箱-温控短路试验箱【官网】 | 兰州UPS电源,兰州山特UPS-兰州万胜商贸 | 山东活动策划|济南活动公司|济南公关活动策划-济南锐嘉广告有限公司 | 钢骨架轻型板_膨石轻型板_钢骨架轻型板价格_恒道新材料 | 没斑啦-专业的祛斑美白嫩肤知识网站-去斑经验分享 | 进口便携式天平,外校_十万分之一分析天平,奥豪斯工业台秤,V2000防水秤-重庆珂偌德科技有限公司(www.crdkj.com) | 楼承板-开闭口楼承板-无锡海逵楼承板 | 正压送风机-多叶送风口-板式排烟口-德州志诺通风设备 | 北京模型公司-工业模型-地产模型-施工模型-北京渝峰时代沙盘模型制作公司 | 济南网站建设_济南网站制作_济南网站设计_济南网站建设公司_富库网络旗下模易宝_模板建站 | 北京浩云律师事务所-法律顾问_企业法务_律师顾问_公司顾问 | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 北京浩云律师事务所-企业法律顾问_破产清算等公司法律服务 | 数控走心机-双主轴走心机厂家-南京建克 | 耐驰泵阀管件制造-耐驰泵阀科技(天津)有限公司| 冲击式破碎机-冲击式制砂机-移动碎石机厂家_青州市富康机械有限公司 | 二手色谱仪器,十万分之一分析天平,蒸发光检测器,电位滴定仪-湖北捷岛科学仪器有限公司 | 气动球阀_衬氟蝶阀_调节阀_电动截止阀_上海沃托阀门有限公司 | 山东锐智科电检测仪器有限公司_超声波测厚仪,涂层测厚仪,里氏硬度计,电火花检漏仪,地下管线探测仪 | 艺术涂料|木纹漆施工|稻草漆厂家|马来漆|石桦奴|水泥漆|选加河南天工涂料 | 大倾角皮带机-皮带输送机-螺旋输送机-矿用皮带输送机价格厂家-河南坤威机械 | 不锈钢管件(不锈钢弯头,不锈钢三通,不锈钢大小头),不锈钢法兰「厂家」-浙江志通管阀 | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 |