Android - NDK 集成已弃用错误

Android - NDK integration is deprecated error

我正在尝试从 github 导入一个名为 android-netspoof 的项目,我是 NDK 平台工具的新手,对此我一无所知。我已经下载了 NDK 并解压了 zip ,并在环境变量中添加了路径。我想导入该项目进行学习,但出现此错误 Error:(12, 0) Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental. Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration. <a href="openFile:C:\Users\Shreyash-2107\Desktop\android-netspoof-1.9.01111111\app\build.gradle">Open File</a> 请帮助我导入该项目。

答案在错误消息中(TL;DR:将 "android.useDeprecatedNdk=true" 添加到您的 gradle.properties),但如果您不熟悉历史,它可能并不明显。

曾几何时,Android 工具团队发布了支持 NDK 的 Gradle 插件版本。但是 Gradle 不是很擅长编译 C++,所以支持并不是他们所希望的一切。

然后 Gradle 决定添加非常好的 C++ 支持。只有一个问题:C++ 与 Java 确实不同,Gradle 团队意识到他们以 Java 为中心的对象模型无法胜任这项任务。所以他们发明了一个 new object model(顺便说一句,这似乎是一个更好的设计。)不幸的是,新的对象模型已经花了一段时间来孵化并且仍然(截至 2016 年 4 月)尚未正式发布。

这让 Android Studio 处于尴尬的境地。尝试将 C++ 支持硬塞进旧的 Gradle 模型似乎没有多大意义,但与此同时,在新模型稳定之前它不能转移到新模型。临时解决方案是暂时继续走稳定的道路,但也提供一个与 Gradle 的新实验模型一起工作的插件。

考虑到这一点,您可以评估错误消息为您提供的两个选项。一种是通过将 "android.useDeprecatedNDK=true" 添加到您的 gradle.properties 文件来继续使用旧的 NDK 支持。另一种是使用experimental plugin,这需要您对当前项目进行大量更改。

听起来您正在尝试编译一个不是您编写的现有项目,并且该现有项目有一个使用旧 NDK 支持的构建脚本。所以您可能会想要使用 "useDeprecatedNDK" 选项。如果您是从头开始编写项目,您可能会对实验性插件感到满意。

要允许 Android Studio 构建应用程序,请将文件名 gradle.properties 添加到包含以下行的 platform\android 文件夹:

android.useDeprecatedNdk=true

DeprecatedNdk 不再受 Android 支持。 要成功构建项目 删除android.useDeprecatedNdk=true

并且不要在项目目录中制作任何白色space。 如果你再次遇到类似 ndk build failed.

的错误

然后编辑 build.gradle(Module:app) 并像我一样添加这些行。

 buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
sourceSets { main { jni.srcDirs = ['src/main/jni/','src/main/jniLibs/'] } }
externalNativeBuild {
    ndkBuild {
        path 'build/intermediates/ndk/debug/Android.mk'
    }
}