【问题标题】:No sdkHandler field in LibraryPlugin after updating to build tools 2.3.0更新为构建工具 2.3.0 后,LibraryPlugin 中没有 sdkHandler 字段
【发布时间】:2017-07-27 10:06:00
【问题描述】:

我是用这个方法来获取NDK目录的:

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

在将com.android.tools.build:gradle 更新为2.3 之后,sdkHandler 字段似乎已在删除时重命名

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

有没有其他方法可以在库模块中获取 NDK 目录路径?

【问题讨论】:

    标签: android android-ndk android-gradle-plugin


    【解决方案1】:

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

    project.android.ndkDirectory.absolutePath
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          我已经进行了一些挖掘。似乎该字段仍然存在,但标记为私有。

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

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

          说实话,我不太喜欢这种解决方案。希望能找到更好的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-02
            • 1970-01-01
            • 2020-03-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多