【问题标题】:How to set NDK_PROJECT_PATH in Android Studio如何在 Android Studio 中设置 NDK_PROJECT_PATH
【发布时间】:2017-03-15 08:43:32
【问题描述】:

我对 NDK 调试非常陌生,我正在尝试构建用于调试的 cpp 代码。

这就是我的 Application.mk 文件的外观:

APP_STL := stlport_static
APP_MODULES := abc xyz
APP_CFLAGS += -fno-rtti -fexceptions
APP_ABI := armeabi armeabi-v7a
NDK_TOOLCHAIN := arm-linux-androideabi-4.9

我收到以下错误,我已经尝试了 ndk 工具中的所有工具链,我错过了什么?

更新: 我意识到 NDK_PROJECT_PATH 设置为 null ,当从 Android Studio 运行构建时。我能跑

ndk-build -C 从终端。

其实我的最终目标是能够通过设置断点来调试原生 c++ 文件。

所以目前的情况: 我在 xyz 文件夹中有本机代码,其中包含 android.mk 和 application.mk 的 jni 文件夹

我可以在这个文件夹中运行 ndk-build 并获取 .so 文件,我手动将其复制粘贴到我的 android 应用程序(比如 appB)的 jnilibs 文件夹中:

这是 appB 的 gradle:

apply plugin: 'com.android.library'

android {

    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        minSdkVersion 13
        targetSdkVersion 13
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    //compile 'junit:junit:4.12'
    // compile 'com.android.support:appcompat-v7:24.1.1'
}

后来我将此应用程序用作另一个应用程序的依赖项,例如 appA。

这是appA的gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0'
    }
}

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"

    defaultConfig {
        applicationId "*****"
        minSdkVersion 14
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
repositories{
    mavenCentral()
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.0.0'
    compile 'com.android.support:design:24.0.0'
    compile 'com.android.support:support-v4:24.0.0'
    compile 'com.android.support:recyclerview-v7:24.0.0'
    compile 'com.android.support:cardview-v7:24.0.0'
    compile 'com.android.support:preference-v14:24.1.0'
    compile project(':appB')
}

我需要能够调试, appA(我可以) appB(我可以) 本机代码作为 .so 包含在 appB 中(我还不知道如何) aap

【问题讨论】:

标签: android c++ android-ndk


【解决方案1】:

在您的项目文件夹中会有一个 local.properties 文件,可以从中配置 sdk 和 ndk 路径。通常该文件具有 sdk 目录路径,您可以使用 keywork ndk.dir 配置您的 ndk 路径。例如

sdk.dir=YOUR_PATH_TO_SDK  ( sdk.dir= /home/Android/Sdk)
ndk.dir=YOUR_PATH_TO_SDK ( ndk.dir= /home/Android/Sdk/ndk-bundle)

【讨论】:

  • 他问的是 NDK_PROJECT_PATH 而不是 NDK_DIR
【解决方案2】:

您可以将 Android Studio 更新到 2.2.2,并使用菜单 File-> Link C++ Project with Gradle。 官方ndk示例可以在here找到!

【讨论】:

  • 我从 2 天以来一直在尝试这样做,我在 application.mk 中有多个 APP_MODULES 但我的 app-debug.apk 中的所有模块都没有得到 .so
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-17
  • 2018-07-14
  • 1970-01-01
  • 2022-12-10
相关资源
最近更新 更多