扣丁書屋

Android應用市場64位應用策略!

1 、背景

2019年8月1號,在Google Play上發布應用必須支持64位架構,緊接著 小米應用商店、OPPO應用商店、vivo應用商店、騰訊應用寶和百度手機助手等五大應用商店宣布,為更好提升App性能體驗并降低功耗,五方將共同推進國內安卓生態對64位架構的升級支持。

具體的時間表:

  • 2021年12月底,現有和新發布的應用、游戲,需要上傳包含64位包體的APK包。也就是說所有上傳的應用都應該包含64位代碼的版本,不再接受僅有32位版本的應用上傳。
  • 2022年8月底,對于支持64位的硬件系統,將只接收64位版本的APK包。也就是如果到時用戶手中的硬件設備支持64位系統的話,那么將只運行64位版本的應用。
  • 2023年底,硬件將僅支持64位APK,32位應用無法在終端上運行。

大勢所趨,以后發布的應用要支持64位系統,

2、調研

現狀

目前手機cpu架構是armeabi、armeabi-v7a、arm64-v8a、x86、x86_64,但是目前手機基本上都是arm架構,x86架構的手機基本上沒有,基本上是平板,可以忽略。

armeabi是十年前的手機CPU架構,基本上沒有了。

armeabi-v7a的CPU架構是32位。

Arm64-v8a的CPU架構是64位。

所以目前需要考慮的armeabi-v7a、arm64-v8a這兩款就可以了, 之前開發者在打包的時候,為了包大小的考慮,常常指定打包的時候,只指定armeabi-v7a架構的so包,這樣包大小可以小很多,尤其是so庫多的應用

ndk {
    // 選擇要添加的對應 cpu 類型的 .so 庫,多個abi以“,”分隔。
    abiFilters 'armeabi-v7a'
    // 可指定的值為 'armeabi-v7a', 'arm64-v8a', 'armeabi', 'x86', 'x86_64',
}

在項目的gradle中配置ndk就可以,64位的手機會自適應32位的應用,這樣可以完美的兼容市面上99.9%的手機,這樣包大小也會小很多 但是這樣64位處理器的性能就無法完美的發揮出來,那么應用64位有哪些好處呢?

由于一些軟件功能越來越多,安裝包的體積、運行時需要消耗的運行內存越來越大,32位應用的局限性越來越突出。而64位系統,可以在單個線程里使用超過4GB的運行內存,當處理一些大型軟件、或者進行高像素圖像、視頻處理的時候,就更能夠發揮手機硬件的優勢。比如一些大型游戲、網絡視頻直播、高畫質影音播放等等。而且64位系統相比32位系統,會帶來至少20%以上效率的提升。

打入64位的so包必然導致包大小增大很多,導致用戶下載體驗差,目前Google paly支持上傳32位和64位的兩個apk,這樣用戶可以根據手機cpu架構動態的下載那個apk

國內市場暫不支持,但是這個是趨勢,之后必然要上這個功能的,我們在開發的時候,暫時還需要支持'armeabi-v7a', 'arm64-v8a’兩個架構,包大小也會增大很多

3、 處理方案

小米應用商店支持64位架構適配指南: https://dev.mi.com/distribute/doc/details?pId=1244

vivo應用商店64位架構適配指南: https://dev.vivo.com.cn/documentCenter/doc/511

oppo應用商店64位架構適配指南: https://open.oppomobile.com/wiki/doc#id=10948

若要確定應用是否包含 64 位庫,最簡單的方法就是檢查 APK 文件的結構。在構建時,APK 會與應用所需的所有原生庫打包在一起。原生庫會根據 ABI 存儲在不同的文件夾中。您的應用不一定要支持所有 64 位架構,但對于支持的每種原生 32 位架構,應用都必須包含相應的 64 位架構。對于 ARM 架構,32 位庫位于 armeabi-v7a 中。對應的 64 位庫則位于 arm64-v8a 中。

對于 x86 架構,32位庫位于 x86中,64 位庫則位于 x86_64 中。

那么如何查看apk的架構

點擊打出來的apk包,就會出現在目前的apk架構

build.gradle中把ndk的依賴修改,依賴'armeabi-v7a', 'arm64-v8a'

ndk {
            // 選擇要添加的對應 cpu 類型的 .so 庫,多個abi以“,”分隔。
            abiFilters 'armeabi-v7a', 'arm64-v8a'
            // 可指定的值為 'armeabi-v7a', 'arm64-v8a', 'armeabi', 'x86', 'x86_64',
        }

打出的包的結果

打出的包需要在64位測試機上測試,如何查看自己的的android手機的CPU架構呢?

查看Android設備的CPU架構信息,可以使用命令來完成:

  • 1、adb shell
  • 2、cat /proc/cpuinfo

CPU architecture:7表示arm-v7,8表示arm-v8

AArch64是ARMv8 架構的一種執行狀態。


https://mp.weixin.qq.com/s/pmVULbucII_5_geFy5YoGw

最多閱讀

簡化Android的UI開發 3年以前  |  515859次閱讀
Android 深色模式適配原理分析 2年以前  |  27474次閱讀
Android 樣式系統 | 主題背景覆蓋 2年以前  |  8727次閱讀
Android Studio 生成so文件 及調用 2年以前  |  6741次閱讀
30分鐘搭建一個android的私有Maven倉庫 4年以前  |  5508次閱讀
Android設計與開發工作流 3年以前  |  5225次閱讀
移動端常見崩潰指標 2年以前  |  5081次閱讀
Android陰影實現的幾種方案 5月以前  |  5057次閱讀
Google Enjarify:可代替dex2jar的dex反編譯 4年以前  |  5018次閱讀
Android內存異常機制(用戶空間)_NE 2年以前  |  4766次閱讀
Android-模塊化-面向接口編程 2年以前  |  4667次閱讀
Android多渠道打包工具:apptools 4年以前  |  4570次閱讀
Google Java編程風格規范(中文版) 4年以前  |  4423次閱讀
Android死鎖初探 2年以前  |  4391次閱讀

手機掃碼閱讀
18禁止午夜福利体验区,人与动人物xxxx毛片人与狍,色男人窝网站聚色窝
<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>