System.loadLibrary in Android Studio
Ich bin gerade dabei, eine Bibliothek laden in meinem Projekt, das ich eine bestimmte Lizenz die ich verwende. Jedoch bei der Ausführung von es gibt nur einen Fehler im system.loadLibrary.
Bin ich mit Android Studio und ich habe die Bibliothek gelegt, die in meinem Ordner libs und ich bereits Hinzugefügt, es in meinen Abhängigkeiten.
Code :
@Override
public void onCreate() {
Log.v( TAG, "onCreate()" );
super.onCreate();
//Gives the error.
System.loadLibrary( "MobileImagingEngine" );
try {
Log.v( TAG, "MILicenser.getVersionInfo(): " + MILicenser.getVersionInfo() );
final InputStream licenseStream = getAssets().open( "thelicense.License" );
MILicenser.setLicense( licenseStream, "Android_ID" );
Log.v( TAG, "MILicenser.setLicense() succeeded. " + MILicenser.getLicenseInfo() );
} catch( final Exception exception ) {
Log.e( TAG, "MILicenser.setLicense() failed", exception );
}
MIContext.createInstance();
}
Log :
Process: docspro.nl.docsproscanapp, PID: 10348
java.lang.UnsatisfiedLinkError: Couldn't load MobileImagingEngine from loader dalvik.system.PathClassLoader[dexPath=/data/app/docspro.nl.docsproscanapp-8.apk,libraryPath=/data/app-lib/docspro.nl.docsproscanapp-8]: findLibrary returned null
at java.lang.Runtime.loadLibrary(Runtime.java:358)
at java.lang.System.loadLibrary(System.java:526)
at docspro.nl.docsproscanapp.MIApplication.onCreate(MIApplication.java:24)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4581)
at android.app.ActivityThread.access$1600(ActivityThread.java:161)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1325)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
Gradle-Datei (Versucht eine Lösung vom stack):
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "project.name"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile files('lib/armeabi-v7a/libMobileImagingEngine.jar')
compile files('libs/ksoap2-android-assembly-3.3.0-jar-with-dependencies.jar')
compile files('libs/MobileImagingEngine.jar')
compile files('libs/MobileImagingEngine_Doc.jar')
}
task copyNativeLibs(type: Copy) {
from(new File('libs')) { include '**' }
into new File(buildDir, 'native-libs')
}
tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn copyNativeLibs }
clean.dependsOn 'cleanCopyNativeLibs'
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
pkgTask.jniFolders = new HashSet<File>()
pkgTask.jniFolders.add(new File(buildDir, 'native-libs'))
}
- Öffnen Sie die apk als zip-Datei und sehen, ob es eine entsprechende libMobileImagingEngine.so eine Architektur entsprechende Verzeichnis davon. Wenn nicht, herauszufinden, warum nicht. Bauen Sie diese aus der Quelle? Ist es geliefert vorgefertigten von einem Händler?
- Es ist eine Bibliothek, die vorgefertigte, ist es gegeben, beim Kauf eines bestimmten Produkts. Und ist es nicht enthalten .tun Datei.
- .also (das original, mein Kommentar litt an einem Android-Tastatur)
- posten Sie Ihre gradle-Datei
- Gradle Hinzugefügt. Plus gibt es keine .so Datei
- Wenn es keine .also die Datei in der apk Sie brauchen, um herauszufinden, wo es war, soll kommen. Wenn Sie nicht haben eine .also irgendwo müssen Sie entweder bauen Sie es aus Quell-oder hast du eine unvollständige übergabe von Ihrem Lieferanten.
- Gibt es irgendeine Abhilfe? Wie das entpacken .Glas und versuchen Sie, es so ein Modul oder so etwas? Was ich nicht verstehe ist, dass ich Sie mit es als eine normale Bibliothek, in meinen Abhängigkeiten, aber wenn ich versuche zu laden, es will einfach nicht laden. Aber in Eclipse ist es verwendet, um zu laden. So meine Ahnung ist, dass der Pfad könnte falsch sein?
Du musst angemeldet sein, um einen Kommentar abzugeben.
War fest auf dieses problem vor einigen Tagen. Nur hatte, um einen Ordner namens "jniLibs" in meinem Programme-Ordner und Android Studio tok den rest.
Für weitere Informationen über die Verwendung von native libs
http://ph0b.com/android-studio-gradle-and-ndk-integration/
Projekt-Struktur->Facette, die in der Registerkarte "Struktur", dort ist eine Zeile "Native libs-Verzeichnis". Ich denke, dass man es ändern sollte.
Habe ich bemerkt, dass Sie angegeben haben, den folgenden Pfad in Abhängigkeiten: 'lib/armeabi-v7a/libMobileImagingEngine.jar'
In der MI-SDK-distribution libMobileImagingEngine.so ist auf dem Android/Lib/armeabi-v7a Ordner nicht libMobileImagingEngine.jar.
Bitte überprüfen Sie, ob alle Pfade sind korrekt angegeben, in der Anwendung.
In Fall war es nicht hilfreich ist, senden Sie uns bitte zu [email protected] die folgenden Informationen für die weitere Untersuchung:
1. Das komplette Projekt um dann könnten wir überprüfen alle Einstellungen auf unserer Seite.
2. Bitte geben Sie an, ob das Problem tritt auf, auf einem echten Gerät oder simulator?
3. Auch geben Sie bitte die Android-version und die Anzahl der MI-SDK zu bauen.