2013-11-09 14 views
6

Ich möchte, dass meine Android-Anwendung eine .so-Datei (native von mir kompilierte Bibliothek) entsprechend den Funktionen des Geräts zur Laufzeit herunterlädt, also wird die Größe der APK klein sein, da ich die APK nicht mit vielen verschiedenen Versionen füllen werde der nativen Bibliothek.Was ist der beste Ort, um heruntergeladene native Bibliothek in Android zu platzieren?

Ich konnte den richtigen Ort nicht finden, um diese Bibliothek herunterzuladen. Wo ist das bevorzugte und empfohlene Verzeichnis für diese So kann ich System.loadLibrary Funktion verwenden, um es schnell und sicher zu laden?

+0

Hattest du Erfolg mit Ragers Vorschlägen, dies zu tun? – joelsand

+0

@joelsand Ich beendete die Multi-APK-Version der Anwendung, obwohl es manchmal eine zeitaufwendige Operation ist ... – frankish

Antwort

2

Wenn Sie eine APK entpacken, sehen Sie, dass sich im Stammverzeichnis ein Ordner lib befindet. Dieses Verzeichnis existiert auch in Ihrem Anwendungsverzeichnis /data/data/package.name/lib als Symlink zu /data/app-lib/package.name. Wenn Sie native Bibliotheken zur Laufzeit wirklich herunterladen möchten, müssen Sie diese in einer dieser Bibliotheken ablegen.

Da die Anwendungen Schreibrechte für ihr eigenes Datenverzeichnis erhalten, sollten Sie in der Lage sein, dort tatsächlich eine Datei herunterzuladen. ContextWrapper.getFilesDir() gibt den Pfad /data/data/package.name zurück, so dass Sie ihn nicht fest codieren.

Seien Sie vorsichtig damit - native Code-Updates selbst könnten mehr Probleme verursachen als es wert ist. Wenn Sie wirklich versuchen, in Sicherheit zu sein, sollten Sie die Implikationen berücksichtigen, wenn Sie in Ihrer Anwendung beliebigen nativen Code herunterladen und ausführen können.

Verwandte Themen