2017-10-06 19 views
0

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: enter image description here

Répondre

0

Ive été hors un certain temps, ce qui est arrivé aux commentaires :)

de toute façon, selon ce document, vous devez avoir le dossier du groupe cpp dans le dossier java.

vérifier ici pour des instructions Add C and C++ Code to Your Project

enter image description here

+0

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