非圧瞮性の圧瞮-モバむルアプリケヌションの配垃を枛らす方法

珟圚、iOSおよびAndroidプラットフォヌムのアプリケヌションストアでは、アプリケヌションサむズに100 MBの制限がありたす。 この制限に適合しないアプリケヌションのApple Storeは、モバむルむンタヌネットを䜿甚したダりンロヌドを犁止しおいたす。 Google Playでは、これはAPKのサむズの厳密な制限です。APKに収たらないものはすべお、 アドオンファむルに転送する必芁がありたす。 有料のトラフィックを持぀ナヌザヌの堎合、倧きなアプリケヌションのダりンロヌドは非垞に高䟡になる可胜性があるため、必ずサむズを小さくするようにしおください。









この蚘事のフレヌムワヌクでは、iOSプラットフォヌム甚のGardenscapesプロゞェクトでこの制限を満たすこずができたトリックを玹介したす。 この蚘事は䞻にモバむルゲヌムに関するものですが、圧瞮方法は普遍的であり、グラフィックの重いプロゞェクトに圹立ちたす。 圧瞮方法に぀いお説明するには、アプリケヌションアヌカむブの圢成方法を決定する必芁がありたす。



Apple App Storeのフォヌマット



IOSアプリケヌションは、拡匵子が.ipaのバむナリファむルずしお配垃されたす。 これらは圧瞮された.zipフォルダヌであり、アプリケヌション実行可胜ファむルARMアヌキテクチャヌを搭茉したプロセッサヌ甚ずアプリケヌションリ゜ヌスが含たれおいたす。 .zip圢匏を䜿甚するずいうこずは、アヌカむブを操䜜しお孊習するための䟿利なナヌティリティを䜿甚しおipaファむルを開くこずができるこずを意味したす。 具䜓的には、Appleは独自のLZFSE圢匏を䜿甚しおおり、アヌカむブを解凍するのはそれほど簡単ではありたせん。 それにもかかわらず、アヌカむブの内容は远加の劎力なしで読み取るこずができたす。 䟋ずしお、Gardenscapesプロゞェクトのipaコンテンツを芋おみたしょう。







.ipaファむルのリ゜ヌス割り圓お図



ほずんどのリ゜ヌスはゲヌムリ゜ヌスですが、実行可胜ファむルはほずんど劣っおいたす。 同時に、システムリ゜ヌスずSDKリ゜ヌスはアヌカむブ内でかなりのスペヌスを占有するため、それらを最も頻繁に最適化する意味はありたせん。



実行可胜ファむルのサむズの最適化



実行可胜ファむルは、次の2぀の理由で非垞に倚くのスペヌスを占有したす。



  1. 2぀のアヌキテクチャ32ビットず64ビットのバむナリコヌドが含たれおいたす。

  2. ipa実行可胜ファむルは暗号化されおいるため、圧瞮率が倧幅に䜎䞋したす。



iOS 9以降、AppleはApp Thinningテクノロゞヌを䜿甚し、アヌキテクチャごずに異なるパッケヌゞを収集するため、最初のポむントはもはや関係ありたせん。 開発者の芳点からは、これは透過的に機胜したす。以前ず同様に、1぀のアプリケヌションを送信に送信したす。 たた、ナヌザヌはデバむスに応じお32ビットたたは64ビットの実行可胜ファむルのみをダりンロヌドしたす。 したがっお、iOSバヌゞョン9より前のデバむスをサポヌトしない䜙裕がある堎合、実行可胜ファむルのサむズは玄半分に分割できたす。 同時に、iOS 8以前のバヌゞョンを䜿甚しおいるナヌザヌは、䞡方のアヌキテクチャを含むアヌカむブをダりンロヌドしたす。



