|
誰もがDouyin(TikTok)を愛用しており、Douyinには優秀な技術チームがいることをご存知でしょう。アプリ開発に加えて、 BoostMultiDexをはじめとするいくつかのソリューションをオープンソース化しています。 BoostMultiDex は、低バージョンの Android デバイス (4.X 以下、SDK < 21) に複数の DEX をすばやくロードするためのソリューションです。 背景古いバージョンのAndroidデバイス(4.X以下、SDK 21未満)では、Javaランタイム環境としてDalvik仮想マシンが使用されていることが分かっています。上位バージョンと比較すると、インストールまたはアップグレード後のコールドブート時間が長くなることが最大の問題です。 これはユーザーエクスペリエンスに大きな影響を与えます。特に海外、東南アジアやラテンアメリカといった地域では、依然としてローエンドデバイスが多数存在しています。4.X未満のバージョンを使用しているユーザーは比較的少ないものの、数億人のユーザーを抱えるTikTokのようなアプリの場合、10%でも数千万人に相当します。そのため、ローエンド市場への参入を目指す場合、これらのユーザーのユーザーエクスペリエンスとアップグレード体験は極めて重要であり、無視することはできません。 この問題の根本的な原因は、MultiDex の初回インストールまたはアップグレードに非常に長い時間がかかることにあります。この問題に対処するため、Dalvik 仮想マシンの基盤となるシステムメカニズムを徹底的に調査し、DEX 関連の処理ロジックを再設計しました。そして最終的に、古い Android バージョンのユーザーのアップグレードとインストールのエクスペリエンスを向上させる BoostMultiDex ソリューションをリリースしました。
技術的なポイントBoostMultiDex ソリューションの主な技術的実装ポイントは次のとおりです。
さらに重要なのは、BoostMultiDexが世界中の数億人のTikTokユーザーで検証済みであり、様々な国や環境のAndroidデバイスをカバーしていることです。現在、業界でこれほど広範なリーチを達成できる大規模アプリはほとんどありません。これにより、様々な特殊な互換性の問題を解決し、技術的ソリューションの安定性を最大限に確保することができました。 クイックアクセスbuild.gradle の依存関係セクションに依存関係を追加します。
公式の MultiDex と同様に、Application.attachBaseContext の最初に初期化できます。
コンパイルとビルドご自身でコンパイルしてパッケージ化する場合は、armeabi アーキテクチャをサポートするために R16B バージョンの NDK を使用する必要があります。必要ない場合は、boost_multidex/build.gradle でこの依存関係を直接削除できます。 ローカル AAR パッケージをビルドするには、次のコマンドを実行します。
出力は パフォーマンス比較上記のデータはDouyinで測定されました。APKには6つのセカンダリDEXが含まれています。BoostMultiDexソリューションは、公式MultiDexソリューションと比較して処理時間を大幅に最適化し、元の11%から17%にまで短縮されていることがわかります。これは、BoostMultiDexが元の処理時間を80%以上短縮していることを意味します。さらに、公式MultiDexソリューションでは、あるデバイスモデルがクラッシュし、起動に失敗したことが確認されました。BoostMultiDexを使用することで、これらのデバイスを再起動できるようになります。 パフォーマンスの比較は次のとおりです。 プロジェクトアドレス: https://github.com/bytedance/BoostMultiDex |