Remarques sur le NDK Android

Spécification jni : https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html

Documentation NDK :
https://developer.android.google.cn/ndk/guides/

Référence NDK :
https://developer.android.google.cn/ndk/reference/

Exemples NDK :
https://developer.android.google.cn/ndk/samples/


Application.mk :
ce fichier énumère et décrit les modules requis par votre application. Ces informations incluent :
    ABI utilisé pour compiler pour une plate-forme spécifique.
    Chaîne d'outils.
    Bibliothèques standards à inclure (STLport statique et dynamique ou système par défaut).

Android.mk : le fichier de configuration Android.mk doit être créé dans le dossier jni. Le script ndk-build examinera ce fichier, qui définit le module et son nom, les fichiers sources à compiler, les indicateurs de version et les bibliothèques avec lesquelles établir un lien.

Le système de build NDK utilise le répertoire jni comme répertoire du projet NDK, et le répertoire jni doit contenir le fichier Android.mk.

LOCAL_LDLIBS += -llog Lien vers la bibliothèque dynamique du système
LOCAL_STATIC_LIBRARIES += 
LOCAL_SHARED_LIBRARIES += Lien vers la bibliothèque locale


APP_CFLAGS
Module APP_CPPFLAGS commun


ndk-build NDK_LOG=1 V=1 affiche le journal détaillé du processus de construction

Emplacement du fichier d'en-tête système utilisé lors de la création du NDK :
$(NDK_DIR)/sysroot/usr/include

La bibliothèque dynamique du système et l'emplacement de la bibliothèque statique liés lors de la construction du NDK :
$(NDK_DIR)/platforms/android-?/arch-arm/usr/lib/

JNIEnv Pointeur d'interface de table de fonctions JNI, C et C++ utilisent un
C (*env)->XXXX() légèrement différent
C++ env->XXX()


La chaîne C obtenue via (*env)->GetStringXXXX doit être libérée par vous-même après utilisation.
(*env) -> ReleaseStringUTFChars

Mappage de signature de type JAVA, spéciaux :
Boolean Z
Long J
class Ljava/lang/String ;
type[] [type
method ()V

Créer/détruire une référence globale
(*env)->NewGlobalRef(env, obj)
(*env)->DeleteGlobalRef(env, obj)

日志
#include <android/log.h>
__android_log_write(ANDROID_LOG_DEBUG, "MyTag", "***************** ");

ndk-gdb débogue le code natif
ndk-stack analyse les informations de la pile

Activer la vérification des appels JNI :
adb shell setprop debug.checkjni 1 

Je suppose que tu aimes

Origine blog.csdn.net/konga/article/details/84503300
conseillé
Classement