2014-06-20 21 views
9

Non sono riuscito a trovare alcun libro di cucina/tutorial su come compilare debug per creare un progetto cocos2d-x 3.1 per Android e come eseguire il debug direttamente sul dispositivo. Si prega di aiutare indicando i passaggi.Come eseguire il debug del codice nativo cocos2d-x 3 sul dispositivo Android

quello che faccio e che problemi ho:

  • cd proj.android
  • cocos compile -p android -m debug --ndk-mode NDK_DEBUG=1 (a costruire con le informazioni di debug)
  • cocos run -p android -m debug da implementare sul dispositivo
  • run app sul dispositivo
  • cd jni
  • ndk-gdb

e ottengo questo errore:

Nareks-MacBook-Pro:jni Narek$ ndk-gdb 
jni/Android.mk:67: *** Android NDK: Aborting. . Stop. 
ERROR: The device does not support the application's targetted CPU ABIs! 
     Device supports: armeabi-v7a armeabi 
     Package supports: Android NDK: 

Into Application.mk ho aggiunto:

APP_ABI := armeabi armeabi-v7a 
APP_PLATFORM := android-10 

ma non ha aiutato. Cosa faccio di sbagliato?

EDIT: Aggiunta risultato di ndk-build DUMP_APP_ABI comando chiamato in progetti jni directory:

Nareks-MacBook-Pro:jni Narek$ ndk-build DUMP_APP_ABI 
Android NDK: /Users/Narek/NoorGames/Games/test2/proj.android/jni/Android.mk: Cannot find module with tag '.' in import path  
Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?  
Android NDK: The following directories were searched:  
Android NDK:   
/Users/Narek/NoorGames/Games/test2/proj.android/jni/Android.mk:67: *** Android NDK: Aborting. . Stop. 
+0

È possibile verificare se sono presenti file OBJ generati per i rispettivi ABI in 'proj.android \ obj \ local \ armeabi' e' proj.android \ obj \ local \ armeabi-v7a'directory? –

+0

@VikasPatidar in quelle directory ho alcuni file '.a' e' .so' ('libcocos2d.a, libcocos2dcpp.so, libbox2d.a') e anche due directory:' objs' e 'objs_debug'. In ognuna di queste directory ho le seguenti directory 'box2d_static, cocos2dcpp_shared, cocos_extension_static ...'. A sua volta in queste directory ci sono file oggetto di altre directory con file oggetto. È corretto? – Narek

+0

usa 'ndk-build DUMP_APP_ABI' per trovare l'ABI corretto e poi cambialo in' Application.mk' Assicurati anche che 'APP_PLATFORM' sia uguale a quello in esecuzione sul dispositivo. per esempio. android-10 è per Android 2.3.3 è la versione del dispositivo in esecuzione quindi aggiorna anche 'AndroidManiefest.xml' per correggere le versioni target e minime. Impostali come 'android: minSdkVersion =" 10 "android: targetSdkVersion =" 10 "' Mantieni entrambi uguali. Ho provato con la versione 3.0 di cocos2dx con NDK-r9d in Eclipse. –

risposta

23

Ecco il tutorial step-by-STET per eseguire il debug cocos2d-x 3.x sul dispositivo Android. Correggi o ottimizza i miei passaggi se lo fai in modo migliore.

  1. cd proj.android
  2. cocos compile -p android -m debug --ndk-mode NDK_DEBUG=1 (per costruire con le informazioni di debug)
  3. cocos run -p android -m debug per distribuire il dispositivo (a volte ricostruzioni, e non so perché). Questo comando disinstalla la precedente installazione, installa la nuova ed esegue l'app sul dispositivo.
  4. assicurarsi in proj.android/libs/armeabi directory di avere i seguenti file gdb.setup, gdbserver, libcocos2dcpp.so
  5. anche fare in modo che nel /proj.android/jni/obj/local/armeabi directory avete app_process, gdb.setup, libc.so, linker
  6. ndk-gdb (importante! Questo dovrebbe essere chiamato nella directory progetti, non in jni directory)

