透過集合功能整理內容 你可以依據偏好儲存及分類內容。

ProfileInstaller

  
在 ART 讀取時間編譯追蹤記錄之前,讓程式庫預先填入。
最近更新時間 穩定版 候選版 Beta 版 Alpha 版
2022 年 11 月 9 日 1.2.0 - - 1.3.0-alpha02

宣告依附元件

如果要為 ProfileInstaller 新增依附元件,您必須將 Google Maven 存放區新增至專案。詳情請參閱 Google 的 Maven 存放區

在應用程式或模組的 build.gradle 檔案中,新增您需要的構件依附元件:

Groovy

dependencies {
    implementation "androidx.profileinstaller:profileinstaller:1.2.0"
}

Kotlin

dependencies {
    implementation("androidx.profileinstaller:profileinstaller:1.2.0")
}

如要進一步瞭解依附元件,請參閱「新增建構依附元件」一文。

意見回饋

您的意見可協助我們改善 Jetpack。發現新的問題或有改善這個程式庫的想法時,請告訴我們。建立新的問題之前,請先查看這個程式庫中的現有問題。只要按一下星號按鈕,即可投票給現有的問題。

建立新問題

詳情請參閱 Issue Tracker 說明文件

1.3 版本

1.3.0-alpha02 版本

2022 年 11 月 9 日

發布了 androidx.profileinstaller:profileinstaller:1.3.0-alpha021.3.0-alpha02 版包含以下修訂項目。

API 變更

  • 為基準新增了掛鉤,用於拖曳著色器快取,確保冷啟動的效能保持一致,特別是在透過暖身疊代的設定檔編譯時。這項更新必須使用 benchmark-macro-junit4:1.2.0-alpha05 會以上版本才能評估冷啟動。如需瞭解基準程式庫的 API 變更,請參閱基準 1.2.0-alpha07 頁面 (Ia5171b/231455742)。

1.3.0-alpha01 版本

2022 年 10 月 24 日

發布了 androidx.profileinstaller:profileinstaller:1.3.0-alpha011.3.0-alpha01 版包含以下修訂項目。

API 變更

  • 新增了 ProfileVerifier API,用於在應用程式中檢查是否已編譯、排程或缺少基準設定檔 (I263a4b/246653809)
  • 新增殼層播送,這可讓 Macrobenchmark 將記憶體內設定檔資料全部清除至磁碟,以包含在基準設定檔產生中。必須使用 Macrobenchmark 程式庫,才能透過 BaselineProfileRule 擷取基準設定檔,並使用 CompilationMode.Partial(warmupIterations) 評估設定檔效能。(Ie0a7db/250083467b/253094958)

1.2.0 版本

1.2.0 版本

2022 年 7 月 27 日

發布了 androidx.profileinstaller:profileinstaller:1.2.01.2.0 版本包含以下修訂項目。

自 1.1.0 版以來的重要異動

  • 加入 Android 12 以上版本使用的 ART 設定檔格式支援。
  • ProfileInstallReceiver 中新增 API,即可在使用基準設定檔時取得更多與 Macrobenchmarks 一致的結果。

1.2.0-rc01 版本

2022 年 6 月 15 日

發布了 androidx.profileinstaller:profileinstaller:1.2.0-rc011.2.0-rc01 版本包含以下修訂項目

  • 這個版本與 androidx.profileinstaller:profileinstaller:1.2.0-beta03 相同。

1.2.0-beta03 版本

2022 年 6 月 1 日

發布了 androidx.profileinstaller:profileinstaller:1.2.0-beta031.2.0-beta03 版本包含這些修訂項目。

1.2.0-beta02 版本

2022 年 5 月 18 日

發布了 androidx.profileinstaller:profileinstaller:1.2.0-beta021.2.0-beta02 版本包含以下修訂項目。

  • 無更改,為支援 Compose 1.2.0-beta02 版本所需。

1.2.0-beta01 版本

