咱們在項目的開發過程當中,避免不了的是引入一些第三方的應用,若是是開源的三方,那麼風險仍是比較好把控的,如果一些商用的 SDK 那麼就要當心了,不免會遇到說在其餘的手機上運行沒有問題,可是在華爲 Mate 8 上運行卻有問題的狀況。大概狀況以下描述:android
因爲第一個項目是個第三方,所以須要到第三方官網中去下載 x86 的相關 so 文件,放在 x86 目錄下,把 arm64-v8a 目錄刪除。將全部關於 so 文件的都要保持一致,即:若是你要添加一個 armeabi-v8a 目錄,下面放第三方的 armeabi-v8a 相關的so文件,那麼你其餘的 so 文件都要有相應想 armeabi-v8a 版本,否則就會報錯。web
指令集 | 廠商 | 位數 | 描述 |
---|---|---|---|
arm64-v8a | ARM | 64 | 第 8 代,64 位 ARM 處理器,不多設備,如:三星 Galaxy S六、華爲 Mate 8 |
armeabiv-v7a | ARM | 32 | 第 7 代及以上的 ARM 處理器。2011 年之後,大部分的生產的 Android 設備都使用它(目前主流) |
armeabiv | ARM | 32 | 第 五、6 代的 ARM 處理器,早期的手機使用的比較多 |
x86 | Intel | 32 | 平板、模擬器(x86設備也支持armeabi-v7a和armeabi) |
x86_64 | Intel | 64 | 64 位的平板 |
若是項目中使用到了 NDK,它將會生成 .so 文件,所以顯然你已經在關注它了。若是隻是使用 Java 語言進行編碼,你可能在想不須要關注 .so 文件了吧,由於 Java 是跨平臺的。但事實上,即便你在項目中只是使用 Java 語言,不少狀況下,你可能並無意識到項目中依賴的函數庫或者引擎庫裏面已經嵌入了 .so 文件,並依賴於不一樣的ABI。 例如,項目中使用 RenderScript 支持庫,OpenCV,Unity,android-gif-drawable,SQLCipher 等,你都已經在生成的APK文件中包含.so文件了,而你須要關注.so文件。 Android 應用支持的ABI取決於APK中位於lib/ABI目錄中的.so文件,其中ABI多是上面說過的幾個 ABI 中的一種。架構
arm64-v8a 是能夠向下兼容的,但前提是咱們項目裏面是沒有 arm64-v8a 文件的。app
- 陳堅潤:廣州蘆葦科技 APP 團隊 Android 開發工程師
- 咱們正在招募小夥伴,有興趣的小夥伴能夠把簡歷發到 app@talkmoney.cn,備註:來自掘金社區
- 詳情能夠戳這裏--> 廣州蘆葦信息科技