Se ha funzionato allora congratulazioni! Ma in questo passaggio potresti vedere questo messaggio di errore:

Nareks-MacBook-Pro:proj.android Narek$ ndk-gdb 
jni/Android.mk:67: *** Android NDK: Aborting. . Stop. 
ERROR: The device does not support the application's targetted CPU ABIs! 
     Device supports: armeabi-v7a armeabi 
     Package supports: Android NDK: 

Non preoccuparti :). Vediamo ciò che è sbagliato:

  1. qui è il risultato di ndk-build DUMP_APP_ABI comando chiamato in jni directory del progetto:

    Nareks-MacBook-Pro: jni Narek $ NDK-costruire DUMP_APP_ABI Android NDK:/Users/Narek/NoorGames/Giochi/test2/proj.android/jni/Android.mk: impossibile trovare il modulo con il tag '.' nel percorso di importazione
    NDK Android: sei sicuro che la tua variabile NDK_MODULE_PATH sia definita correttamente?
    Android NDK: Le seguenti directory sono stati cercata:
    Android NDK:
    /Users/Narek/NoorGames/Games/test2/proj.android/jni/Android.mk:67: *** Android NDK: Interruzione. . Stop.

Come si può vedere NDK_MODULE_PATH mancante. Per ottenere il valore fai quanto segue. Vai al punto in cui hai compilato il codice. In primo Linse di esecuzione del comando cocos compile -p android -m debug --ndk-mode NDK_DEBUG=1 si può vedere qualcosa di simile:

Runing command: compile 
Building mode: debug 
building native 
NDK build mode: NDK_DEBUG=1 
The Selected NDK toolchain version was 4.8 ! 
running: '/Users/Narek/NoorGames/android-ndk-r9d/ndk-build -C /Users/Narek/NoorGames/Games/test2/proj.android -j1 NDK_MODULE_PATH=/Users/Narek/NoorGames/Games/test2/proj.android/../cocos2d:/Users/Narek/NoorGames/Games/test2/proj.android/../cocos2d/cocos:/Users/Narek/NoorGames/Games/test2/proj.android/../cocos2d/external' 
  1. copia dal registro di sopra si vede il valore necessario di NDK_MODULE_PATH. Esegui il seguente comando export NDK_MODULE_PATH=/Users/Narek/NoorGames/Games/test2/proj.android/../cocos2d:/Users/Narek/NoorGames/Games/test2/proj.android/../cocos2d/cocos:/Users/Narek/NoorGames/Games/test2/proj.android/../cocos2d/external (stai attento a copiare il tuo percorso non mio)

Ecco fatto. Ora esegui il gioco sul dispositivo, cd proj.android, chiama ndk-gdb e dovresti riuscire a eseguire il debug con gdb.

Ho cercato personalmente questo tipo di tutorial già da più di 20 giorni. Spero ti piaccia già il tuo debugging. :) E grazie a @VikasPatidar per il tuo aiuto con il passaggio ndk-build DUMP_APP_ABI!


Edit1: come commentato Vikas è possibile aggiungere NDK_MODULE_PATH in Android.mk file in questo modo:

NDK_MODULE_PATH := $(LOCAL_PATH)/../../../../cocos 
NDK_MODULE_PATH += $(LOCAL_PATH)/../../../../external 

EDIT2: Se la vostra applicazione è schiantato qui è un modo molto potente e facile per indagare il problema impedendo il debug diretto:

adb logcat | $NDK_ROOT/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi 

Stampa il dump dello schianto.

+4

Grazie per questo, specialmente l'ultimo EDIT2. Non l'avevo mai visto prima. –

+0

Il mio progetto è stato realizzato correttamente. Ma nella directory proj.android/libs/armeabi non ho i file gdb.setup, gdbserver. Ho solo libcocos2dcpp.so. Come ottenerli? –

+0

@John '-m debug --ndk-mode NDK_DEBUG = 1' non crea i file? – Narek

Problemi correlati