Android Studio"当前NDK支持已弃用"

Dad*_*ado 25 c++ android 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

Ahm*_*azy 12

来自Google I/O 2015的更新

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

从Android开发者博客来源这里.


2015年3月30日新增功能 - > Android Studio v1.3发布

作为Android 1.3稳定版的一部分,我们提供了C++编辑器和调试器支持的早期访问预览,并与实验构建插件配合使用.有关如何入门的信息,请参阅Android C++预览页面.正在开发支持更复杂的项目和构建配置. 在此输入图像描述

这里引用了Android开发者博客.

新增功能:

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

有关如何使用它的步骤,请查看此处.


wes*_*ton 6

我调用命令行,不知道我从哪里得到它,它基本上是你的第一个选择,恢复到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 {
}
Run Code Online (Sandbox Code Playgroud)

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

productFlavors {
    x86 {
        ndk {
            abiFilter "x86"
        }
    }
    mips {
        ndk {
            abiFilter "mips"
        }
    }
    armv7 {
        ndk {
            abiFilter "armeabi-v7a"
        }
    }
    arm {
        ndk {
            abiFilter "armeabi"
        }
    }
    fat
}
Run Code Online (Sandbox Code Playgroud)

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