更新到构建工具2.3.0后,LibraryPlugin中没有sdkHandler字段

时间:2017-03-07 09:13:14

标签: android android-ndk android-gradle

我使用此方法获取NDK目录:

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

更新com.android.tools.build:gradle2.3字段sdkHandler似乎已在删除后重命名

  

错误:没有这样的属性:类的sdkHandler:com.android.build.gradle.LibraryPlugin

是否有另一种方法可以在库模块中获取NDK目录路径?

4 个答案:

答案 0 :(得分:10)

此方法现在将返回NDK的完整路径:

project.android.ndkDirectory.absolutePath

答案 1 :(得分:1)

对我来说,解决方法是简单地设置ANDROID_NDK环境变量。 更多here

答案 2 :(得分:0)

我做了一些挖掘工作。似乎该字段仍然存在但标记为私有。

一种解决方案是使用反射。

该字段位于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())

说实话,我真的不喜欢这个解决方案。我希望找到一个更好的。

答案 3 :(得分:-2)

只需将您的gradle版本降级为2.2.3。它会解决问题