0
当我的应用在Android 6.0或更低版本的设备(Nexus 5,Galaxy 3 ...)中运行时,它在System.loadLibrary ( “MYLIB”);java.lang.UnsatisfiedLinkError:dlopen失败:无法找到由mylib.so引用的符号“__aeabi_memcpy8”
它正常工作与Android 7.0设备(的Nexus 5X,纳克斯9)。 我使用最新的Android Studio(2.2)和NDK。
登录猫的消息是
java.lang.UnsatisfiedLinkError中:dlopen的失败:无法找到符号 “__aeabi_memcpy8” 由mylib.so引用。
下面的build.gradle的一部分。
compileSdkVersion 24
buildToolsVersion '24.0.2'
defaultConfig {
applicationId "myApp"
minSdkVersion 10
targetSdkVersion 24 // Whatever this is, it crashes(22, 19...).
ndk {
moduleName "mylib"
}
}
下面是Application.mk
APP_ABI := armeabi armeabi-v7a x86
APP_PLATFORM := android-10 // Whatever this is, it crashes.
问题是什么?
即使我在.c文件注释掉所有的memcpy,它会发出相同的错误消息。在我运行之前,我清理并重建项目。
鉴于它的'__aeabi_memcpy8'和它的作品在N(24),但不是在M(23)或更低,这是最有可能对编制的android-24的问题。当通过gradle使用ndk-build时,我希望'APP_PLATFORM'获胜,但它看起来既没有也没有'targetSdkVersion'正在被使用。如果将'compileSdkVersion'更改为23,它是否工作?假设修复它,这是一个错误。如果是这样,你能提交一份吗? http://tools.android.com/filing-bugs –
号它仍然崩溃,即使我改变compileSdkVersion到23 – JohnP
嗯。 Gradle是否在任何地方显示编译的详细输出? '--sysroot'或'-L'参数将指向'$ NDK/platforms/android- $ VERSION'。 –