android 64位機子兼容32位.so庫文件

 猴子在調用高德地圖的時候,遇到一個操作系統兼容問題,異常堆棧說是找不到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
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章