2022 年 5 月 11 日

發布了 androidx.profileinstaller:profileinstaller:1.2.0-beta011.2.0-beta01 版包含這些修訂版本。

API 變更

  • ProfileInstallReceiver 中新增 API,即可在使用基準設定檔時取得更多與 Macrobenchmarks 一致的結果。(If2ae5b/215740637)

修正錯誤

  • 嘗試在 Android 12 及以上版本中使用中繼資料 V_001 格式時,設定檔安裝程式會擲回有用的幫助訊息。(aosp/1978526b/217502387)
  • 設定檔安裝程式現在使用的是 androidx.startup 1.1.1 版本。(aosp/2077099b/229828376)

1.2.0-alpha02 版本

2022 年 1 月 26 日

發布了 androidx.profileinstaller:profileinstaller:1.2.0-alpha021.2.0-alpha02 版本包含以下修訂項目。

這個版本與 1.2.0-alpha01 相同。

1.2.0-alpha01 版本

2022 年 1 月 12 日

發布了 androidx.profileinstaller:profileinstaller:1.2.0-alpha011.2.0-alpha01 版本包含以下修訂項目。

新功能

  • 支援 Android 12 以上版本使用的 ART 設定檔格式。

1.1.0 版本

1.1.0 版本

2022 年 2 月 9 日

發布了 androidx.profileinstaller:profileinstaller:1.1.01.1.0 版本包含以下修訂項目。

1.1.0-rc01 版本

2021 年 12 月 15 日

發布了 androidx.profileinstaller:profileinstaller:1.1.0-rc01,自 1.1.0-beta04 以來沒有更新。1.1.0-rc01 版本包含以下修訂項目。

1.1.0-beta04 版本

2021 年 12 月 1 日

發布了 androidx.profileinstaller:profileinstaller:1.1.0-beta041.1.0-beta04 版本包含以下修訂項目。

1.1.0-beta03 版本

2021 年 11 月 17 日

發布了 androidx.profileinstaller:profileinstaller:1.1.0-beta031.1.0-beta03 版本包含以下修訂項目。

修正錯誤

  • 更新為可支援 Compose 1.1.0-beta03

1.1.0-beta02 版本

2021 年 11 月 3 日

發布了 androidx.profileinstaller:profileinstaller:1.1.0-beta021.1.0-beta02 版本包含以下修訂項目。

修正錯誤

  • 更新為可支援 Compose 1.1.0-beta02

1.1.0-beta01 版本

2021 年 10 月 27 日

發布了 androidx.profileinstaller:profileinstaller:1.1.0-beta011.1.0-beta01 版本包含以下修訂項目。

  • 自 1.1.0-alpha07 版本以來沒有變更。

1.1.0-alpha07 版本

2021 年 10 月 13 日

發布 androidx.profileinstaller:profileinstaller:1.1.0-alpha071.1.0-alpha07 版本包含以下修訂項目。

新功能

  • 支援 Android N 的 Profm 功能

1.1.0-alpha06 版本

2021 年 9 月 29 日

發布 androidx.profileinstaller:profileinstaller:1.1.0-alpha061.1.0-alpha06 版本包含以下修訂項目。

修正錯誤

  • 修正 N、O 和 O_MR1 上的 profileinstaller 轉碼問題。(I12d75)

1.1.0-alpha05 版本

2021 年 9 月 15 日

發布 androidx.profileinstaller:profileinstaller:1.1.0-alpha051.1.0-alpha05 版本包含以下修訂項目。

修正錯誤

  • 修正 multidex APK 的 Android Nougat 和 Android Oreo 設定檔轉碼問題。

1.1.0-alpha04 版本

2021 年 9 月 1 日

發布 androidx.profileinstaller:profileinstaller:1.1.0-alpha041.1.0-alpha04 版本包含以下修訂項目。

修正錯誤

  • 修正 ProfileInstaller,方便應用程式使用基準設定檔透過 CompilationMode.BaselineProfile 執行 MacroBenchmarks。(I42657b/196074999)

