Android Studio с NDK-Build — не показывает файлы C ++ в Project Navigator

Я использую Android Studio с NDK-Build, и он не показывает отдельные файлы C ++, поэтому я не могу отлаживать. Он показывает только папку cpp-Folder и insid ethe, он показывает некоторые статические библиотеки, в которые я не могу перейти дальше. Я помню, что когда-то можно было зайти в эти библиотеки (они открывались как папки) и увидеть отдельные файлы cpp.

Вот мой файл build.gradle:

    import java.util.regex.Pattern
import com.android.build.OutputFile
import org.apache.tools.ant.taskdefs.condition.Osapply plugin: 'com.android.application'
apply plugin: 'io.fabric'task('increaseVersionCode') << {
def buildFile = file("build.gradle")
def pattern = Pattern.compile("versionCode\\s+(\\d+)")
def manifestText = buildFile.getText()
def matcher = pattern.matcher(manifestText)
matcher.find()
def versionCode = Integer.parseInt(matcher.group(1))
def manifestContent = matcher.replaceAll("versionCode " + ++versionCode + "")
buildFile.write(manifestContent)
}

// DO NOT change the build.gradle on debug builds any longer, since this will lead to debugging not work and Android Studio / Gradle crash
tasks.whenTaskAdded { task ->
if (task.name == 'generateReleaseBuildConfig' /*|| task.name == 'generateDebugBuildConfig'*/) {
task.dependsOn 'increaseVersionCode'
}
}task deleteGraphicsAssets(type: Delete) {
println 'Grade: Deleting unnecessary assets...'
delete "assets/1136p"delete "assets/2048p"}
preBuild.dependsOn deleteGraphicsAssetsandroid {
// Going higher means that we have to request to write to external storage (used for UUID): https://stackoverflow.com/questions/36084959/cant-create-a-directory-on-storage-emulated-0-on-emulator
// But GameAnalytics reqires 24, let's see if it still works this way
compileSdkVersion 22
buildToolsVersion '25.0.3' // should be 25 for newer version
defaultConfig {
applicationId "com.forestringgames.apps.towerduel"minSdkVersion 15
// Going higher means that we have to request to write to external storage (used for UUID): https://stackoverflow.com/questions/36084959/cant-create-a-directory-on-storage-emulated-0-on-emulator
// But GameAnalytics reqires 24, let's see if it still works this way
targetSdkVersion PROP_TARGET_SDK_VERSION
versionCode 1602
versionName "1.0"//        multiDexEnabled true

externalNativeBuild {
ndkBuild {
if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) {
// skip the NDK Build step if PROP_NDK_MODE is none
targets 'cocos2dcpp'
arguments 'NDK_TOOLCHAIN_VERSION=4.9'
arguments 'APP_PLATFORM=android-' + PROP_TARGET_SDK_VERSION
//                    arguments 'NDK_CCACHE='+System.getenv('NDK_CCACHE')

//                    println 'A message which is logged at QUIET level:'+System.getenv('HOME')
//                    println 'A message which is logged at QUIET level:'+System.getenv('NDK_CCACHE')
//                    println "$System.env.HOME"

def module_paths = [project.file("../../FRGEngine/cocos2d").absolutePath,
project.file("../../FRGEngine/cocos2d/cocos").absolutePath,
project.file("../../FRGEngine/cocos2d/external").absolutePath]
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
// should use '/'
module_paths = module_paths.collect { it.replaceAll('\\\\', '/') }
arguments 'NDK_MODULE_PATH=' + module_paths.join(";")
} else {
arguments 'NDK_MODULE_PATH=' + module_paths.join(':')
}

arguments '-j' + Runtime.runtime.availableProcessors()
abiFilters.addAll(PROP_APP_ABI.split(':').collect { it as String })
}
}
}
testApplicationId 'Test'
}

// only added for android debugging
externalNativeBuild {
ndkBuild {
if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) {
// skip the NDK Build step if PROP_NDK_MODE is none
path "jni/Android.mk"}
}
}

