2014-06-16 2 views
2

Недавно плагин gradle для android был обновлен (с помощью студии android), после чего предыдущий путь доступа к каталогу SDK перестает работать. ВыражениеПолучение каталога Android SDK в задаче о градиенте

${android.plugin.sdkDirectory} 

, который работал в старой версии теперь возвращает ошибку

Error:(42, 0) No such property: sdkDirectory for class: com.android.build.gradle.LibraryPlugin 

Что бы правильный способ получить андроид каталога SDK используется, предпочтительно, независимо от конфигурации пользователя, таких как плагин и версия градиента? Сценарий должен быть доступен для нескольких пользователей.

ответ

4

Поскольку все предыдущие ответы зависят от окружающей среды или конкретного вмешательства пользователя в верхней части нормальной конфигурации, Я просто напишу свое технически грязное решение.

if (android.hasProperty('plugin')) { 
    if (android.plugin.hasProperty('sdkHandler')) { 
     androidPath = android.plugin.sdkHandler.sdkFolder 
    } else { 
     androidPath = android.plugin.sdkDirectory 
    } 
} else { 
    androidPath = android.sdkDirectory 
} 

В отличие от всех предыдущих методов, это действительно работает, но по-прежнему выглядит хаки.

+0

К сожалению, это не работает уже с Android Gradle Plugin v. 1.1.3. Свойство android.plugin теперь отсутствует. – ohaleck

+0

Любые решения для плагина Gradle версии 1.1.3? – FoY

+1

Используйте 'android.sdkDirectory' (без' .plugin') в этом случае. Я соответствующим образом обновил ответ. – sschuberth

0

Вы можете использовать

$System.env.ANDROID_HOME 
+0

Как записано, выдается синтаксическая ошибка. Исправление примера для чтения 'println '$ {System.env.ANDROID_HOME}"; 'возвращает' null', потому что поведение по умолчанию для студии Android - это установить путь через local.properties, и я особенно искал что-то независимое от конфигурации , – Combuster

4

В gradle.properties установленном месте sdkdir=/home/user/android-sdk, а затем в Gradle вы можете использовать $sdkdir

2

Я использую Android Gradle плагин v1.2.3 и это работает отлично:

${android.sdkDirectory} 
0

экспорт ANDROID_HOME =/ххх/ххх/в оболочке, а затем использовать его в System.env.ANDROID_HOME Gradle файле.

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