Android JNI APK Verpackung

8

Ich habe eine JNI Android-Anwendung implementiert. Diese Anwendung benötigt ein paar zusätzliche 'Shared Libs', die als Teil der APK gepackt werden. Mit Ecplise habe ich diese Bibliotheken dem Ordner '/ libs / armeabi' des Projekts hinzugefügt.

Beim Start der Anwendung (über den integrierten Debugger) werden meine hinzugefügten "Shared Libs" jedoch aus dem Ordner "armeabi" entfernt.

  • Wie kann ich verhindern, dass diese zusätzlichen Bibliotheken entfernt werden?
  • Wie kann ich sicherstellen, dass die zusätzlichen erforderlichen SOs in der APK gepackt sind?
NadavRub 01.02.2012, 18:30
quelle

2 Antworten

9

Sie müssen diese Bibliotheken nicht selbst in den Ordner libs kopieren. Dieser Job sollte von ndk-build erledigt werden.

Diese beiden Schritte sollten ausreichen:

  1. Erstellen Sie den Ordner mylibs (Sie können stattdessen einen anderen Namen verwenden) auf der Stammebene Ihres Projekts. Und legen Sie Ihre Bibliotheken in diesen Ordner.

  2. Fügen Sie für jede Bibliothek die folgenden Zeilen hinzu, bevor die include $(CLEAR_VARS) -Anweisung mylib durch Ihren Bibliotheksnamen ersetzt:

    %Vor%

(Sie benötigen möglicherweise einen etwas anderen Pfad für LOCAL_SRC_FILES . Dies hängt von Ihrer Eclipse-Konfiguration ab.)

    
Andrey Kamaev 01.02.2012, 18:59
quelle
1

Noch eine Anmerkung in diesem Zusammenhang ist, dass der Pfad zu der externen SharedLib relativ zum jni-Verzeichnis (oder zu jedem anderen angegebenen @ LOCAL_PATH) sein muss, dh "LOCAL_SRC_FILES: = ../../ .. /Android/ffmpeg/libavcodec/libavcodec.so "funktioniert dort, wo der absolute Pfad nicht funktioniert.

    
NadavRub 20.04.2012 12:01
quelle

Tags und Links