Android Studio“不推荐使用当前的 NDK 支持”

Posted

技术标签:

【中文标题】Android Studio“不推荐使用当前的 NDK 支持”【英文标题】:Android Studio "Current NDK support is deprecated" 【发布时间】:2015-03-26 07:52:42 【问题描述】:

截至 2015 年 1 月,对 android Studio 的 NDK 支持仍然无法使用。 一条神秘的消息说:“将来会提供替代方案。”

我想知道 gradle/google 在这方面的方向是什么,因为目前无法制定适当的开发计划。

版本 0.7+:他们建议仍然使用 ndk-build / ant 0.8+ 版:他们引入了最小的 NDK 支持 1.0.0 版:看起来 NDK 支持即将正式发布 1.0.2 版:现在看来 NDK 支持已被弃用。

我的问题是:

每个人都恢复到 ndk-build 和手工制作的 android.mk 文件吗?

是否有人在大型项目中使用 1.0.0+(支持 gradle ndk)当前已弃用的方法?

“未来将提供替代方案”将走向什么样的方向?有没有可能在不违反任何公司规则的情况下,任何内部人员都可以回答这个问题?

编辑:它不是重复的,因为它指的是 Android Studio 和 NDK 的演变,另一个问题指的是一个非常古老的 Android Studio 版本,正如我在我的帖子中详述的那样,NDK 支持与版本相比发生了巨大变化到没有明确方向的版本,到现在1.3的发布

【问题讨论】:

ph0b.com/android-studio-gradle-and-ndk-integration 谢谢我已经看过那个链接,但很遗憾它没有回答我的任何问题。 “NDK 对 Android Studio 的支持仍然无法使用”这只是一个警告,您是否还有其他问题使其无法使用? 这里有一点关于 gradle+ndk 的“官方”字眼:code.google.com/p/android/issues/detail?id=82187 Canary 频道的 Android Studio 1.3 现在完全支持 NDK。参考:tools.android.com/download/studio/canary/latest 【参考方案1】:

Google I/O 2015 更新

Android Studio v1.3 Preview - 我们正在发布一个新版本的 Android 工作室。最值得一提的是我们的 Android NDK 迫切需要的功能 和游戏开发者:C/C++ 代码的代码编辑和调试。基于 JetBrains Clion 平台,Android Studio NDK 插件提供 C/C++ 代码的重构和代码完成等功能 与您的 Java 代码一起。集成了 Java 和 C/C++ 代码支持 为Android应用程序免费提供一种开发体验 开发商。 通过 Canary 频道更新到 Android Studio v1.3 和 让我们知道您的想法。

来自安卓开发者博客here。


新更新 30/7/2015 -> Android Studio v1.3 发布

作为 Android 1.3 稳定版本的一部分,我们包含了一个 Early C++ 编辑器和调试器支持的访问预览与 实验性构建插件。请参阅 Android C++ 预览页面 有关如何开始的信息。支持更复杂的项目 并且构建配置正在开发中。

引自安卓开发者博客here。

新增功能

代码完成 代码导航(转到声明,在标题和 实施等) 快速修复 意图 重构 源格式 调试 ...

有关如何使用它的步骤,请查看here。

【讨论】:

【参考方案2】:

我调用命令行,不知道我从哪里得到的,这基本上是你的第一个选择,用手工制作的android.mk 恢复到ndk-build。如果您不想按产品风味控制 ndk abiFilters,那很好。

apply plugin: 'com.android.library'

android 
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

    defaultConfig 
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion

        ndk 
            moduleName "glues"
        
    

    sourceSets.main 
        jniLibs.srcDir 'src/main/libs' //set .so files location to libs
        jni.srcDirs = [] //disable automatic ndk-build call
    

    task buildNative(type: Exec, description: 'Compile JNI source via NDK') 
        def ndkDir = android.ndkDirectory
        commandLine "$ndkDir/ndk-build",
                '-C', file('src/main/jni').absolutePath, // Change src/main/jni the relative path to your jni source
                '-j', Runtime.runtime.availableProcessors(),
                'all',
                'NDK_DEBUG=1'
    

    task cleanNative(type: Exec, description: 'Clean JNI object files') 
        def ndkDir = android.ndkDirectory
        commandLine "$ndkDir/ndk-build",
                '-C', file('src/main/jni').absolutePath, // Change src/main/jni the relative path to your jni source
                'clean'
    

    clean.dependsOn 'cleanNative'

    tasks.withType(JavaCompile) 
        compileTask -> compileTask.dependsOn buildNative
    

    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        
    


dependencies 

如果我在productFlavors 上设置abiFilter,我只会看到这些警告:

productFlavors 
    x86 
        ndk 
            abiFilter "x86"
        
    
    mips 
        ndk 
            abiFilter "mips"
        
    
    armv7 
        ndk 
            abiFilter "armeabi-v7a"
        
    
    arm 
        ndk 
            abiFilter "armeabi"
        
    
    fat

注意,较旧的 gradle 插件版本使用 android.plugin.ndkFolder 而不是 android.ndkDirectory。欲了解更多信息,请参阅:http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0

【讨论】:

感谢@JoeBowbeer 的编辑建议。它被其他人拒绝了,但我在底部发表了评论,一旦我可以验证自己,我将自己合并编辑。 所以我刚刚看到你为 google @JoeBowbeer 工作,主要回答 android 问题。我想我会先应用您的编辑,然后再验证!谢谢【参考方案3】:

自 Android Studio 1.3 起将全面支持 NDK,包括本机调试。

【讨论】:

是的,我昨天也从 Google I/O 2015 上得到了这个。太棒了! @bmaupin,对不起,我的错。我得到消息的原始链接是这样的:“今天,谷歌发布了 Android Studio 1.3,这是一个新版本的 IDE,内置了对 NDK 的支持。谷歌表示该插件基于 JetBrains CLion 平台和它将免费提供给所有 Android 开发人员。” (arstechnica.com/gadgets/2015/05/…)【参考方案4】:
android.useDeprecatedNdk=true

在你的 gradle.properties 中

【讨论】:

以上是关于Android Studio“不推荐使用当前的 NDK 支持”的主要内容,如果未能解决你的问题,请参考以下文章

android studio setting 在哪

如何解决android studio2.3导入android studio2.1的问题

Android studio上找不到setting?

android studio v4包冲突

如何用android studio 编成app

如何手动升级android studio?