2017-10-06 63 views
0

我正在使用Android Studio和NDK-Build,并且它不显示单个C++文件,所以我无法调试。它只显示一个cpp-Folder和insid ethe文件夹,它显示了一些静态库,我无法进一步介绍。我记得有可能进入这些库(它们像文件夹一样打开)并查看单个cpp文件。Android Studio with NDK-Build - 不在项目导航器中显示C++文件

这是我的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' 

如果我删除以下位,在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_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 

这是如何看起来Android Studio中: enter image description here

回答

0

我一直都关了一段时间,发生了什么事的意见:)

无论如何,根据该文件,你应该有java文件夹下的CPP组的文件夹。

检查这里说明 Add C and C++ Code to Your Project

enter image description here

+0

谢谢,但我真的相信我做了该指南中的一切。查看我现在添加的截图,以便查看它是如何为我找到的。 – keyboard

相关问题