In meinem Android App Ich habe 4 Bibliotheken:kann nicht geladen werden native shared Bibliothek mit Abhängigkeiten in einer nativen Aktivität App
libTemplate.so
depends on libPorkholt.so
libPorkholt.so
depends on libpng15.so
depends on liblua.so
depends on libopenal.so
libpng15.so
liblua.so
libopenal.so
Wenn ich eine kleine Befehlszeile ausführbare Datei, die gegen libtemplate Links schreiben und ANativeActivity_onCreate manuell aufrufen, es verbindet und läuft ganz gut (wenn ich LD_LIBRARY_PATH /data/data/com.mycompany.Template/lib Punkt)
wenn ich meine Anwendung ausführen ich diese sehr nützliche Fehlermeldung:
E/AndroidRuntime(13214): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mycompany.Template/android.app.NativeActivity}: java.lang.IllegalArgumentException: Unable to load native library: /data/data/com.mycompany.Template/lib/libTemplate.so
Es gibt nicht einmal ANativeActivity_onCreate, also meine einzige Vermutung ist, dass es etwas mit Verknüpfung zu tun hat
Ich sollte wahrscheinlich erwähnen, dass ich CMake mit diesem Skript verwende: http://code.google.com/p/android-cmake/, um die Bibliotheken selbst zu bauen (ohne ndk- bauen). Ich habe es geschafft, das native-activity-Sample damit zu kompilieren, also weiß ich, dass es funktioniert.
Auch ich stellte sicher, dass keine Bibliothek eine Versionsnummer in seiner soname enthält
Mein Manifest:
<?xml version="1.0" encoding="utf-8"?>
<!-- BEGIN_INCLUDE(manifest) -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mycompany.Template"
android:versionCode="1"
android:versionName="1.0">
<!-- This is the platform API where NativeActivity was introduced. -->
<uses-sdk android:minSdkVersion="9" />
<!-- This .apk has no Java code itself, so set hasCode to false. -->
<application android:label="Template Porkholt project" android:hasCode="false">
<!-- Our activity is the built-in NativeActivity framework class.
This will take care of integrating with our NDK code. -->
<activity android:name="android.app.NativeActivity"
android:label="Template Porkholt project"
android:configChanges="orientation|keyboardHidden">
<!-- Tell NativeActivity the name of or .so -->
<meta-data android:name="android.app.lib_name"
android:value="Template" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
<!-- END_INCLUDE(manifest) -->
Was ist Ihr Manifest? – Ken
Ich habe es gerade oben gepostet :) –
Könnten Sie mich wissen lassen, wie Sie "ANativeActivity_onCreate" manuell aufrufen? Hast du das in C-Code gemacht? – echo