Я добавляю проект 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 ++ (но имя функции правильное). Если открыть код вручную, он всегда показывает «Этот файл не является частью проекта» поверх кода.
Я почти уверен, что коды с ++ хорошо скомпилированы. Как это случилось?