当前位置: 首页 > 知识库问答 >
问题:

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

翁文康
2023-03-14

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

我想知道gradle/google在这方面的方向是什么,因为目前不可能计划一个合适的开发计划。

版本0.7:他们建议仍然使用ndk-build / ant版本0.8:他们已经引入了最低限度的ndk支持版本1.0.0:看起来NDK支持将成为正式版本1.0.2:现在看起来NDK支持已被否决。

我的问题是:

>

  • 每个人都在恢复ndk构建和手工制作android.mk文件吗?

    有人在大型项目中使用目前在1.0.0 (gradle ndk支持)上被否决的方法吗?

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

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

  • 共有3个答案

    公西志文
    2023-03-14

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

    栾景胜
    2023-03-14

    我调用了命令行,不知道从哪里得到的,这基本上是您的第一个选项,使用手工制作的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

    万俟玉书
    2023-03-14

    Android Studio v1.3预览版-我们正在发布新版本的Android Studio。最值得注意的是我们的Android NDK中一个非常受欢迎的功能

    来源于android开发者博客。

    引用自Android开发者博客。

    新增功能

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

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

     类似资料:
    • 我想知道Gradle/Google在这方面的方向是什么,因为目前不可能规划一个适当的开发计划。 版本0.7+:他们建议仍然使用ndk-build/ant版本0.8+:他们已经引入了最小的NDK支持版本1.0.0:看起来NDK支持将成为正式版本1.0.2:现在看来NDK支持不推荐使用了。 我的问题是: > 每个人都恢复到ndk-build和手工制作的Android.mk文件了吗? “将来会提供另一种

    • /home/ndqa/opt/android-sdk/ndk-bundle/build/core/add-application.mk:178:***不再支持Android ndk:APP_STL gnustl_shared。请切换到C++_Static或C++_Shared。有关更多信息,请参见https://developer.android.com/ndk/guides/cpp-suppor

    • 我的应用程序在Android N上运行良好,但在Android M上时崩溃: 奇怪的是,我甚至没有编辑任何与我的应用程序的主题有关的东西,所以这个错误非常奇怪: 致命异常:main Process:com.curlybraceApps.ruchir.Rescuer,PID:20394 java.lang.runtimeException:无法启动活动ComponentInfo{com.curlyb

    • 问题内容: 我想要 与 ndk库 不同的 字符串 值 。因为我有两个风味演示和现场直播,所以我想为演示风味和实时风味值“你好,我来自演示”,我想“我来自现场” 这是我的java文件代码 } 这是我的cpp文件代码 这是我的build.gradle文件 我已经在演示文件夹以及主文件夹中粘贴了相同的cpp文件,但是可以实现我的任务。任何帮助将不胜感激,这是一些参考链接 https://develope

    • 问题内容: 我遇到此错误: java.lang.UnsupportedOperationException:当前平台不支持桌面API 我会从Java应用程序中打开文件。我使用这种方法: 我怎么解决这个问题? 问题答案: 基本上,问题是Java桌面集成在Linux上无法很好地工作。 它旨在与Windows配合使用。某些东西可以在其他系统上运行,但是没有人真正关心为这些系统添加适当的支持。即使安装了必

    • 19小于arm64(21)的最小平台 有什么办法可以解决这个问题吗?