起動プロファイルはベースライン プロファイルのサブセットです。起動プロファイルの用途 クラスとメソッドをさらに最適化するために、 APK の DEX ファイル内のコードのレイアウトを改善します。起動プロファイルを使用すると ベースライン プロファイルのみを使用した場合と比べて、アプリの起動が最大 15% 高速化されます。
<ph type="x-smartling-placeholder">![](https://developer.android.com/static/topic/performance/images/dex-layout-optimizations.png?authuser=0000&hl=ja)
要件
起動プロファイルは次のツールで使用することをおすすめします。
- Jetpack Macrobenchmark 1.2.0 以降
- Android Gradle プラグイン 8.2 以降
- Android Studio Iguana 以降
また、アプリで次の設定が必要です。
- R8 が有効。リリースビルドでは、次のように設定します。
isMinifyEnabled = true
。 - DEX レイアウトの最適化を有効にしました。次の
baselineProfile {}
ブロックでは、 アプリ モジュールのビルドファイルで、dexLayoutOptimization = true
を設定します。
スタートアップ プロファイルを作成する
ベースライン プロファイルとともに起動プロファイルも作成される: デフォルトのベースライン プロファイル ジェネレータ テンプレートを使用してください。
スタートアップ プロファイルを作成して生成する一般的な手順は、 ベースライン プロファイルを作成します。
起動プロファイルを作成するデフォルトの方法は、ベースライン プロファイルを使用することです。
Android Studio 内からジェネレータ モジュール テンプレートを開きます。これには起動や
基本的な起動プロファイルを形成するインタラクションです。この起動プロファイルを補強するため
クリティカル ユーザー ジャーニー(CUJ)が多い場合は、アプリ起動の CUJ を rule
に追加します。
includeInStartupProfile
を true
に設定したブロック。シンプルなアプリでは
アプリの MainActivity
で十分な場合があります。より複雑なアプリの場合は
最も一般的なエントリ ポイントをアプリに追加する方法。
またはディープリンクが起動します。
次のコード スニペットは、ベースライン プロファイル ジェネレータ(デフォルトでは
BaselineProfileGenerator.kt
ファイルなど)に、
ディープリンクが表示されますディープリンクは
アプリのホーム画面ではなく、アプリのニュース フィードに表示されます。
@RunWith(AndroidJUnit4::class)
@LargeTest
class BaselineProfileGenerator {
@get:Rule
val rule = BaselineProfileRule()
@Test
fun generate() {
rule.collect(
packageName = "com.example.app",
includeInStartupProfile = true
) {
// Launch directly into the NEWS_FEED.
startActivityAndWait(Intent().apply {
setPackage(packageName)
setAction("com.example.app.NEWS_FEED")
})
}
}
}
Generate Baseline Profile for app 構成を実行して、
起動プロファイルのルール:
src/<variant>/generated/baselineProfiles/startup-prof.txt
。
起動プロファイルの最適化の確認
DEX レイアウトの最適化を確認するには、Android Studio を使用して APK を開き、
DEX ファイル内のクラスを検証できます。メインの classes.dex
が以下であることを確認してください。
表示されます。アプリが単一の DEX ファイルで構成されている場合は、
起動プロファイルを有効にした後、アプリに 2 つの DEX ファイルが含まれているかどうか。
起動クラスが 1 つの DEX ファイルに収まらない場合、Android Studio は警告を表示します。
診断情報(起動以外の方法の数を含む)を取得するには、
場合、R8 コンパイラがバージョン 2.0 以降のバージョンに
8.3.36-dev バージョンの settings.gradle
ファイルを
起動プロファイルを適用します。
Kotlin
pluginManagement { buildscript { repositories { mavenCentral() maven { url = uri("https://storage.googleapis.com/r8-releases/raw") } } dependencies { classpath("com.android.tools:r8:8.3.6-dev") } } }
Groovy
pluginManagement { buildscript { repositories { mavenCentral() maven { url uri('https://storage.googleapis.com/r8-releases/raw') } } dependencies { classpath 'com.android.tools:r8:8.3.6-dev" } } }
必ず --info
を次の日付の後に追加してください
Gradle でビルドする場合は、次のコマンドで assembleRelease
を使用します。
./gradlew assembleRelease --info
診断情報がターミナルに出力されます。
アプリまたはライブラリが非推奨の API を参照している場合、バンドルされている API これらのクラスの互換性の実装は、常に最後の dex ファイル。この脱糖された最後の DEX ファイルは DEX レイアウトに参加しません 役立ちます
あなたへのおすすめ
- 注: JavaScript がオフになっている場合はリンクテキストが表示されます
- ベースライン プロファイルを作成する {:#creating-profile-rules}
- ベースライン プロファイル {:#baseline-profiles}
- Microbenchmark を作成する