問題
今天和iOS開發(fā)老大終于解決了一個一直遇到的奇怪問題:公司mis環(huán)境下的詞場App iOS版在iPhone6和iPhone6s的尺寸偏大唧取,大到和iPhone6 plus一樣的尺寸铅鲤,可是一旦上傳至AppStore,其頂部icon大小又恢復(fù)正常了枫弟。
more
問題分析
問題拆解彩匕,總共有兩個問題,其一:iPhone6和iPhone6s上的mis環(huán)境的詞場App的icon尺寸不對媒区,偏大驼仪;其二:同樣的源代碼打包上傳至AppStore,再再從AppStore安裝袜漩,這么一來一回绪爸,icon大小正常。
猜測:
問題一是由于代碼層面宙攻,判斷機型匹配不同尺寸的icon時奠货,誤把iPhone6和iPhone6s與大尺寸的icon匹配。
問題二座掘,是由于雖然代碼層面將iPhone6和iPhone6s與大尺寸的icon匹配递惋,但是AppStore對于App的資源和不同版本之間做了對應(yīng)的匹配,iPhone6和iPhone6s只下載2X的圖片溢陪,因此顯示正常萍虽。
修復(fù)問題
驗證:修改了icon與機型匹配代碼之后果然mis包也正常了。同時查看iOS9開發(fā)文檔得知形真,針對于Universal App[同一個App適配iPhone和iPad杉编,且只收一份的價格]iOS9推出了App Thinning。
App Thinning
WWDC15推出了該功能。App Thinning(應(yīng)用瘦身)包含三個部分:應(yīng)用分割(Slicing)邓馒、中間代碼(Bitcode)和On-demand資源(Resources)
應(yīng)用分割(Slicing):AppStore根據(jù)設(shè)備的不同特性來讓其下載不同的資源嘶朱。當開發(fā)將iOS9 app包打包上傳到AppStore后,蘋果編譯該資源和可執(zhí)行文件光酣,然后為每個設(shè)備根據(jù)其特性[包含顯卡性能(原文單詞:graphics capabilities)疏遏、內(nèi)存級別、CPU架構(gòu)救军、size classes财异、屏幕 scaling]生成一個特定的可執(zhí)行文件。用戶的設(shè)備根據(jù)該可執(zhí)行文件缤言,下載適應(yīng)與其特性對應(yīng)的并且它需要使用的內(nèi)容宝当。
中間代碼(Bitcode视事,適用于iOS和watchOS):蘋果可以在恰當?shù)臅r候重新優(yōu)化我們程序的二進制文件胆萧。Bitcode是一個已編譯程序(Compiled Program)的中間代碼(intermediate representation)可以作為你中間產(chǎn)物,在你提交App到AppStore的時候提交俐东。如果你上傳到iTunes Connect里的應(yīng)用包含bitcode的話跌穗,就可以被編譯和鏈接到App Store。加入Bitcode可以讓蘋果在未來對你的應(yīng)用二進制(app binary)進行再次優(yōu)化虏辫,而不需要你向App Store提交新版本蚌吸。
On-Demand資源(適用于iOS系統(tǒng)):應(yīng)用程序的資源只有在需要的時候下載,并且如果其他資源需要這些空間資源可以被移除砌庄。你可以通過關(guān)鍵詞和命令的方式進行分組歸類的資源羹唠,比如圖像和音頻,App Store會把這些資源放在蘋果服務(wù)器上并且為你管理下載娄昆。On-Demand資源可以加快下載速度并縮小應(yīng)用包體佩微,提高用戶的首次登錄體驗。比如萌焰,一款游戲應(yīng)用可以根據(jù)等級和任務(wù)的不同把資源分組哺眯,在玩家達到下一個等級或者完成一個任務(wù)之后才會用到后續(xù)的資源,同樣扒俯,應(yīng)用也可以只在用戶進行IAP購買的時候提供對應(yīng)的資源奶卓。
顯然由于App Thinning,我們上傳至AppStore的開心詞場App,在下載到用戶設(shè)備的時候撼玄,被重新優(yōu)化和根據(jù)設(shè)備的不同自動下載不同的資源了夺姑。
機型對應(yīng)icon尺寸
上面提到,iPhone6和iPhone6 plus的尺寸大小是不一樣的概念掌猛,我們來看看具體的情況是怎么樣的瑟幕。對于iPhone不同的機型來說,icon的大小分為:1x、2x只盹、3x辣往。這里的1x、2x殖卑、3x指基于一定屏幕寬度尺寸的像素數(shù)站削。
標注圖(以340為寬度尺寸為基準切圖)
2x切圖(以640為寬度尺寸為基準切圖)
3x切圖(以1280為寬度尺寸為基準切圖)
對應(yīng)的機型如下:
點和物理像素的區(qū)別:
參考
推薦:
iPhone、iPad孵稽、Android設(shè)備尺寸
更多文章請關(guān)注许起,我的個人博客:pdzhangyi.com