sourceSets.main {
java.srcDir "src"res.srcDir "res"jniLibs.srcDir "libs"manifest.srcFile "AndroidManifest.xml"assets.srcDir "assets"}
splits {
abi {
enable true
reset()
include 'armeabi-v7a'
//, 'armeabi',  'armeabi-v7a', 'x86'  - what about arm64? Test it with Crashlytics
universalApk false  //true
}

//        density {
//            enable true
//            reset()
//            include 'mdpi', 'hdpi', 'xhdpi', 'xxhdpi', 'xxxhdpi'
//            compatibleScreens 'small', 'normal', 'large', 'xlarge'
//
//        }
}
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 // Warning: is this a good idea?
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
if (project.hasProperty("RELEASE_STORE_FILE")) {
signingConfig signingConfigs.release
}

externalNativeBuild {
ndkBuild {
arguments 'NDK_DEBUG=0'
}
}
}

debug {
//            debuggable true
//            jniDebuggable true

externalNativeBuild {
ndkBuild {
arguments 'NDK_DEBUG=1'
}
}
}
}

}crashlytics {
enableNdk = true
androidNdkOut = 'obj'
androidNdkLibsOut = 'libs'

}

repositories {
mavenCentral()
}

dependencies {
//    compile 'com.android.support:multidex:1.0.1'
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':libcocos2dx')

//    compile project(':BaseGameUtils')
//    compile 'com.android.support:multidex:1.0.0'
compile 'com.facebook.android:facebook-android-sdk:4.8.0'
//    compile 'com.google.android.gms:play-services-auth:9.0.0'
// integration guide (with latest version numbers: https://fabric.io/downloads/gradle)
// Crashlytics KitminifyEnabled
compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
transitive = true
}
// NDK Kit
compile('com.crashlytics.sdk.android:crashlytics-ndk:1.1.6@aar') {
transitive = true
}
//    compile('com.crashlytics.sdk.android:crashlytics:2.7.0-SNAPSHOT@aar') {
//        transitive = true;
//    }
//
//    compile('com.crashlytics.sdk.android:crashlytics-ndk:1.2.0-SNAPSHOT:debug@aar') {
//        transitive = true;
//    }
compile 'net.bytebuddy:byte-buddy:1.7.3'
compile 'net.bytebuddy:byte-buddy-android:1.7.3'
//    compile 'com.google.firebase:firebase-auth:11.0.1'
compile 'com.google.android.gms:play-services-auth:11.0.0'
compile 'com.google.android.gms:play-services-games:11.0.0'
compile 'com.google.firebase:firebase-invites:11.0.0'
compile 'com.google.firebase:firebase-messaging:11.0.0'
compile 'com.anjlab.android.iab.v3:library:1.0.+'
compile files('Frameworks/Fmod/prebuilt/android/fmod.jar')
//    // use latest version instead version number: https://github.com/GameAnalytics/GA-SDK-ANDROID
//    compile 'com.gameanalytics.sdk:gameanalytics-android:3.5.0'
compile fileTree(include: ['*.jar'], dir: 'Frameworks/Jars')
//
}

apply plugin: 'com.google.gms.google-services'

Если я удаляю следующий бит, папка cpp исчезает, поэтому она определенно что-то делает … но не показывает отдельные файлы:

externalNativeBuild {
ndkBuild {
if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) {
// skip the NDK Build step if PROP_NDK_MODE is none
path "jni/Android.mk"}
}
}

Вот также Android.mk:

$(info ANDROID.MK FILE PARSING)

LOCAL_PATH := $(call my-dir)
CLASSES_PATH := $(LOCAL_PATH)/../../../Classes
PHOTON_SDK_ROOT := $(LOCAL_PATH)/../Frameworks/Photon#
#
include $(CLEAR_VARS)
#
#
$(call import-add-path,$(LOCAL_PATH)/../../../FRGEngine/cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../../FRGEngine/cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../../FRGEngine/cocos2d/cocos)

#THE TRICK IS TO ACTUALLY NOT NAME FOLDERS TWICE - IF IMPORTING FRAMEWORKS HERE - THEN IMPORT /Fmod LATER - UNDER FRAMRWORKS
$(call import-add-path,$(LOCAL_PATH)/../Frameworks)LOCAL_MODULE := cocos2dcpp_shared

LOCAL_MODULE_FILENAME := libcocos2dcpp

