Нет поля sdkHandler в LibraryPlugin после обновления для создания инструментов 2.3.0

Я использовал этот метод для получения каталога NDK:

project.plugins.findPlugin('com.android.library').sdkHandler.getNdkFolder()

Обновление Ater com.android.tools.build:gradle до 2.3 Поле sdkHandler похоже, было переименовано в удаленном

Ошибка: нет такого свойства: sdkHandler для класса: com.android.build.gradle.LibraryPlugin

Есть ли альтернативный способ получить путь к каталогу NDK в библиотечном модуле?

Ответ 1

Теперь этот метод вернет полный путь NDK:

project.android.ndkDirectory.absolutePath

Ответ 2

Для меня исправить было просто установить переменную среды ANDROID_NDK. Подробнее здесь.

Ответ 3

Я сделал кое-что. Кажется, что поле все еще там, но отмечено как личное.

Одним из решений было бы использовать отражение.

Поле находится в com.android.build.gradle.BasePlugin, из которого наследуется com.android.build.gradle.LibraryPlugin.

LibraryPlugin plugin = project.plugins.findPlugin('com.android.library')
Class<?> clazz = plugin.getClass().getSuperclass();
Field field = clazz.getDeclaredField('sdkHandler')
field.setAccessible(true)
SdkHandler sdkHandler = field.get(plugin)
System.out.println("Ndk location: " + sdkHandler.getNdkFolder())

Честно говоря, мне не очень нравится это решение. Я надеюсь найти лучшего.

Ответ 4

Просто снимите версию gradle до версии 2.2.3. он решит проблему