Intereting Posts
Измерение ширины текста на Canvas (Android) Логарифмическая печать «имя интерфейса: null» во время вызова метода выполнения DefaultHttpClient Adb shell dumpsys iphonesubinfo не работает с Android 5.0 Lollipop Рисование LinearLayout с закругленными углами Picasso продолжает перезагружать изображения, прокручивая вверх в списке, медленно загружается Маскирование (обрезка) изображения в кадре Как получить доступную / свободную память от АБР? Loader и LoaderManager – как определить, активен ли текущий загрузчик и работает ли он? Ошибка java.lang.IndexOutOfBoundsException: недопустимый индекс 0, размер 0 в моей программе android INSTALL_FAILED_CPU_ABI_INCOMPATIBLE на устройстве с использованием intellij Android – Получение звука для воспроизведения через динамик Пользовательская обработка ошибок с помощью дооснащения Соответствующий клиент не найден для имени пакета (Google Analytics) – несколько продуктовFlavors & buildTypes Как переопределить фильтр в ArrayAdapter от android? Активность с прозрачным фоном

Правильный способ использования переменных среды системы в gradle с помощью Android Studio

Я использую Android Studio для создания моего проекта в системе Ubuntu 14.04.

Я написал следующее в моих файлах build.gradle, чтобы избежать hardcoding storeFile, storePassword, keyAlias ​​и keyPassword в моем git-репо:

signingConfigs { debug { storeFile file(System.getenv("KEYSTORE")) storePassword System.getenv("KEYSTORE_PASSWORD") keyAlias System.getenv("KEY_ALIAS") keyPassword System.getenv("KEY_PASSWORD") } 

Но ошибки синхронизации градации следующие: Error:(49, 0) Neither path nor baseDir may be null or empty string. path='null' basedir='./pathto/TMessagesProj' Error:(49, 0) Neither path nor baseDir may be null or empty string. path='null' basedir='./pathto/TMessagesProj'

Мой .bashrc содержит: source ~/.gradlerc и my ~ / .gradlerc содержит следующее:

 export KEYSTORE="/home/myname/keystore/mykey" export KEYSTORE_PASSWORD='mypass' export KEY_ALIAS='mykey' export KEY_PASSWORD='keypass' 

Я подтвердил, что эти переменные правильно импортированы оболочкой. Однако я не уверен, почему он не получен в среде сборки в Android Studio.

Каков правильный способ использования переменных окружения в градиенте?

Solutions Collecting From Web of "Правильный способ использования переменных среды системы в gradle с помощью Android Studio"

Мне также нравится иметь свою информацию о хранилище ключей для переменных окружения, а не иметь его внутри проекта. Ваш код кажется прекрасным, но у меня была такая же проблема с файловым путем. Я решил это, преобразовывая это значение в строку перед передачей его в file() :

 signingConfigs { debug { storeFile file(String.valueOf(System.getenv("KEYSTORE"))) storePassword System.getenv("KEYSTORE_PASSWORD") keyAlias System.getenv("KEY_ALIAS") keyPassword System.getenv("KEY_PASSWORD") } 

Надеюсь это поможет.

Создайте файл gradle.properties в исходной папке (вместе с build.gradle ), чтобы применить только к текущему проекту или в ~/.gradle/gradle.properties чтобы применить в общесистемном отношении содержимое:

 keystore=/home/myname/keystore/mykey keystore_password=mypass key_alias=mykey key_password=keypass - keystore=/home/myname/keystore/mykey keystore_password=mypass key_alias=mykey key_password=keypass 

Теперь обновите файл build.gradle с помощью:

 debug { storeFile file("${keystore}") storePassword "${keystore_password}" keyAlias "${key_alias}" keyPassword "${key_password}" } 

При желании вы можете передать параметры из командной строки с опцией -P . Например, ./gradlew assemble -Pkey_password=keypass .