1.1.0-alpha03 版本

2021 年 8 月 18 日

發布 androidx.profileinstaller:profileinstaller:1.1.0-alpha031.1.0-alpha03 版本包含以下修訂項目。

修正錯誤

  • 將 profileinstaller 略過行為變更為將 PackageInfo.lastUpdatedTime 記錄在應用程式檔案目錄中的檔案裡,並在下次執行安裝設定檔之前進行比較 (Ib93d1)
  • 調整 P、Q、R 裝置的設定檔格式,以符合 ART 規定 (I84e89)

1.1.0-alpha02 版本

2021 年 8 月 4 日

發布 androidx.profileinstaller:profileinstaller:1.1.0-alpha021.1.0-alpha02 版本包含以下修訂項目。

更新為可支援 Compose 1.1.0-alpha01。

1.1.0-alpha01 版本

2021 年 7 月 21 日

發布 androidx.profileinstaller:profileinstaller:1.1.0-alpha011.1.0-alpha01 版本包含以下修訂項目。

修正錯誤

  • 修正在某些情況下會觸發嚴格模式的錯誤。

1.0 版本

1.0.4 版本

2021 年 10 月 13 日

發布了 androidx.profileinstaller:profileinstaller:1.0.41.0.4 版本包含以下修訂項目。

  • 更新為可支援 Compose 1.0.4

1.0.3 版本

2021 年 9 月 29 日

發布了 androidx.profileinstaller:profileinstaller:1.0.31.0.3 版本包含以下修訂項目。

  • 更新為可支援 Compose 1.0.3

1.0.2 版本

2021 年 9 月 1 日

發布了 androidx.profileinstaller:profileinstaller:1.0.21.0.2 版本包含以下修訂項目。

修正錯誤

  • 為 P、Q、R 裝置新增設定檔轉碼。這項變更表示這些裝置會將設定檔轉碼,確保寫下的設定檔隨時可供 ART 使用。以往在這些平台上,系統會略過轉碼,有時這會造成 ART 無法處理來源設定檔。開發人員 API 沒有任何變更。

1.0.1 版本

2021 年 8 月 4 日

發布了 androidx.profileinstaller:profileinstaller:1.0.11.0.1 版本包含以下修訂項目。

更新為可支援 Compose 1.0.1。

1.0.0 版本

2021 年 7 月 28 日

發布了 androidx.profileinstaller:profileinstaller:1.0.01.0.0 版本包含以下修訂項目。

1.0.0 的主要功能

設定檔安裝程式是一種新的程式庫,可讓程式庫和應用程式定義「設定檔規則」,並將 ART 設定檔資訊與 APK 組合起來,這種程式庫會在應用程式啟動後安裝這些設定檔。這可以用來改善應用程式效能。

如要進一步瞭解這些設定檔規則是什麼,其運作方式又是如何,請參閱 1.0.0-beta01 的詳細版本資訊。

1.0.0-rc02 版本

2021 年 7 月 14 日

發布了 androidx.profileinstaller:profileinstaller:1.0.0-rc021.0.0-rc02 版本包含這些修訂版本。

1.0.0-rc01 版本

2021 年 7 月 1 日

發布了 androidx.profileinstaller:profileinstaller:1.0.0-rc011.0.0-rc01 版本包含以下修訂項目。

此為 RC 版本,沒有變更 Beta 版任何內容。

1.0.0-beta01 版本

2021 年 6 月 16 日

androidx.profileinstaller:profileinstaller:1.0.0-beta01 發布。1.0.0-beta01 版本包含以下修訂項目。

程式庫用途

設定檔安裝程式是一種新的程式庫,可讓程式庫和應用程式定義「設定檔規則」,並將 ART 設定檔資訊與 APK 組合起來,這種程式庫會在應用程式啟動後安裝這些設定檔。這可以用來改善應用程式效能。

