Die Umgebung ...Android Native, die eine dynamische Bibliothek verweist nicht
ich ein brandneues Visual Studio 2015 Android NDK Lösung haben zu implementieren. Dies enthält 2 Projekte (der Standardvorlagencode, der von Visual Studio generiert wird):
Ich habe dies erfolgreich auf einem virtuellen Intel HAXM-Gerät sowie auf einem realen Gerät über USB angeschlossen. Alles gut bis jetzt.
Ich habe dann ein dynamisches Android-Bibliotheksprojekt (.so) hinzugefügt - das ist, wo ich Kerncode (Plattform Agnostic) setzen möchte. Ich habe einen Verweis auf diese Core-Bibliothek aus dem nativen Aktivitätsprojekt hinzugefügt.
Alles kompiliert und verbindet gut. Ich kann immer noch eine .APK-Datei erstellen.
Weitere Informationen:
- Android SDK 5.1 (Android-22)
- Android NDK 21
- x86
- Clang 3.8
- C++ 11
- mit Nicht-Dateien oder Gradle Stellen
Das Problem ...
Nun, wenn ich auf dem virtuellen/realen Gerät bereitstellen ich die folgende Fehlermeldung erhalten (von logcat genommen)
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.NATester/android.app.NativeActivity}: java.lang.IllegalArgumentException: Unable to load native library: /data/app/com.NATester-2/lib/x86/libNATester.so
Dinge, die ich versucht habe ...
Einige Artikel haben vorgeschlagen, Java-Code zu verwenden, um die Bibliotheken zu laden - ich möchte Java-Code z. System.LoadLibrary als das scheint wie ein Hack - Ich denke, dass es möglich sein sollte, eine reine C++ - Anwendung auf Android zu haben. Ich kann nicht die einzige Person sein, die auf dieses Problem trifft ?!
Das sieht relevant, aber alt und wieder eine unnötige Hack für das, was sehr häufig auftretende Situation sein muss - Can't load native shared library with dependencies in a native activity app - https://github.com/ikonst/android-dl
Für das, was ihren Wert, ich bin ein erfahrener C# Entwickler mit Visual Studio (15 Jahre). Ich nehme daher viele Dinge bei der Entwicklung von Apps als selbstverständlich hin - das ist mein erstes Projekt mit C++/Android und es scheint eher ein manueller Kampf, um alles zum Laufen zu bringen!