1

我正在尝试从 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>请帮助我导入该项目。

4

3 回答 3

7

答案在错误消息中(TL;DR: add "android.useDeprecatedNdk=true" to your gradle.properties),但如果你不熟悉历史,它可能并不明显。

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

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

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

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

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

于 2016-04-11T14:27:07.663 回答
2

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

android.useDeprecatedNdk=true
于 2016-06-28T13:42:44.740 回答
1

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

并且不要在项目目录中留出任何空白。如果您再次遇到错误,例如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'
    }
}
于 2018-08-21T10:57:34.740 回答