這個設定檔安裝作業是由 androidx.startup 程式庫完成。如果有人因任何理由想停用設定檔案安裝作業,可以透過修改資訊清單的方式將其移除:


       <provider
           android:name="androidx.startup.InitializationProvider"
           android:authorities="${applicationId}.androidx-startup"
           android:exported="false"
           tools:node="merge">
           <meta-data android:name="androidx.profileinstaller.ProfileInstallerInitializer"
                     tools:node="remove" />
       </provider>

如果您的應用程式啟動規定較複雜,您希望使用 ProfileInstaller.writeProfile API 手動觸發安裝作業,這種停用方法就能派上用場。

什麼是設定檔規則?

  • 程式庫的設定檔規則在位於 src/main 或同等目錄中的文字檔 baseline-prof.txt 內進行指定。該檔案會每行指定一個規則,這裡的規則是指對應至程式庫方法或類別的模式。這些規則所用語法是人類可讀形式的 ART 設定檔格式的超集,使用 adb shell profman --dump-classes-and-methods ... 時會用到這類格式。這些規則會採用兩種形式之一來指定方法或類別。

  • 方法規則將採用以下模式:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • 類別規則將採用以下模式:

    <CLASS_DESCRIPTOR>
    
  • 此處的 <FLAGS>HSP 之中的一或多個字元,用於指出這個方法應標記為「Hot」、「Startup」或「Post Startup」。

  • <CLASS_DESCRIPTOR> 是指定方法所屬的類別描述元。舉例來說,androidx.compose.runtime.SlotTable 類別的描述元是 Landroidx/compose/runtime/SlotTable;

  • <METHOD_SIGNATURE> 是方法的簽名,含有該方法的名稱、參數類型和傳回類型。舉例來說,LayoutNode 上的 fun isPlaced(): Boolean 方法含有 isPlaced()Z 簽名。

  • 這些模式可包含萬用字元 (***?),以便讓單一規則涵蓋多種方法或類別。

規則有何作用?

  • 方法中如果帶有 H 標記,表示這個方法是「Hot」方法,應該預先完成編譯。

  • 方法中如果帶有 S 標記,表示這是系統會在啟動時呼叫的方法,應該預先完成編譯,以免啟動時耗費資源處理編譯作業及解析方法。

  • 方法中如果帶有 P 標記,表示這是系統在啟動之後才會呼叫的方法。

  • 如果類別顯示在這個檔案中,表示系統會在啟動期間使用該類別,因此應該要事先在堆積中分配該類別,以免耗費載入類別的成本。

運作方式

  • 程式庫可以定義將要封裝於 AAR 構件中的規則。當建構包含這些構件的 APK 時,這些規則將合併在一起,合併後的規則會用於建構該 APK 專用的精簡二進制 ART 設定檔。當該應用程式安裝在裝置上時,ART 便可以利用這個設定檔預先編譯特定應用程式子集,以提高應用程式效能,特別是首次執行的效能。請注意,這項設定對於可進行偵錯的應用程式不會產生任何影響。

  • 規則檔案應命名為 baseline-prof.txt,並放置在主要來源集的根目錄中 (該檔案應屬於您 AndroidManifset.xml 檔案的同層級檔案)

  • 目前您必須使用 Android Gradle 外掛程式 7.0 以上版本才能運用這些檔案,而且您的 gradle.properties 中必須設有旗標才能啟用:

    # Enable adding baseline-prof.txt files to AAR artifacts, and binary profiles to APKs
    android.experimental.enableArtProfiles=true
    

設定檔必須保持平衡

  • 設定檔會正確排定需要優先處理的項目,也就是在啟動路徑上以及對效能有重大影響的方法和類別,這樣一來就能產生最佳成效。不過,若是在設定檔中納入過多方法或類別,可能在記憶體消耗和磁碟用量反而會造成負面影響。因此,建議在自行定義設定檔規則時,一開始採用保守的做法。