无法使用android studio 2.1.2导入stl标头

时间:2016-06-27 08:15:04

标签: android-studio android-ndk

我的android studio 2.1.2有问题 我想用c ++编写一些代码。在Gradle中,我插入以下代码。

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.2"

defaultConfig {
    applicationId "com.example.glm.lichtschnitt"
    minSdkVersion 21
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    renderscriptTargetApi 19

    ndk {
        moduleName "Verarbeitungs-lib"
        ldLibs "log"
        cFlags "-pthread -frtti -fexceptions -std=c++11 -std=c11"

        stl "c++_static"

    }
    sourceSets.main {
        jni.srcDirs = ["src/main/jni"]
        //jniLibs.srcDir
    }
}





buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        ndk {
            debuggable = true
        }
    }
    debug {
        debuggable = true
        jniDebuggable = true
    }
}
sourceSets { main { java.srcDirs = ['src/main/java', 'src/main/java/swig'] } }
  }

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

在studio 1.5中我可以导入所有标题,如“vector.h”或“list.h” 在2.1.2中,我没有代码完成。我可以编译它,但android studio没有代码完成或其他东西,以便用stl头文件更好地编写代码。

这是一个错误还是我能做些什么来完成代码。 1.5我在android 6.0.1上有本机调试问题,这就是我要求2.1.2的原因。

我使用最新的nkd 12.我也尝试了ndk 10.同样的问题。

感谢

1 个答案:

答案 0 :(得分:1)

根据这个issue,他们还没有修复它。 Android工作室仍然无法理解任何头文件。 我遇到同样的麻烦。您可以尝试更改

sourceSets.main {jni.srcDirs = ["src/main/jni"]}

sourceSets{main{jni{srcDirs = []}}}

但它不会解决所有问题

<强>更新

由于Google制作了Android Studio 2.2的一些预览版本,因此对本机代码(CMake,Android.mk makefile,ndk-build)的不同构建系统提供了安静的良好支持

现在我使用带有CMake的AS 2.2预览版6,我对链接代码或其他内容没有任何麻烦。本机调试器仍然存在问题,但我认为,我做错了。

例如,要使用Cmake,您可以在以下行中添加gradle脚本:

defaultConfig {
    externalNativeBuild {
        cmake {
            abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a'
        }
    }

externalNativeBuild {
    cmake {
        path 'src/main/cpp/CMakeLists.txt' //this is path to you build script
    }
}

所以,如果你不害怕AS的非发行版本,你可以使用它,它对本机代码来说已经足够了