LOCAL_SRC_FILES := main.cpp \
gameanalytics/GameAnalyticsJNI.cpp \
$(subst $(LOCAL_PATH)/,,$(wildcard $(CLASSES_PATH)/*.cpp)) \
$(subst $(LOCAL_PATH)/,,$(wildcard $(CLASSES_PATH)/*.c)) \
$(subst $(LOCAL_PATH)/,,$(wildcard $(CLASSES_PATH)/../FrameworksCrossPlatform/libfixmath/*.c)) \
$(subst $(LOCAL_PATH)/,,$(wildcard $(CLASSES_PATH)/../FrameworksCrossPlatform/libfixmath/*.cpp)) \
$(subst $(LOCAL_PATH)/,,$(wildcard $(CLASSES_PATH)/../FrameworksCrossPlatform/ScreenLog/*.cpp)) \
$(subst $(LOCAL_PATH)/,,$(wildcard $(CLASSES_PATH)/../FrameworksCrossPlatform/PlayFabClientSDK/*.c)) \
$(subst $(LOCAL_PATH)/,,$(wildcard $(CLASSES_PATH)/../FrameworksCrossPlatform/PlayFabClientSDK/*.cpp)) \
$(subst $(LOCAL_PATH)/,,$(wildcard $(CLASSES_PATH)/../FrameworksCrossPlatform/GameAnalytics/*.cpp))LOCAL_CFLAGS += -fpermissive

ifeq ($(DISTRIBUTION_TESTING),1)
$(info ADDING DISTRIBUTION TESTING PREPROCESSOR FLAG)
LOCAL_CFLAGS += -DDISTRIBUTION_TESTING=1
endif

ifeq ($(DISTRIBUTION_LIVE),1)
$(info ADDING DISTRIBUTION LIVE PREPROCESSOR FLAG)
LOCAL_CFLAGS += -DDISTRIBUTION_LIVE=1
endif# _COCOS_HEADER_ANDROID_BEGIN

LOCAL_C_INCLUDES := $(CLASSES_PATH) \
$(CLASSES_PATH)/../FrameworksCrossPlatform/libfixmath \
$(CLASSES_PATH)/../FrameworksCrossPlatform/ConcurrentQueue \
$(CLASSES_PATH)/../FrameworksCrossPlatform/PlayFabClientSDK \
$(CLASSES_PATH)/../FrameworksCrossPlatform/ScreenLog \
$(CLASSES_PATH)/../FrameworksCrossPlatform/GameAnalytics \
$(CLASSES_PATH)/../FrameworksCrossPlatform \
$(PHOTON_SDK_ROOT) \
$(LOCAL_PATH)/../Frameworks/Fmod/lowlevel/inc \
$(LOCAL_PATH)/gameanalytics

# _COCOS_HEADER_ANDROID_ENDLOCAL_STATIC_LIBRARIES := cocos2dx_static loadbalancing-cpp-static-prebuilt photon-cpp-static-prebuilt common-cpp-static-prebuilt
LOCAL_SHARED_LIBRARIES := fmod
LOCAL_SHARED_LIBRARIES += fmodstudio

# _COCOS_LIB_ANDROID_BEGIN

include $(BUILD_SHARED_LIBRARY)

$(call import-module,.)# _COCOS_LIB_IMPORT_ANDROID_BEGIN
# _COCOS_LIB_IMPORT_ANDROID_END# PHOTON

$(call import-add-path,$(PHOTON_SDK_ROOT)/LoadBalancing-cpp/lib)
$(call import-module,loadbalancing-cpp-prebuilt)

# FMOD
#THE TRICK IS TO ACTUALLY NOT NAME FOLDERS TWICE - IF IMPORTING FRAMEWORKS HERE - THEN IMPORT /Fmod LATER - UNDER FRAMRWORKS
$(call import-module,Fmod/prebuilt/android)# _COCOS_LIB_ANDROID_END

Вот как это выглядит в Android Studio:
введите описание изображения здесь

0

Решение

Я давно не замечал, что случилось с комментариями 🙂

в любом случае, согласно этому документу у вас должна быть папка cpp group в папке java.

проверьте здесь для получения инструкций
Добавьте код C и C ++ в ваш проект

введите описание изображения здесь

0

Другие решения

Других решений пока нет …