先來一波掃盲:
armeabi:針對普通的或舊的arm v5 cpu
armeabi-v7a:針對有浮點運算或高級擴展功能的arm v7 cpu(32位ARM設備)
arm64-v8a:64位ARM設備
Android L開始才真正支持32位和64位的ART虛擬機,配合上64位處理器,名正言順的運行64位軟件
兼容和文件讀取順序
arm64-v8a是可以向下兼容的,其下有armeabi-v7a,armeabi
armeabi-v7a向下兼容armeabi
對於一個cpu是arm64-v8a架構的手機,它運行app時,進入jnilibs去讀取庫文件時,先看有沒有arm64-v8a文件夾:
如果沒有該文件夾,去找armeabi-v7a文件夾,如果沒有,再去找armeabi文件夾,如果連這個文件夾也沒有,就拋出異常
如果有arm64-v8a文件夾,那么就去找特定名稱的.so文件,注意:如果沒有找到,不會再往下(armeabi-v7a文件夾)找了,而是直接拋出異常
參考自:
http://blog.csdn.net/mao520741111/article/details/50328669
http://blog.csdn.net/hss01248/article/details/51505531
http://www.voidcn.com/blog/u013278099/article/p-4944290.html
http://blog.csdn.net/vhawk/article/details/49964475