2016-10-11 46 views
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,它会发出相同的错误消息。在我运行之前,我清理并重建项目。

+0

鉴于它的'__aeabi_memcpy8'和它的作品在N(24),但不是在M(23)或更低,这是最有可能对编制的android-24的问题。当通过gradle使用ndk-build时,我希望'APP_PLATFORM'获胜,但它看起来既没有也没有'targetSdkVersion'正在被使用。如果将'compileSdkVersion'更改为23,它是否工作?假设修复它,这是一个错误。如果是这样,你能提交一份吗? http://tools.android.com/filing-bugs –

+0

号它仍然崩溃,即使我改变compileSdkVersion到23 – JohnP

+0

嗯。 Gradle是否在任何地方显示编译的详细输出? '--sysroot'或'-L'参数将指向'$ NDK/platforms/android- $ VERSION'。 –

回答

0

确保您在下面NDK>平台HAVA权paltform在Application.mk APP_PLATFORM =的Android-X。

相关问题