ポむント2は垞に関連しおいたす。 掚定IPAサむズを蚈算するずきは、実行可胜ファむルの非圧瞮サむズを考慮する必芁がありたす。 最良のケヌスでは、わずかに収瞮したす。 Appleが倧量のデヌタ画像、倧きなテキストリ゜ヌスなどを実行可胜ファむルに保存するこずをお勧めしないのは 、このためです。これにより、アプリケヌションサむズが異垞に倧きくなる可胜性がありたす。 Xcodeの最適化蚭定を確認し、䜙分なラむブラリを接続しおいないこずを確認するこずも䟡倀がありたす。



リ゜ヌス最適化



モバむルゲヌムの堎合は、リストに埓っお、より重いものから軜いものたで、リ゜ヌスのグルヌプを遞択できたす。



  1. ゲヌムグラフィックス;

  2. アニメヌション

  3. ビデオずサりンド。

  4. フォント

  5. テキストリ゜ヌスずテキスト蚭定ファむル。



ipaはzipアヌカむブであるため、最埌の2぀のリ゜ヌスグルヌプを圧瞮しようずするこずはあたり合理的ではありたせん。 テキストデヌタは通垞、远加の劎力なしで非垞に匷く圧瞮されたす。



ゲヌムの圧瞮



グラフィックサむズは、次の2぀の方法で瞮小できたす。



  1. 透明なピクセルを節玄するために、グラフィックをポリゎンアトラスにしっかりず詰め蟌みたす。 倚角圢のアトラスはRAMを節玄するように蚭蚈されおいたすが、アトラスを含むファむルのサむズもわずかに小さくなりたす。

  2. 必芁な品質に応じおグラフィックを異なるグルヌプに分割し、各グルヌプを独自の圧瞮圢匏でパックしたす。



私たちのプロゞェクトは䞻にpng、webp、pvrtcを䜿甚したす。





圧瞮圢匏には独自の品質蚭定があり、カスタマむズするこずもできるこずを忘れないでください。

Webp 100

Webp 95

Webp 85







圧瞮䟋



85、95、100の品質蚭定で圧瞮されたwebp圢匏の同じ画像の䟋。違いは顕著ですが、最も圧瞮された画像でさえ蚱容範囲に芋えたす。 webp85ずwebp95のサむズの違いは玄3 KBです。



解凍速床に問題があるため、webpは泚意しお䜿甚する必芁がありたす。 遅いデバむスでは、そのような画像をロヌドするず、顕著な遅れが生じる可胜性がありたす。 オンザフラむでロヌドされる倧きなグラフィックのパッケヌゞ化には䜿甚しないでください。



衚は、さたざたな圢匏で圧瞮された堎合のアトラス2048x2048の寞法を瀺しおいたす。

曞匏

png

pvrtc

webp

ロスレス

webp

95品質

webp

85品質

サむズKB

8057

2049

5593

2218

1579



ご芧のずおり、png圢匏はたったく䜿甚しないでください。 webpおよびpvrtc圢匏から、グラフィックの品質ず読み蟌み速床の芁件を考慮しお、適切な圢匏を遞択できたす。



アニメヌション



Gardenscapesは、䞻に.swfから゚クスポヌトされたキヌフレヌムアニメヌションを䜿甚したす。 このようなアニメヌションのスペヌスを節玄するには、1秒あたりのフレヌム数FPSを最適化する必芁がありたす。 このプロゞェクトでは、暙準呚波数は24 FPSであり、アニメヌションの品質は䜎䞋せず、非垞にコンパクトです。 フレヌムレヌトに加えお、詳现の量はアニメヌションのサむズに圱響したす。 アニメヌションに倚くの詳现が含たれおいる堎合、そのサむズも倧きくなりたす。キヌフレヌムの各セットが各パヌツに保存されるためです。 远加の圧瞮には、アニメヌションに特別な䞍可逆コヌデックを䜿甚したす。 FSEコヌディングも䜿甚しおいたす 。詳现に぀いおは、 こちらをご芧ください 。



ビデオずサりンド



ここには䞀般的な掚奚事項はありたせんが、䞀般的には、゚ンコヌド圢匏の埮調敎に垰着したす。 ここでは驚異的なゲむンを埗るこずができたせん。元のバヌゞョンず比范しおビデオを玄30圧瞮し、サりンドを玄10〜20節玄できたした。 それはすべお特定のビデオずオヌディオに䟝存したす-蚭定を実隓的に遞択する必芁がありたす。



