ist hoffe, Sie können mir hier helfen. Ich habe es geschafft, mein eigenes Aktivitätsprojekt zu erstellen und es zu verpacken. Im Ordner libs habe ich eine gemeinsam genutzte Bibliothek, die innerhalb der nativen Aktivität dynamisch geladen wird (dlopen). Ich weiß, dass die Paket-Bibliotheken in kopiert werden: /data/data/packagename/lib aber wie kann ich mit dlopen darauf zugreifen? Ist das möglich? Ich dachte, ich kann nur mit dem lokalen Ordnernamen darauf zugreifen, wie: ./libMySharedLibrary, weil sie alle im Unterordner APK/libs sind. Wie kann man zum richtigen Ordnernamen gelangen oder Zugang zu diesen freigegebenen Bibliotheken erhalten?Shared-Objekt dynamisch geladen, die im Ordner APK-Bibliotheken
1
A
Antwort
0
Dynamische Linker kennt bereits über Ihr Paket privaten Bibliotheken - nur passieren Basisnamen und alle sollten in Ordnung sein:
dlopen("libawesome.so", RTLD_LAZY);
P. S. Um Überraschungen zu vermeiden, sollten Sie sicherstellen, dass Ihr Bibliotheksname eindeutig ist und nicht mit den System-Namen übereinstimmt (diese befinden sich unter /system/lib
und /vendor/lib
, überprüfen Sie auch lib64
Verzeichnisse auf 64-Bit-Geräten).
Verwandte Themen
- 1. Bibliothekspfad, wenn dynamisch geladen?
- 2. Wie wird die Eigenschaftendatei geladen, die sich im Assets-Ordner von Android Studio befindet?
- 3. Inotify dynamisch Index neue Ordner
- 4. Gradle: Asset-Ordner dynamisch hinzufügen
- 5. Wie wird die Systemeigenschaftsdatei im Frühling geladen?
- 6. Zugriff auf die Datei im WebContent-Ordner über ein Servlet
- 7. wie ein dynamisch Javascript-Funktion geladen aufzurufen
- 8. HTML dynamisch generieren, sobald Daten geladen wurden
- 9. Wie kann die Klasse in Objective-C dynamisch geladen werden?
- 10. Wie wird die Komponente dynamisch in reactjs geladen?
- 11. Firefox nicht ausgeführt JavaScript-Dateien, die dynamisch geladen wurden
- 12. Dynamisch geladen JS nicht verfügbar, bis die Funktion beendet ist
- 13. CSS Variable Trog Polymer (dynamisch geladen) Elemente
- 14. Meteor.js: lib Ordner nicht geladen ersten
- 15. Making Firebug brechen innen dynamisch geladen Javascript
- 16. Wie qt Linguist dynamisch geladene Etikettentext geladen
- 17. IE gilt nicht dynamisch geladen CSS
- 18. jQuery hinzufügen Klasse auf div dynamisch geladen
- 19. Bash - Filterdateien im Ordner
- 20. Alle Binärdateien im Ordner
- 21. Anzahl Dateien im Ordner
- 22. So spielen Sie Sounds im laufenden Betrieb geladen
- 23. .nuget Ordner im Benutzerbereich
- 24. Mehrere Ordner im Explorer
- 25. Verschieben Sie die Anzahl der Ordner rekursiv in einen anderen Ordner im selben Ordner mit PowerShell
- 26. dynamisch Bilder aus einem Ordner hinzufügen
- 27. Typescript-App nicht im Ordner node_modules suchen
- 28. Überprüfen, ob die JAR-Datei geladen ist?
- 29. Python-Ordner-Namen im Verzeichnis
- 30. Unterordner im übergeordneten Ordner finden
Angenommen, mein Paketname lautet: ** com.android.example **. Wenn ich das tue: ** adb shell run-as com.android.example ** und schaue in den **/lib ** Ordner Ich kann meine shared library nicht sehen. Ich kann die gemeinsam genutzte Bibliothek in der .apk-Datei sehen, aber nach der Installation mit ** ant installd ** ist sie nicht in diesem Ordner. Soll die gemeinsame Bibliothek in diesen Ordner kopiert werden? – yaakuro
@yaakuro AFAIK-native Bibliotheken werden nach ['nativeLibraryDir'] kopiert (https://developer.android.com/reference/android/content/pm/ApplicationInfo.html#nativeLibraryDir). Und es scheint, als wäre es nicht immer das Paket 'lib'-Verzeichnis. Wie auch immer, die Frage bezog sich nicht auf den Speicherort der Bibliothek, sondern auf den richtigen Weg, sie in nativem Code zu laden. Haben Sie versucht, 'dlopen()' nur mit dem Basisnamen der Bibliothek zu verwenden? – Sergio