Android Studio 本机调试不工作,始终显示 "This file is not part of the project"

Android Studio native debugging not working, always showing "This file is not part of the project"

我向 Android Studio 添加了一个 gradle 项目。 之前的项目是这样构建的:首先调用一个python脚本,脚本会调用ndk-build构建一个.so,然后调用gradle脚本归档一个.apk。

导入到 Android Studio 后,我将一个 externalNativeBuild 块添加到 build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion '25.0.0'

    defaultConfig {
        applicationId "org.cocos2dx.Game"
        minSdkVersion 19
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        externalNativeBuild {
            ndkBuild {
                abiFilters "x86"
                arguments "-j3"
            }
        }
    }

    sourceSets.main {
        java.srcDir "src"
        res.srcDir "res"
        jniLibs.srcDir "libs"
        manifest.srcFile "AndroidManifest.xml"
        assets.srcDir "assets"
    }

    signingConfigs {

       release {
            if (project.hasProperty("RELEASE_STORE_FILE")) {
                storeFile file(RELEASE_STORE_FILE)
                storePassword RELEASE_STORE_PASSWORD
                keyAlias RELEASE_KEY_ALIAS
                keyPassword RELEASE_KEY_PASSWORD
            }
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            if (project.hasProperty("RELEASE_STORE_FILE")) {
                signingConfig signingConfigs.release
            }
        }
        debug {
            debuggable true
            jniDebuggable true
            externalNativeBuild {
                ndkBuild {
                    cFlags "-DDEBUG=1"
                }
            }
        }
    }
    externalNativeBuild {
        ndkBuild {
            path "jni/Android.mk"
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile project(':libcocos2dx')
}

task cleanAssets(type: Delete) {
    delete 'assets'
}
task copyAssets(type: Copy) {
    from '../../Resources'
    into 'assets'
}

clean.dependsOn cleanAssets
preBuild.dependsOn copyAssets

工程编译安装成功,run.But当信号发生时,stack中的所有函数名都是灰色的,点击函数无法定位到c++代码(但是函数名是对的).如果手动打开代码,它总是在代码顶部显示"This file is not part of the project"。

我很确定 C++ 代码编译得很好,这是怎么发生的?

自己修好了。 我将 NDK 版本从 9b 更改为 13,问题解决了。 没有人告诉我这件事,我尝试了一切,最后发现解决方案是如此简单。所以我post这个答案,以防万一我可以节省其他人的时间。

错误报告不会告诉您 "go and upgrade the NDK",但如果发生奇怪的事情,请先尝试此操作。在这种情况下,我认为是因为ndk工具链中的一些错误,这些错误在高版本中被修复了。