Android Studio - zählen und zu verbrauchen .also-Bibliothek
Ich einige native Bibliotheken(.so) in mein android-Projekt. Nach einigen Antworten hier bei StackOverflow zu diesem Thema habe ich eine jniLibs
Ordner in app/src/main
und lege dort meine Dateien:
armeabi/my_lib.so
armeabi-v7a/my_lib.so
x86/my_lib.so
Dann in meine activity-Klasse, die ich benutze:
static {
System.loadLibrary("my_lib");
}
Aber wenn ich die app starte, ein UnsatisfiedLinkError
- Ausnahme generiert. Wenn dies ist wichtig, um bemerkt zu werden, ich habe kein Android.mk-Datei, und ich habe nichts verändert, das hat damit zu tun, das in meiner gradle
- Dateien. So, nur denke ich hat ist die copy-paste meine .so
Dateien in jniLibs
und schreiben Sie den obigen code in meine Tätigkeit. Also, was könnte die Ursache sein für dieses problem? Bin ich etwas fehlt?
BEARBEITEN
Dies ist mein gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 15
buildToolsVersion "23.0.3"
compileOptions.encoding = 'ISO-8859-1'
defaultConfig {
applicationId "my.package"
minSdkVersion 4
targetSdkVersion 4
ndk {
moduleName "my_so_lib"
}
}
sourceSets {
main {
jni.srcDirs = ["libs"]
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
debug {
debuggable true
}
}
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a', 'mips', 'armeabi'
universalApk false
}
}
}
InformationsquelleAutor user19922 | 2016-05-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lösung 1
Ordner erstellen "jniLibs" innen "src/main/"
Setzen Sie alle Ihre .damit Bibliotheken innerhalb von "src/main/jniLibs" Ordner
Ordner Struktur sieht wie folgt aus :
Können Sie bitte bestätigen, dass Sie diese Hierarchie ?
Kein extra code erfordert, synchronisieren Sie das Projekt, und führen Sie Ihre Anwendung.
Referenz
https://github.com/commonsguy/sqlcipher-gradle/tree/master/src/main
Lösung 2
Fügen Sie die beiden code-Schnipsel in dein Modul gradle.build-Datei als Abhängigkeit:
So erstellen Sie diese benutzerdefinierten jar:
Quelle
InformationsquelleAutor GuillaumeAgis
Danke Jungs für die Hilfe aber es war ein blödes problem. Wenn ich importierte meine
.so
Dateien unterjniLibs
Sie benannt wurden, wielibSONAME.so
. In diesen Zeilen code:sollten wir nicht verwenden
System.loadLibrary("libSONAME");
, aber nurSystem.loadLibrary("SONAME");
.Dann erstellen Sie das Projekt, und alles war OK.
Danke Euch allen für die Hilfe. Ich hoffe, dies wird sparen Sie Zeit, um jemand anderes.
InformationsquelleAutor user19922
Was ist Ihre gradle-version? Wenn Sie ein 0.7.3 oder eine neuere version, dann der nächste Artikel sollte Ihnen dabei helfen:
Klicken Sie auf hier!
Mein gradle-version ist
1.5.0
. Ich Tat, was der link vermuten lässt, aber ich habe diesen FehlerError: NDK integration is deprecated in the current plugin.....
. Sollte ich etwas anderes tun?InformationsquelleAutor Arnold Vakaria