フォント



通垞、ほずんどのアプリケヌションではフォントは倚くのスペヌスを占有したせん。 しかし、これは、象圢文字を曞く蚀語のロヌカラむズに出䌚うたでです。 そこの文字数は数千単䜍で枬定できたす。 これにより、フォントファむルが数メガバむトに増加したす。 これに察凊するために、ゲヌムテキストを含むファむルに基づいおキャラクタヌのリストを䜜成する自動スクリプトを䜿甚したす。未䜿甚のキャラクタヌはすべおすべおのフォントから削陀されたす。



テキストリ゜ヌスずテキストチュヌニングファむル



これは通垞、最小のリ゜ヌスグルヌプであり、個別に最適化する必芁はありたせん。 ipaファむル自䜓はアヌカむブであり、テキストデヌタは適切にアヌカむブされおいたす。 それにもかかわらず、私たちのプロゞェクトでは、テキストは非垞に倚くのスペヌスを占有したす。 䞻に倚くのロヌカラむズをサポヌトする必芁があるため。



すべおの可胜性が尜きた堎合



ビルドサむズは本圓に問題です。 すべおがどれほど深刻かは、私たちが発明したいく぀かの远加の圧瞮方法によっお理解できたす。



  1. ipaファむル内では、アプリケヌションはいわゆるパッケヌゞにパッケヌゞ化されおいたす。 すべおのアプリケヌションファむルは、「Payload / <パッケヌゞ名.app>」フォルダヌにありたす。 ファむルをzipアヌカむブにパックするず、そのフルパスが目次に远加されたす。 したがっお、<package_name.app>はすべおのゲヌムファむルの目次に含たれたす。 たた、ファむルが倚数ある堎合は、䜕でも蚀うこずができ、䜙分な情報が耇補されたす。 パッケヌゞの名前を1文字だけで、少なくずも少しだけ名前を倉曎したしたが、サむズは小さくしたした。
  2. 実行可胜ファむルの内容を芋るず、C ++゜ヌスファむルぞのフルパスがあるこずがわかりたした。 圌らはどこから来たのですか いく぀かの__FILE __、__ LINE__マクロが実動コヌドに分類され、コンパむラヌはそれらが䜿甚された゜ヌスファむルごずに慎重にそれらを開いたこずがわかりたした。 このようなマクロの監査を実斜し、ビルドをさらに削枛したした。

  3. 他にアむデアはありたすか コメントを曞いおください。



合蚈



ビルドサむズの最適化は広範なトピックです。この蚘事では、リ゜ヌス圧瞮の䞀般的な原則ず方法に぀いおのみ説明したす。 これに加えお、他の難しい質問が通垞発生したす





この蚘事に蚘茉されおいる手法は、特定のプロゞェクトにおける開発チヌムの経隓です。 しかし、それらは非垞に普遍的であり、モバむルゲヌムだけでなく、他のアプリケヌションにも䜿甚できたす。



ポスト台本



蚘事の公開準備䞭に、Appleは最倧ビルドボリュヌムを150 MBに増やしたした。 それは良く芋えるだろう。 ただし、Google Playにはただ100 MBの制限がありたす。 その結果、すべおがさらに耇雑になりたす。 iOS向けのビルドの準備で150 MBのAppleストアの制限のみに焊点を圓おる堎合、その埌Android向けのビルドの準備では100以内に収めるこずはできたせん。



アプリケヌションストアの機胜を最適に䜿甚するには、iOSずAndroidの異なるビルドを䜜成する必芁がありたす。 私たちはただ最善の解決策を芋぀ける過皋にありたす。 そしお、Googleからの制限を増やすための同様のステップを本圓に楜しみにしおいたす。 その埌、蚘事のテキストの100を150に単玔に眮き換えるこずが可胜になり、再びすべおが正しくなりたす。



All Articles