Je travaille sur une bibliothèque C++ plutôt compliquée que je prévois de tester correctement en utilisant googletest pour Android NDK.Comment utiliser googletest pour tester le code C++ qui appelle Java sur Android?
Jusqu'à présent, je suivre l'exemple de test Google et la structure du projet comme celui-ci:
Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := foo
LOCAL_SRC_FILES := foo.cpp
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := foo_unittest
LOCAL_SRC_FILES := foo_unittest.cpp
LOCAL_SHARED_LIBRARIES := foo
LOCAL_STATIC_LIBRARIES := googletest_main
include $(BUILD_EXECUTABLE)
$(call import-module,third_party/googletest)
Je construis et appeler le test en utilisant un fichier de script:
adb push libs/armeabi/libfoo.so //data/local/tmp/
adb push libs/armeabi/libgnustl_shared.so //data/local/tmp/
adb push libs/armeabi/foo_unittest //data/local/tmp/
adb shell chmod 775 //data/local/tmp/foo_unittest
adb shell "LD_LIBRARY_PATH=//data/local/tmp //data/local/tmp/foo_unittest"
Cela fonctionne très bien avec tout code C++ pur qui n'a pas beaucoup de références mais beaucoup de mon code repose en fait sur des appels java/jni. Comment puis-je exécuter googletest avec un fichier apk complet qui ne vient pas seulement avec du code C++ mais aussi java et des ressources?
mais comment pourrais-je combiner cela avec un apk? – Luz
Vous pouvez créer un rappel dans Java, puis l'appeler à partir de JNI pour installer le package téléchargé. – Shobhit