J'utilise Android Studio avec NDK-Build et il n'affiche pas les fichiers C++, donc je ne peux pas déboguer. Il montre seulement un dossier cpp-Folder et insid ethe dossier il montre certaines bibliothèques statiques, que je ne peux pas aller plus loin. Je me souviens qu'il était autrefois possible d'aller dans ces bibliothèques (elles s'ouvraient comme des dossiers) et de voir les fichiers cpp uniques.Android Studio avec NDK-Build - N'affiche pas les fichiers C++ dans Project Navigator
Voici mon fichier build.gradle:
import java.util.regex.Pattern
import com.android.build.OutputFile
import org.apache.tools.ant.taskdefs.condition.Os
apply 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 deleteGraphicsAssets
android {
// 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:[email protected]') {
transitive = true
}
// NDK Kit
compile('com.crashlytics.sdk.android:crashlytics-ndk:[email protected]') {
transitive = true
}
// compile('com.crashlytics.sdk.android:crashlytics:[email protected]') {
// transitive = true;
// }
//
// compile('com.crashlytics.sdk.android:crashlytics-ndk:1.2.0-SNAPSHOT:[email protected]') {
// 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'
Si je supprime le bit suivant, le cpp-dossier est parti - il ne certainement quelque chose ... mais pas montrer les fichiers individuels:
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"
}
}
}
est ici aussi le 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_END
LOCAL_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
C'est à quoi il ressemble dans Android studio:
Merci, mais je crois en fait je l'ai fait tout dans ce guide. Découvrez la capture d'écran que j'ai ajoutée maintenant, afin que vous puissiez voir à quoi il ressemble. – keyboard