日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android so abi适配,Android NDK学习(六): so文件兼容之abiFilters的使用

發布時間:2025/3/11 Android 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android so abi适配,Android NDK学习(六): so文件兼容之abiFilters的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近項目中遇到了要使用JavaCV的情況,涉及到了abi兼容的選擇。因為如果全部都適配的話,包很大,這樣兼容那些用戶數極少的cpu就很不劃算,所以我只適配了armeabi-v7a這一個。但是今天在x64-v8a的模擬器上看的時候,提示我的library.so文件找不到,我記得這個應該是向下兼容的,但是出現這種情況很奇怪,于是我就在網上找了找答案。

解決方法:abiFilters

在app的gradle的defaultConfig里面加上這么一句

ndk {

abiFilters"armeabi-v7a" //指定要ndk需要兼容的架構(這樣其他依賴包里mips,x86,armeabi,arm-v8之類的so會被過濾掉)

}

這句話的意思就是指定ndk需要兼容的架構,把除了v7a以外的兼容包都過濾掉,只剩下一個v7a的文件夾。用了這個方法之后,確實解決了問題。這就是解決方法。

具體分析

其實這個方法我開始是很奇怪的,我明明沒有指定其他的兼容框架,為什么會需要一個過濾。我打來了apk的包,找到了里面的lib目錄,發現里面有很多的兼容目錄,然后看到里面目錄里面的是一個fresco的.so文件。也就是說,fresco做了各個平臺的兼容,所以它創建了各個兼容平臺的目錄。因為只要出現了這個目錄,系統就只會在這個目錄里找.so文件而不會遍歷其他的目錄,所以就出現了之前找不到.so文件的情況(因為其他目錄沒有我的.so文件)。

總結

為了決定最后適配的abi版本,我下載了排行前幾名的app,然后打開之后發現,他們基本上只適配了一個armeabi,少數會再加上v7a。我了解到的情況是armeabi性能較差,但是兼容性最好,v7a對于浮點計算的cpu來說性能更好,不兼容不支持浮點運算的cpu。我想到的是目前的手機cpu絕大多數應該是支持浮點運算的,而且安卓從2.2開始就支持v7a,所以v7a的兼容性應該也不是問題。無論如何,abiFilters還是應該添加的。

總結

以上是生活随笔為你收集整理的android so abi适配,Android NDK学习(六): so文件兼容之abiFilters的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。