Прошло некоторое время с тех пор, как появился обновленный ответ, поэтому я решил обновить его, так как произошла смена настроек файла лицензии DexGuard.
Я только что обновил версию Android Studio с 2.2.3 до 2.3, а также обновил версию Gradle с 2.14.1 до 3.3. При обновлении до Gradle версии 3.3, я получил ту же ошибку, что был задокументирован OP:
Can't find a DexGuard license file.
You should place your license file dexguard-license.txt
1) in a location defined by the Java system property 'dexguard.license',
2) in a location defined by the OS environment variable 'DEXGUARD_LICENSE',
3) in your home directory,
4) in the class path, or
5) in the same directory as the DexGuard jar.
Моя конфигурация DexGuard работает нормально, используя Gradle версию 2.14.1 с моим dexguard-license.txt файл в том же как банку DexGuard (предложение № 5).
Оказывается, что документация для DexGuard гласит следующее:
Note: when using Gradle 3.1+, the license file will not be found anymore when placed in the same directory as the DexGuard plugin jar.
(Источник: DexGuard 7.3.10 документация -> Quick Start -> Настройка файл лицензии)
Я хотел сохраните файл лицензии в том же каталоге, что и банкомат DexGuard, поэтому я внедрил предложение №1. Я сделал это, добавив следующую строку в файл gradle.properties моего проекта:
systemProp.dexguard.license=./app/libs/Dexguard_7_3_10
Заметим, что мой DexGaurd банку и мои dexguard-license.txt файлы находятся в следующем каталоге: {папке проекта}/приложение/libs/DexGuard_7_3_10/
Я пошел с этим решением, поскольку я не только строил локально, но и на Jenkins CI. Это решение не позволяет мне выполнять какие-либо изменения на самом сервере сборки (т. Е. Локальная переменная среды, копирование файлов на домашний каталог сервера или параметры пути класса). Я надеюсь, что это поможет кому-то другому, который наткнулся на эту проблему и находит сообщение об ошибке запутанным.
Спасибо за информацию, вы можете рассказать мне информацию о точке (1) ... местоположении, определяемом системным свойством Java – San
Так что системное свойство JVM можно установить в командной строке, хотя для Android, скорее всего, вы захотите для установки в gradle следующим образом: 'systemProperties ['dexguard.license'] = './location/of/my/dexguard-license.txt'' – scottyab
, где я добавляю эту строку в файл градимента – San