Android工作室"Current NDK support is deprecated"

Android Studio "Current NDK support is deprecated"

截至 2015 年 1 月,NDK 对 Android studio 的支持仍然无法使用。 一条神秘的消息说:"Alternative will be provided in the future."

我想知道gradle/google这方面的方向是什么,因为目前无法规划一个合适的发展计划。

版本 0.7+:他们建议仍然使用 ndk-build / ant 版本 0.8+:他们引入了最小的 NDK 支持 版本 1.0.0:看起来 NDK 支持将成为官方 版本 1.0.2:现在似乎已弃用 NDK 支持。

我的问题是:

编辑:它不是重复的,因为它指的是 Android Studio 和 NDK 的演变,另一个问题指的是 Android Studio 的一个非常古老的版本,正如我在我的 post NDK 支持在版本之间发生了巨大变化,没有明确的方向,直到现在发布 1.3

我调用了命令行,不确定我从哪里得到的,这基本上是你的第一个选项,用手工 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

自 AndroidStudio 1.3 起将完全支持 NDK,包括本机调试。

更新自 Google I/O 2015

Android Studio v1.3 Preview - We are releasing a new version of Android Studio. Most notable is a much requested feature from our Android NDK & game developers: code editing and debugging for C/C++ code. Based on JetBrains Clion platform, the Android Studio NDK plugin provides features such as refactoring and code completion for C/C++ code alongside your Java code. Java and C/C++ code support is integrated into one development experience free of charge for Android app developers. Update to Android Studio v1.3 via the Canary channel and let us know what you think.

来自 android 开发者博客 here


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

As a part of the Android 1.3 stable release, we included an Early Access Preview of the C++ editor & debugger support paired with an experimental build plugin. See the Android C++ Preview page for information on how to get started. Support for more complex projects and build configurations is in development.

引自 android 开发者博客 here

新增功能:

  • 代码完成
  • 代码导航(去声明,在header和 实施等)
  • 快速修复
  • 意向
  • 重构
  • 源格式
  • 调试
  • ...

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

android.useDeprecatedNdk=true

在你的gradle.properties