Самостоятельная отладка Android Studio не работает, всегда отображается «Этот файл не является частью проекта» - PullRequest
0 голосов
/ 04 сентября 2018

Я добавляю проект gradle в Android Studio. Ранее проект строился следующим образом: сначала вызовите скрипт на 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

Проект успешно скомпилирован, установлен и запущен. Но когда появляется сигнал, все имена функций в стеке окрашены в серый цвет. При щелчке по функции невозможно перейти к коду C ++ (но имя функции правильное). Если открыть код вручную, он всегда показывает «Этот файл не является частью проекта» поверх кода.

Я почти уверен, что коды с ++ хорошо скомпилированы. Как это случилось?

1 Ответ

0 голосов
/ 14 сентября 2018

Исправил это сам. Я изменил версию NDK с 9b на 13, проблема решена. Никто не говорит мне об этом, я попробовал все и, наконец, нашел решение было так просто. Поэтому я публикую этот ответ, на всякий случай, если смогу сэкономить чужое время.

В отчете об ошибке не будет сказано "иди и обнови NDK", но если что-то случится, попробуйте сначала. В этом случае, я думаю, это из-за некоторых ошибок в ndk toolchain, которые исправлены в более высокой версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...