使用android studio和gradle build使用aviary android sdk。 在所有具有32位架构的设备上,应用程序生成正常运行。
相同的应用程序在64位设备中给出以下错误[例如。索尼C4]
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file
"/data/app/com.myapp/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libaviary_moalite.so"
gredle.build part
dependencies {
...
compile 'com.android.support:multidex:1.0.0'
compile 'com.facebook.fresco:fresco:0.8.1+'
compile 'com.facebook.fresco:imagepipeline-okhttp:0.8.1+'
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.adobe.creativesdk:image:4.0.0'
}
参考没有效果
Can't find ARM64 NDK native lib using Android Studio (1.3 RC)
如果使用任何使用的解决方案,则会出现相同的错误。
How to use 32-bit native libraries on 64-bit Android device
获取错误
Error:(16, 0) Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental. Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration.
我不确定我在做什么,或者根本不支持。
答案 0 :(得分:17)
看起来您使用的某些软件包带有64位库,但有些则没有。为了保持您的APK 32位,我使用
android {
splits {
abi {
enable true
reset()
include 'armeabi-v7a'
}
}
}
如果相关,您也可以使用include 'armeabi'
。
答案 1 :(得分:5)
我通过以下步骤解决了这个问题:
我移动了armeabi和x86文件夹 来自:\ src \ main \ jniLibs to:\ libs
请确保同时移动这些文件夹下的所有文件:* .so文件应该位于那里。
我已将以下内容添加到build.gradle:
sourceSets.main {
jniLibs.srcDir 'src/main/libs'
}
清理+重建项目
*如果您使用的是multidex,请确认这些行已添加到build.gradle:
defaultConfig {
multiDexEnabled true
}
dexOptions {
preDexLibraries false
javaMaxHeapSize "4g"
}
此外,这应该添加到您的清单文件中:
<application
android:name="android.support.multidex.MultiDexApplication">
/application>
希望这有帮助。