Android Studio“当前NDK支持已弃用”

时间:2015-01-27 16:10:29

标签: android c++ build gradle android-ndk

截至2015年1月,NDK对Android工作室的支持仍无法使用。 一条神秘的信息说:"将来会提供替代方案。"

我想知道这方面的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

4 个答案:

答案 0 :(得分:12)

从Google I / O 2015更新

  

Android Studio v1.3预览 - 我们正在发布新版Android   工作室。最值得注意的是我们的Android NDK 中要求很高的功能   &安培;游戏开发人员: C / C ++代码的代码编辑和调试。基于   JetBrains Clion平台,Android Studio NDK插件提供   C / C ++代码的重构和代码完成等功能   与您的Java代码一起。集成了Java和C / C ++代码支持   为Android应用程序免费提供一个开发体验   开发人员。 通过Canary频道更新到Android Studio v1.3   让我们知道你的想法。

来自Android开发者博客here的来源。

2015年7月30日新更新 - > Android Studio v1.3已发布

  

作为Android 1.3稳定版的一部分,我们加入了Early   访问预览的C ++编辑器&调试器支持与。配对   实验构建插件。请参阅Android C ++预览页面   有关如何入门的信息。支持更复杂的项目   和构建配置正在开发中。   enter image description here

引自android开发者博客here

新增功能

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

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

答案 1 :(得分:5)

我调用了命令行,不知道我从哪里得到它,它基本上是你的第一个选项,用手工ndk-build恢复为android.mk。如果您不想按产品风格控制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 {
}

如果我在abiFilter上设置productFlavors

,我才会看到这些警告
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

答案 2 :(得分:4)

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

答案 3 :(得分:0)

android.useDeprecatedNdk=true
你的gradle.properties中的