【问题标题】:Android - NDK integration is deprecated errorAndroid - NDK 集成已弃用错误
【发布时间】:2016-08-01 15:16:03
【问题描述】:

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

【问题讨论】:

    标签: android-ndk ndk-build android-ndk-r5


    【解决方案1】:

    答案在错误消息中(TL;DR: add "android.useDeprecatedNdk=true" to your 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”选项。如果您是从头开始编写项目,您可能会对实验性插件更满意。

    【讨论】:

    • 该项目没有任何 gradle.properties 我如何在 gradle.properties 中创建一个新的在文件中写入“android.useDeprecatedNDK=true”的位置
    【解决方案2】:

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

    android.useDeprecatedNdk=true
    

    【讨论】:

    • 我已经阅读了许多类似的答案。你是第一个回答明确方向的人。投票!
    【解决方案3】:

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

    并且不要在项目目录中创建任何空白。 如果您再次遇到 ndk 等错误,则构建失败。

    然后编辑 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'
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-03-21
      • 2013-08-28
      • 1970-01-01
      • 2015-11-27
      • 2015-04-27
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      • 2017-03-12
      相关资源
      最近更新 更多