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'
}
}
我正在尝试从 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'
}
}