2015-06-03 1 views
2

У меня есть проект студии Android, файл gradle/wrapper/gradle-wrapper.properties настроен следующим образом.Почему существует несколько копий для одной и той же версии gradle

#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, установленная в моем домашнем каталоге.

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

Когда я призываю ./gradlew команду для создания проекта. Я должен использовать gradle-2.2.1-all.zip для сборки.

Но это не так, он загрузит еще один град даже для той же версии. Итак, для версии 2.2.1-all есть два градиента. Поскольку мое подключение к Интернету происходит очень медленно, это занимает слишком много времени.

.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 

Это очень раздражает, так как он должен загрузить новый для той же версии самого времени я вызываю команду, чтобы построить свой проект.

Почему система построения града не смогла выбрать установленную?

+0

Возможный дубликат [Почему у меня есть несколько загрузок дистрибутивов градиентов?] (Http://stackoverflow.com/questions/27551540/why-do-i-have-multiple-gradle-wrapper-distributions-downloaded). .. все еще, да, раздражающая, нерешенная (пока) проблема ... – Selvin

+0

и [здесь] (http://stackoverflow.com/questions/16102319/how-can-a-specify-the-gradle-wrapper-download- location) ... я проверил одно: GRADLE_USER_HOME не определяется при запуске новой консоли (cmd) ... возможно, это проблема – Selvin

ответ

1

Это нерешенный вопрос Why Gradle download wrapper multiple times for the same version?

+0

Это не ответ на вопрос.Пожалуйста, подумайте над тем, чтобы написать собственный вопрос или комментировать этот вопрос. – anderas

+0

Извините за это, я reedit, надеюсь, это поможет. – Kassadin

+0

Гораздо лучше, удалил нижний план! – anderas

2

произошла проблема в том, что хэш-политика для загрузки URL отличается от студии gradle-wrapper.jar и последней gradle-wrapper.jar.

gradle-wrapper.jar Под моим каталогом приложений для Android (я предполагаю, что он скопирован с android-sdk-macosx/tools/templates/gradle/wrapper/gradle/wrapper/gradle-wrapper.jar) используется следующий метод для расчета хэша для 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.

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); 
    } 
} 

Волшебная строка, которую я нашел в названии каталога, представляет собой строку хеша md5 URL-адреса для загрузки.

Для версии 2.10, есть имя каталога

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

И a4w5fzrkeut1ox71xslb49gst хешируется от загрузки 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.jar) для того же URL-адрес загрузки из gradle/wrapper/gradle-wrapper.properties, не будет несколько загрузок той же версии Gradle.

Эта проблема существует только между проектом студии android и другим проектом градации.

Смежные вопросы