猴子在調用高德地圖的時候,遇到一個操作系統兼容問題,異常堆棧說是找不到so庫文件,猴子就不懂了,明明有他說的那個文件。
後來和同行交流,他們的jniLibs中有一個arm64-v8a的文件夾用來存放64位操作系統的so庫文件,於是猴子自己建了一個arm64-v8a文件夾,因爲高德並沒有把64位的so庫文件公佈出來,所以,猴子直接把他們唯一的so庫考到了arm64-v8a文件夾下。自以爲這下就該好了,於是等待見證奇蹟。奇蹟果然發生了,爆出了那個so庫是32位而非64位的異常。猴子果斷蒙圈了。下載了高德的demo,看到她們的demo裏面也只有armeabi這一個庫文件夾。這讓猴子感覺到,64位的操作系統可以兼容32位的庫文件。於是多方查找資料。終於在一家英文網站上找到了答案。
解決方案也很簡單,在build.gradle中加上,這句話的意思大概就是,告訴程序加載如下的so文件
defaultConfig {
......
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
}
這時會報錯,因爲gradle的配置中,並不知道是否要做操作系統的兼容,這時只要在gradle.properties文件中加上
android.useDeprecatedNdk=true
就可以了。
運行,終於能奇蹟般地運行起來了。
另外ffmpeg 編譯生成動態庫過程中 --arch 與--cross-prefix對應關係如下:
archs=(
'arm'
'arm64'
'x86'
'x86_64'
'mips'
'mips64'
)
toolchains=(
'arm-linux-androideabi-4.9'
'aarch64-linux-android-4.9'
'x86-4.9'
'x86_64-4.9'
'mipsel-linux-android-4.9'
'mips64el-linux-android-4.9'
)
---------------------
作者:vhawk
來源:CSDN
原文:https://blog.csdn.net/vhawk/article/details/49964475
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!