android studio 找不到.SO錯誤處理

AndroidStudio中調用.so包出現找不到.so包的錯誤

2016-07-22 11:07 出處:清屏網 人氣:683 評論(0)html

 

出現緣由

RT,在Andoridsutdio中調用.so庫出現如現標題所示錯誤,該怎麼解決。首先出現這個錯誤的緣由是由於你的cpu架構是64位的。而你的.so庫在編譯的時候沒有支持64位cpu。 經@lolstudio 提醒, 若是這個.so的庫是你本身弄的,那你從新生成下支持64位cpu的.so庫出來就好了,剩下的文字就不用看了,本文適用於你無法對.so作操做的朋友。查看cpu架構,能夠經過adb shell 命令。進入/system/目錄下有一個build.prop文件,這個裏面有一行 ro.product.cpu.abi=xx就是你所要的信息,具體命令以下:android

adb shell
                cd /system
                cat build.prop

apk包在安裝的時候,系統會把包中與本身的abi對應的lib目錄中的so庫文件拷貝到system分區中,32位機器中只有一個目錄/system/lib,64位機器中有兩個目錄/system/lib和/system/lib64,app啓動進行連接時,64位機器中會先到/system/lib64目錄中去找,這時候確定找不到。若是沒有找到再到/system/lib目錄中去找。若是你把32位的so庫拷貝到了lib64目錄中,會致使連接失敗,一樣,64位的so庫被拷貝到lib目錄中也會致使失敗,因此so庫要和目錄一一對應。shell

解決方案

首先個人目錄結構是這樣的:網絡

個人.so並無放在新建的jniLibs目錄中,這個關係應該不大,兩種方式均可以。架構

個人cpu架構是 ro.product.cpu.abi=arm64-v8aapp

而個人只有一個CPU架構就是armebi-v7a,咱們要作的就是阻止生成arm64-v8a;gradle

正常狀況打開apk的lib結構以下:ui

方案以下:spa

  • 首先在project目錄下的 gradle.properties中添加一句
    android.useDeprecatedNdk=true
  • 在app的build.gradle中的defaulConfig下添加以下:
    ndk {  
            abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
          }

這時候你解壓開生成的apk包,會發現目錄lib結構以下:htm

OK,這樣就解決了個人這個問題,網絡上有一些別的阻止生成arm64-v8a,可是很差使。

相關文章
相關標籤/搜索