<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          來(lái)了!Android應(yīng)用市場(chǎng)64位應(yīng)用策略

          共 2379字,需瀏覽 5分鐘

           ·

          2021-12-05 08:41


          作者:熊熊君fly 鏈接:https://juejin.cn/post/7023286220662767624

          1 、背景

          2019年8月1號(hào),在Google Play上發(fā)布應(yīng)用必須支持64位架構(gòu),緊接著 小米應(yīng)用商店、OPPO應(yīng)用商店、vivo應(yīng)用商店、騰訊應(yīng)用寶和百度手機(jī)助手等五大應(yīng)用商店宣布,為更好提升App性能體驗(yàn)并降低功耗,五方將共同推進(jìn)國(guó)內(nèi)安卓生態(tài)對(duì)64位架構(gòu)的升級(jí)支持。

          b7c3609923a729d71c094363d9a19c95.webp

          具體的時(shí)間表:

          • 2021年12月底,現(xiàn)有和新發(fā)布的應(yīng)用、游戲,需要上傳包含64位包體的APK包。也就是說(shuō)所有上傳的應(yīng)用都應(yīng)該包含64位代碼的版本,不再接受僅有32位版本的應(yīng)用上傳。
          • 2022年8月底,對(duì)于支持64位的硬件系統(tǒng),將只接收64位版本的APK包。也就是如果到時(shí)用戶手中的硬件設(shè)備支持64位系統(tǒng)的話,那么將只運(yùn)行64位版本的應(yīng)用。
          • 2023年底,硬件將僅支持64位APK,32位應(yīng)用無(wú)法在終端上運(yùn)行。

          大勢(shì)所趨,以后發(fā)布的應(yīng)用要支持64位系統(tǒng),

          2、調(diào)研

          現(xiàn)狀

          目前手機(jī)cpu架構(gòu)是armeabi、armeabi-v7aarm64-v8a、x86x86_64,但是目前手機(jī)基本上都是arm架構(gòu),x86架構(gòu)的手機(jī)基本上沒(méi)有,基本上是平板,可以忽略。

          armeabi是十年前的手機(jī)CPU架構(gòu),基本上沒(méi)有了。

          armeabi-v7a的CPU架構(gòu)是32位。

          Arm64-v8a的CPU架構(gòu)是64位。

          所以目前需要考慮的armeabi-v7a、arm64-v8a這兩款就可以了, 之前開發(fā)者在打包的時(shí)候,為了包大小的考慮,常常指定打包的時(shí)候,只指定armeabi-v7a架構(gòu)的so包,這樣包大小可以小很多,尤其是so庫(kù)多的應(yīng)用

          ndk?{
          ????//?選擇要添加的對(duì)應(yīng) cpu 類型的 .so 庫(kù),多個(gè)abi以“,”分隔。
          ????abiFilters?'armeabi-v7a'
          ????//?可指定的值為?'armeabi-v7a',?'arm64-v8a',?'armeabi',?'x86',?'x86_64'
          }

          在項(xiàng)目的gradle中配置ndk就可以,64位的手機(jī)會(huì)自適應(yīng)32位的應(yīng)用,這樣可以完美的兼容市面上99.9%的手機(jī),這樣包大小也會(huì)小很多 但是這樣64位處理器的性能就無(wú)法完美的發(fā)揮出來(lái),那么應(yīng)用64位有哪些好處呢?

          由于一些軟件功能越來(lái)越多,安裝包的體積、運(yùn)行時(shí)需要消耗的運(yùn)行內(nèi)存越來(lái)越大,32位應(yīng)用的局限性越來(lái)越突出。而64位系統(tǒng),可以在單個(gè)線程里使用超過(guò)4GB的運(yùn)行內(nèi)存,當(dāng)處理一些大型軟件、或者進(jìn)行高像素圖像、視頻處理的時(shí)候,就更能夠發(fā)揮手機(jī)硬件的優(yōu)勢(shì)。比如一些大型游戲、網(wǎng)絡(luò)視頻直播、高畫質(zhì)影音播放等等。而且64位系統(tǒng)相比32位系統(tǒng),會(huì)帶來(lái)至少20%以上效率的提升。

          打入64位的so包必然導(dǎo)致包大小增大很多,導(dǎo)致用戶下載體驗(yàn)差,目前Google paly支持上傳32位和64位的兩個(gè)apk,這樣用戶可以根據(jù)手機(jī)cpu架構(gòu)動(dòng)態(tài)的下載那個(gè)apk

          國(guó)內(nèi)市場(chǎng)暫不支持,但是這個(gè)是趨勢(shì),之后必然要上這個(gè)功能的,我們?cè)陂_發(fā)的時(shí)候,暫時(shí)還需要支持'armeabi-v7a', 'arm64-v8a’兩個(gè)架構(gòu),包大小也會(huì)增大很多

          3、 處理方案

          小米應(yīng)用商店支持64位架構(gòu)適配指南: https://dev.mi.com/distribute/doc/details?pId=1244

          vivo應(yīng)用商店64位架構(gòu)適配指南: https://dev.vivo.com.cn/documentCenter/doc/511

          oppo應(yīng)用商店64位架構(gòu)適配指南: https://open.oppomobile.com/wiki/doc#id=10948

          若要確定應(yīng)用是否包含 64 位庫(kù),最簡(jiǎn)單的方法就是檢查 APK 文件的結(jié)構(gòu)。在構(gòu)建時(shí),APK 會(huì)與應(yīng)用所需的所有原生庫(kù)打包在一起。原生庫(kù)會(huì)根據(jù) ABI 存儲(chǔ)在不同的文件夾中。您的應(yīng)用不一定要支持所有 64 位架構(gòu),但對(duì)于支持的每種原生 32 位架構(gòu),應(yīng)用都必須包含相應(yīng)的 64 位架構(gòu)。對(duì)于 ARM 架構(gòu),32 位庫(kù)位于?armeabi-v7a?中。對(duì)應(yīng)的 64 位庫(kù)則位于?arm64-v8a?中。

          對(duì)于 x86 架構(gòu),32位庫(kù)位于?x86中,64 位庫(kù)則位于 x86_64 中。

          那么如何查看apk的架構(gòu)05ab09e93e34dd66fd9a0dcc40914889.webp

          點(diǎn)擊打出來(lái)的apk包,就會(huì)出現(xiàn)在目前的apk架構(gòu)

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

          ndk?{
          ????????????//?選擇要添加的對(duì)應(yīng) cpu 類型的 .so 庫(kù),多個(gè)abi以“,”分隔。
          ????????????abiFilters?'armeabi-v7a',?'arm64-v8a'
          ????????????//?可指定的值為?'armeabi-v7a',?'arm64-v8a',?'armeabi',?'x86',?'x86_64',
          ????????}

          打出的包的結(jié)果

          f4c1b03ed3783e49022747617ec7c0ce.webp

          打出的包需要在64位測(cè)試機(jī)上測(cè)試,如何查看自己的的android手機(jī)的CPU架構(gòu)呢?

          查看Android設(shè)備的CPU架構(gòu)信息,可以使用命令來(lái)完成:

          • 1、adb shell

          • 2、cat /proc/cpuinfo

          4645d2127d696f20dc389ec16eaa8bcd.webp

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

          AArch64是ARMv8 架構(gòu)的一種執(zhí)行狀態(tài)。




          c17c973643907153d3b7c64b119685b6.webp

          ? 耗時(shí)2年,Android進(jìn)階三部曲第三部《Android進(jìn)階指北》出版!

          ? 『BATcoder』做了多年安卓還沒(méi)編譯過(guò)源碼?一個(gè)視頻帶你玩轉(zhuǎn)!

          ? 『BATcoder』我去!安裝Ubuntu還有坑?

          ? 重生!進(jìn)階三部曲第一部《Android進(jìn)階之光》第2版 出版!

          為了防止失聯(lián),歡迎關(guān)注我的小號(hào)

          ??微信改了推送機(jī)制,真愛請(qǐng)星標(biāo)本公號(hào)??
          瀏覽 154
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩人妻无码一区二区三区99 | 91大庆哥 在线观看 | 日本黄色高清视频 | 亚洲无码东京热精工厂 | 五月婷婷丁香在线导航 |