Android – Librerie NDK estrarre i ganci JNI pertinenti con nm / objdump

Sto cercando di estrarre i simboli pertinenti da una libreria condivisa che contiene il codice della colla JNI, ma non sembra che abbia un aiuto sufficiente. Le firme del metodo non sono così non so quali argomenti passare.

Qualche idea?

  • Sfondo di ritaglio Android
  • Utilizzo di Service, TimerTask e BroadcastReceiver per verificare vari aggiornamenti
  • AudioRecord e latenza di AudioTrack
  • Problemi gravi nel configurare Android SDK con Eclipse
  • utilizzando lo spazio quando l'annuncio non è caricato Android
  • Quali filtri di intenti deve coprire la mia app per visualizzare i selezionatori quando richiesto un'image da un'applicazione esterna?
  • bash-3.2# ./arm-linux-androidabi-nm -D ~/Desktop/backup/whiteBox/libamplayerjni.so | grep Java 00030d6c T Java_com_farcore_playerservice_AmPlayer_GL2XScale 00030da8 T Java_com_farcore_playerservice_AmPlayer_close 00030d74 T Java_com_farcore_playerservice_AmPlayer_disable2X2XYScale ... 

    obdump non è di grande aiuto neanche

     bash-3.2# ./arm-linux-androidabi-objdump -TC ~/Desktop/backup/whiteBox/libamplayerjni.so | grep Java 00030c00 g DF .text 00000008 Java_com_farcore_playerservice_AmPlayer_getDivxInfo 00030c08 g DF .text 00000008 Java_com_farcore_playerservice_AmPlayer_setIVolume 00030c10 g DF .text 00000008 Java_com_farcore_playerservice_AmPlayer_mute 00030c18 g DF .text 00000008 Java_com_farcore_playerservice_AmPlayer_unmute 00030c20 g DF .text 00000008 Java_com_farcore_playerservice_AmPlayer_setVideoBlackOut 

  • Come centrare una vista all'interno di un layout Android?
  • Come posso salvare l'output di android tts in un file wav?
  • Android BroadcastReceiver o un semplice metodo di richiamata?
  • Dopo l'aggiornamento di Android Studio alla versione 1.3.0, ottengo l'errore "l'integrazione NDK è deprecata nel plugin corrente"
  • Come impedire che lo schermo di un dispositivo android si spenga durante l'esecuzione di un'attività?
  • Selezione singola in RecyclerView
  • One Solution collect form web for “Android – Librerie NDK estrarre i ganci JNI pertinenti con nm / objdump”

    Poiché JNI utilizza la convenzione di chiamata C (cdecl), non ci sono informazioni sugli argomenti nella firma della function. Devi analizzare il corrispondente codice java (dalvik) per scoprire il tipo di argomenti.

    Ecco la mia libreria di jni:

     00001408 g DF .text 0000000a Java_info_kghost_android_openvpn_FileDescriptorHolder_close 00001a14 g DF .text 00000198 Java_info_kghost_android_openvpn_ManagementSocket_read__ILjava_nio_ByteBuffer_2II 00001414 g DF .text 0000000c Java_info_kghost_android_openvpn_ManagementSocket_shutdown 000017c4 g DF .text 00000250 Java_info_kghost_android_openvpn_ManagementSocket_read__ILjava_nio_ByteBuffer_2IILinfo_kghost_android_openvpn_FileDescriptorHolder_2 0000142c g DF .text 00000200 Java_info_kghost_android_openvpn_ManagementSocket_write__ILjava_nio_ByteBuffer_2IILinfo_kghost_android_openvpn_FileDescriptorHolder_2 00001420 g DF .text 0000000a Java_info_kghost_android_openvpn_ManagementSocket_close 0000162c g DF .text 00000198 Java_info_kghost_android_openvpn_ManagementSocket_write__ILjava_nio_ByteBuffer_2II 00001bd4 g DF .text 000000d4 Java_info_kghost_android_openvpn_ManagementSocket_open 

    se non esiste un metodo di sovraccarico, la firma non contiene le informazioni sugli argomenti; se il metodo è sovraccaricato, la firma conterrà informazioni di argomenti nel nome function.

    E bisogna caricare la libreria jni in modo esplicito prima di utilizzare il metodo nativo:

     System.loadLibrary("your-library-name"); 

    Assicurati che la tua libreria sia collocata all'interno della directory LD_LIBRARY_PATH , /lib su Android, controlla i mmap ( /proc/pid/maps ) per vedere se è caricato il successo.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.