7
votes

Comment forger une bibliothèque partagée préburée à l'intérieur d'un apk

Cette question semble avoir été posée beaucoup, mais toutes essayaient d'utiliser Eclipse pour emballer la bibliothèque à l'intérieur de l'APK. Cependant, mon besoin est d'emballer la bibliothèque à l'intérieur de l'APK (qui sera chargée ultérieurement à l'aide de System.LoadLibrary () via Java) à l'aide du système de construction Android, c'est-à-dire que je souhaite écrire un fichier Android.mk qui fait ce travail.

Exigence: 1. Bibliothèque partagée préburée: libtest.so 2. Écrivez un fichier Android.mk qui emballera ceci sur Libs / Armeabi-7 à l'intérieur de l'APK.

Je ne sais pas grand chose sur le système de construction que j'utilise, mais la compilation est effectuée à l'aide de la commande "MM" après avoir exporté les variables d'environnement requises.

Lorsque je fournis libtest pour local_jni_shared_libraries, il essaie de le trouver à l'intérieur de ses sentiers exportés et ne le trouve pas là-bas et donc la construction échoue.

Quelqu'un peut-il donner des indications sur la rédaction d'un fichier Android.mk qui emballera ma bibliothèque partagée Prebuild dans l'APK?


0 commentaires

3 Réponses :


3
votes

Pour précuiter votre bibliothèque natale, vous devez

  1. Créer un dossier JNI code> dans votre dossier de projet LI>
  2. Créer un dossier libs code> dans votre dossier de projet LI>
  3. Ajouter ADNROID.MK CODE> Créez le fichier dans le dossier JNI, il devrait ressembler à Ceci: p>

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_LDLIBS    := -llog
    LOCAL_MODULE    := Test
    LOCAL_SRC_FILES := Test.cpp
    
    include $(BUILD_SHARED_LIBRARY)
    


0 commentaires

1
votes

Disons qu'il y ait un libxxx.so bibliothèque partagée sous libs / armée / de projet que vous souhaitez emballer dans APK. Il y a 2 choses que vous devez faire dans le android.mk ci-dessous:
xxx


Ensuite, vous pouvez utiliser apktool pour déballer l'apk bâti, vous trouverez le libxxx.so sera situé dans libs / armée * / . Il est effectivement emballé dans l'APK.


0 commentaires

1
votes

J'avais deux local_jni_shared_libraires que je voulais construire dans mon APK. Je parviens à le faire en définissant ce qui suit dans mon androïde.mk:

LOCAL_MODULE_TAGS := samples

Recompilez le module J'ai pu trouver les deux bibliothèques à l'intérieur du .apk sous /lib/. " p> p>


0 commentaires