2016-10-11 52 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。

相關問題