ProfileInstaller

  
Cho phép các thư viện điền sẵn dấu vết tổng hợp mà ART sẽ đọc.
Bản cập nhật mới nhất Bản phát hành ổn định Bản phát hành dùng thử Bản phát hành beta Bản phát hành alpha
Ngày 8 tháng 2 năm 2023 1.2.2 - 1.3.0-beta01 -

Khai báo phần phụ thuộc

Để thêm một phần phụ thuộc trên ProfileInstaller, bạn phải thêm kho lưu trữ Google Maven vào dự án. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.

Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun:

Groovy

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

Kotlin

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

Để biết thêm thông tin về các phần phụ thuộc, hãy xem bài viết Thêm phần phụ thuộc vào bản dựng.

Ý kiến phản hồi

Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.

Báo lỗi mới

Hãy xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.

Phiên bản 1.3

Phiên bản 1.3.0-beta01

Ngày 8 tháng 2 năm 2023

Phát hành androidx.profileinstaller:profileinstaller:1.3.0-beta01. Phiên bản 1.3.0-beta01 bao gồm các thay đổi sau.

Các thay đổi về API

  • Ngừng hỗ trợ xử lý các hồ sơ nén – việc mở và giải nén khiến quá trình hồi quy mức sử dụng CPU mất hàng chục giây trong khi khởi động, vì vậy, thêm một thông tin chẩn đoán để phát hiện các hồ sơ cơ sở được nén không chính xác. (I86413, b/261998144)

Phiên bản 1.3.0-alpha03

Ngày 11 tháng 1 năm 2023

Phát hành androidx.profileinstaller:profileinstaller:1.3.0-alpha03. Phiên bản 1.3.0-alpha03 bao gồm các thay đổi sau.

Sửa lỗi

  • Cho phép xử lý các hồ sơ cơ sở đã nén hoặc chưa nén (Ic61a0)
  • Sửa sổ đăng ký truyền tin trong tệp kê khai trình cài đặt hồ sơ để MacrobenchmarkScope.dropShaderCache() không còn gặp lỗi nữa (I5c728, b/258619948)

Phiên bản 1.3.0-alpha02

Ngày 9 tháng 11 năm 2022

Phát hành androidx.profileinstaller:profileinstaller:1.3.0-alpha02. Phiên bản 1.3.0-alpha02 bao gồm các thay đổi sau.

Thay đổi về API

  • Bổ sung hook cho điểm chuẩn để bỏ bộ nhớ đệm của chương trình đổ bóng nhằm đảm bảo hiệu suất nhất quán cho quy trình khởi động nguội, nhất là khi biên dịch bằng hồ sơ của các vòng lặp khởi động. Bạn cần có bản cập nhật này để đo lường các lần khởi động nguội bằng benchmark-macro-junit4:1.2.0-alpha05 trở lên. Để thay đổi API của thư viện Điểm chuẩn, vui lòng tham khảo trang Điểm chuẩn 1.2.0-alpha07. (Ia5171, b/231455742)

Phiên bản 1.3.0-alpha01

Ngày 24 tháng 10 năm 2022

Phát hành androidx.profileinstaller:profileinstaller:1.3.0-alpha01. Phiên bản 1.3.0-alpha01 bao gồm các thay đổi sau.

Các thay đổi về API

  • Thêm API ProfileVerifier để kiểm tra trong ứng dụng xem liệu một hồ sơ cơ sở có được biên dịch, lên lịch hoặc bị thiếu hay không (I263a4, b/246653809)
  • Thêm lệnh shell broadcast mới cho phép Macrobenchmark đẩy toàn bộ dữ liệu hồ sơ trong bộ nhớ vào ổ đĩa, để được đưa vào quá trình tạo hồ sơ cơ sở. Đây là yêu cầu bắt buộc để sử dụng thư viện Macrobenchmark nhằm ghi lại các hồ sơ cơ sở với BaselineProfileRule và đánh giá hiệu suất của hồ sơ bằng cách sử dụng CompilationMode.Partial(warmupIterations). (Ie0a7d, b/250083467, b/253094958)

Phiên bản 1.2.2

Phiên bản 1.2.2

Ngày 11 tháng 1 năm 2023

Phát hành androidx.profileinstaller:profileinstaller:1.2.2. Phiên bản 1.2.2 bao gồm các thay đổi sau.

Sửa lỗi

  • Cho phép xử lý các hồ sơ cơ sở đã nén hoặc chưa nén (Ic61a0)

Phiên bản 1.2.1

Phiên bản 1.2.1

Ngày 7 tháng 12 năm 2022

Phát hành androidx.profileinstaller:profileinstaller:1.2.1. Phiên bản 1.2.1 bao gồm các thay đổi sau.

Tính năng mới

  • Bật profileinstaller cho S_V2 (API 32) và TIRAMISU (API 33) (b/254900303).

Phiên bản 1.2.0

Phiên bản 1.2.0

Ngày 27 tháng 7 năm 2022

Phát hành androidx.profileinstaller:profileinstaller:1.2.0. Phiên bản 1.2.0 bao gồm các thay đổi sau.

Thay đổi quan trọng kể từ phiên bản 1.1.0

  • Hãy thêm tuỳ chọn hỗ trợ cho định dạng hồ sơ ART trên Android 12 trở đi.
  • Thêm các API mới trong ProfileInstallReceiver để nhận được kết quả nhất quán hơn với Macrobenchmarks khi sử dụng hồ sơ cơ sở.

Phiên bản 1.2.0-rc01

Ngày 15 tháng 6 năm 2022

Phát hành androidx.profileinstaller:profileinstaller:1.2.0-rc01. Phiên bản 1.2.0-rc01 bao gồm bao gồm các thay đổi sau.

  • Phiên bản này giống với androidx.profileinstaller:profileinstaller:1.2.0-beta03.

Phiên bản 1.2.0-beta03

Ngày 2 tháng 6 năm 2022

Phát hành androidx.profileinstaller:profileinstaller:1.2.0-beta03. Phiên bản 1.2.0-beta03 bao gồm các thay đổi sau.

Phiên bản 1.2.0-beta02

Ngày 18 tháng 5 năm 2022

Phát hành androidx.profileinstaller:profileinstaller:1.2.0-beta02. Phiên bản 1.2.0-beta02 bao gồm các thay đổi sau.

  • Không cần thay đổi nào để hỗ trợ phiên bản Compose 1.2.0-beta02.

Phiên bản 1.2.0-beta01

Ngày 11 tháng 5 năm 2022

Phát hành androidx.profileinstaller:profileinstaller:1.2.0-beta01. Phiên bản 1.2.0-beta01 bao gồm các thay đổi sau.

Thay đổi API

  • Thêm các API mới trong ProfileInstallReceiver để nhận được kết quả nhất quán hơn với Macrobenchmarks khi sử dụng hồ sơ cơ sở. (If2ae5, b/215740637)

Sửa lỗi

  • Trình cài đặt hồ sơ sẽ gửi một thông báo hữu ích khi cố gắng sử dụng định dạng siêu dữ liệu V_001 trên Android 12 trở lên. (aosp/1978526, b/217502387)
  • Trình cài đặt hồ sơ hiện sử dụng phiên bản androidx.startup 1.1.1. (aosp/2077099, b/229828376)

Phiên bản 1.2.0-alpha02

Ngày 26 tháng 1 năm 2022

androidx.profileinstaller:profileinstaller:1.2.0-alpha02 đã được phát hành. Phiên bản 1.2.0-alpha02 bao gồm các thay đổi sau.

Phiên bản này giống với 1.2.0-alpha01.

Phiên bản 1.2.0-alpha01

Ngày 12 tháng 1 năm 2022

androidx.profileinstaller:profileinstaller:1.2.0-alpha01 đã được phát hành. Phiên bản 1.2.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • Hãy thêm tuỳ chọn hỗ trợ cho định dạng hồ sơ ART trên Android 12 trở đi.

Phiên bản 1.1.0

Phiên bản 1.1.0

Ngày 9 tháng 2 năm 2022

Phát hành androidx.profileinstaller:profileinstaller:1.1.0. Phiên bản 1.1.0 bao gồm các thay đổi sau.

Phiên bản 1.1.0-rc01

Ngày 15 tháng 12 năm 2021

androidx.profileinstaller:profileinstaller:1.1.0-rc01 được phát hành mà không có bản cập nhật nào kể từ phiên bản thử nghiệm 1.1.0-beta04 Phiên bản 1.1.0-rc01 bao gồm các thay đổi sau.

Phiên bản 1.1.0-beta04

Ngày 1 tháng 12 năm 2021

androidx.profileinstaller:profileinstaller:1.1.0-beta04 đã được phát hành. Phiên bản 1.1.0-beta04 bao gồm các thay đổi sau.

Phiên bản 1.1.0-beta03

Ngày 17 tháng 11 năm 2021

androidx.profileinstaller:profileinstaller:1.1.0-beta03 đã được phát hành. Phiên bản 1.1.0-beta03 bao gồm các thay đổi sau.

Sửa lỗi

  • Đã cập nhật để hỗ trợ Compose 1.1.0-beta03

Phiên bản 1.1.0-beta02

Ngày 3 tháng 11 năm 2021

androidx.profileinstaller:profileinstaller:1.1.0-beta02 đã được phát hành. Phiên bản 1.1.0-beta02 bao gồm các thay đổi sau.

Sửa lỗi

  • Đã cập nhật để hỗ trợ Compose 1.1.0-beta02

Phiên bản 1.1.0-beta01

Ngày 27 tháng 10 năm 2021

androidx.profileinstaller:profileinstaller:1.1.0-beta01 đã được phát hành. Phiên bản 1.1.0-beta01 bao gồm các thay đổi sau.

  • Không thay đổi kể từ phiên bản 1.1.0-alpha07.

Phiên bản 1.1.0-alpha07

Ngày 13 tháng 10 năm 2021

Phát hành androidx.profileinstaller:profileinstaller:1.1.0-alpha07. Phiên bản 1.1.0-alpha07 bao gồm các thay đổi sau.

Tính năng mới

  • Bổ sung hỗ trợ cho profm trên Android N

Phiên bản 1.1.0-alpha06

Ngày 29 tháng 9 năm 2021

Phát hành androidx.profileinstaller:profileinstaller:1.1.0-alpha06. Phiên bản 1.1.0-alpha06 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục các vấn đề chuyển mã trong trình cài đặt hồ sơ trên N, O và O_MR1. (I12d75)

Phiên bản 1.1.0-alpha05

Ngày 15 tháng 9 năm 2021

Phát hành androidx.profileinstaller:profileinstaller:1.1.0-alpha05. Phiên bản 1.1.0-alpha05 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục sự cố chuyển mã hồ sơ Android Nougat và Android Oreo cho APK multidex.

Phiên bản 1.1.0-alpha04

Ngày 1 tháng 9 năm 2021

Phát hành androidx.profileinstaller:profileinstaller:1.1.0-alpha04. Phiên bản 1.1.0-alpha04 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục ProfileInstaller để giúp các ứng dụng dễ dàng sử dụng hồ sơ cơ sở để chạy MacroBenchmark bằng cách sử dụng CompilationMode.BaselineProfile. (I42657, b/196074999)

Phiên bản 1.1.0-alpha03

Ngày 18 tháng 8 năm 2021

Phát hành androidx.profileinstaller:profileinstaller:1.1.0-alpha03. Phiên bản 1.1.0-alpha03 bao gồm các thay đổi sau.

Sửa lỗi

  • Thay đổi hành vi bỏ qua của profileinstaller để ghi nhật ký PackageInfo.lastUpdatedTime trong một tệp trong thư mục tệp của ứng dụng cũng như so sánh tệp đó trước khi cài đặt hồ sơ vào lần chạy tiếp theo. (Ib93d1)
  • Điều chỉnh định dạng hồ sơ trên các thiết bị P, Q, R để phù hợp với các yêu cầu ART (I84e89)

Phiên bản 1.1.0-alpha02

Ngày 4 tháng 8 năm 2021

Phát hành androidx.profileinstaller:profileinstaller:1.1.0-alpha02. Phiên bản 1.1.0-alpha02 bao gồm các thay đổi sau.

Cập nhật để tương thích với Compose 1.1.0-alpha01.

Phiên bản 1.1.0-alpha01

Ngày 21 tháng 7 năm 2021

Phát hành androidx.profileinstaller:profileinstaller:1.1.0-alpha01. Phiên bản 1.1.0-alpha01 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục lỗi làm kích hoạt chế độ nghiêm ngặt trong một số trường hợp.

Phiên bản 1.0

Phiên bản 1.0.4

Ngày 13 tháng 10 năm 2021

androidx.profileinstaller:profileinstaller:1.0.4 đã được phát hành. Phiên bản 1.0.4 bao gồm các thay đổi sau.

  • Cập nhật để hỗ trợ Compose 1.0.4

Phiên bản 1.0.3

Ngày 29 tháng 9 năm 2021

androidx.profileinstaller:profileinstaller:1.0.3 đã được phát hành. Phiên bản 1.0.3 bao gồm các thay đổi sau.

  • Cập nhật để hỗ trợ Compose 1.0.3

Phiên bản 1.0.2

Ngày 1 tháng 9 năm 2021

Phát hành androidx.profileinstaller:profileinstaller:1.0.2. Phiên bản 1.0.2 bao gồm các thay đổi sau.

Sửa lỗi

  • Thêm tuỳ chọn chuyển mã hồ sơ cho các thiết bị P, Q, R. Với sự thay đổi này, các thiết bị đó sẽ chuyển mã hồ sơ, đảm bảo rằng ART luôn sử dụng được hồ sơ đã viết. Phương pháp chuyển mã trước đây sẽ bị bỏ qua trên các nền tảng này, dẫn đến việc đôi khi ART không thể xử lý hồ sơ nguồn. Không có thay đổi nào đối với API nhà phát triển.

Phiên bản 1.0.1

Ngày 4 tháng 8 năm 2021

androidx.profileinstaller:profileinstaller:1.0.1 đã được phát hành. Phiên bản 1.0.1 bao gồm các thay đổi sau.

Cập nhật để tương thích với Compose 1.0.1.

Phiên bản 1.0.0

Ngày 28 tháng 7 năm 2021

androidx.profileinstaller:profileinstaller:1.0.0 đã được phát hành. Phiên bản 1.0.0 bao gồm các thay đổi sau.

Các tính năng chính của phiên bản 1.0.0

Trình cài đặt hồ sơ (profile installer) là một thư viện mới cho phép các thư viện và ứng dụng xác định "Quy tắc hồ sơ" và gói thông tin hồ sơ ART với tệp APK, và thư viện này sẽ cài đặt các hồ sơ đó sau khi khởi chạy ứng dụng. Bạn có thể sử dụng tính năng này để cải thiện hiệu suất của ứng dụng.

Vui lòng xem ghi chú phát hành chi tiết tại 1.0.0-beta01 để biết thêm thông tin về các quy tắc dành cho hồ sơ này và cách hoạt động của các quy tắc này.

Phiên bản 1.0.0-rc02

Ngày 14 tháng 7 năm 2021

androidx.profileinstaller:profileinstaller:1.0.0-rc02 đã được phát hành. Phiên bản 1.0.0-rc02 bao gồm các thay đổi sau.

Phiên bản 1.0.0-rc01

Ngày 1 tháng 7 năm 2021

androidx.profileinstaller:profileinstaller:1.0.0-rc01 đã được phát hành. Phiên bản 1.0.0-rc01 bao gồm các thay đổi sau.

Đây là bản phát hành RC và không có thay đổi nào từ phiên bản thử nghiệm.

Phiên bản 1.0.0-beta01

Ngày 16 tháng 6 năm 2021

Phát hành androidx.profileinstaller:profileinstaller:1.0.0-beta01. Phiên bản 1.0.0-beta01 bao gồm các thay đổi sau.

Mục đích của thư viện

Trình cài đặt hồ sơ là một thư viện mới cho phép các thư viện và ứng dụng xác định "Quy tắc hồ sơ" cũng như gói thông tin hồ sơ ART với tệp APK. Thư viện này sẽ cài đặt các hồ sơ đó sau khi khởi chạy ứng dụng. Bạn có thể sử dụng tính năng này để cải thiện hiệu suất của ứng dụng.

Quá trình cài đặt hồ sơ này được thực hiện bằng thư viện androidx.offline. Nếu muốn huỷ cài đặt hồ sơ vì bất kỳ lý do nào, thư viện có thể sửa đổi tệp kê khai để xoá tệp này:


       <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>

Điều này đặc biệt hữu ích nếu ứng dụng của bạn có các yêu cầu khởi động không quan trọng và bạn muốn kích hoạt quá trình cài đặt hồ sơ theo cách thủ công bằng API ProfileInstaller.writeProfile.

Quy tắc hồ sơ là gì?

  • Quy tắc hồ sơ cho thư viện được chỉ định trong tệp văn bản baseline-prof.txt nằm trong src/main hoặc thư mục tương đương. Tệp này chỉ định quy tắc trên mỗi dòng, trong đó quy tắc trong trường hợp này là mẫu để khớp với phương thức hoặc lớp trong thư viện. Cú pháp cho các quy tắc này là tập mẹ của định dạng hồ sơ ART mà con người có thể đọc được, được dùng khi sử dụng adb shell profman --dump-classes-and-methods .... Các quy tắc này dùng một trong hai biểu mẫu để nhắm mục tiêu vào phương thức hoặc lớp.

  • Quy tắc phương thức sẽ có mẫu sau:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Và quy tắc lớp sẽ có mẫu sau:

    <CLASS_DESCRIPTOR>
    
  • Ở đây, <FLAGS> là một hoặc nhiều ký tự trong số các ký tự H, SP để cho biết có cần gắn cờ "Hot", "Startup" hoặc "Post Startup" cho phương thức này hay không.

  • <CLASS_DESCRIPTOR> là phần mô tả cho lớp chứa phương thức được nhắm mục tiêu. Ví dụ: lớp androidx.compose.runtime.SlotTable sẽ có phần mô tả là Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> là chữ ký của phương thức và bao gồm tên, loại thông số và loại dữ liệu trả về của phương thức. Ví dụ: phương thức fun isPlaced(): Boolean trên LayoutNode có chữ ký isPlaced()Z.

  • Những mẫu này có thể có ký tự đại diện (**, *?) để có một quy tắc duy nhất bao gồm nhiều lớp hoặc phương thức.

Những quy tắc này có chức năng gì?

  • Phương thức có cờ H cho biết rằng phương thức này là một phương thức "khởi động nóng" và phải được biên dịch trước.

  • Phương thức có cờ S cho biết đây là phương thức được gọi khi khởi động và phải được biên dịch trước khi thực thi để tránh chi phí biên dịch và diễn giải phương thức này tại thời điểm khởi động.

  • Phương thức có cờ P cho biết đây là phương thức được gọi sau khi khởi động.

  • Một lớp có trong tệp này cho biết rằng lớp này được dùng trong khi khởi động và cần được phân bổ trước trong vùng nhớ khối xếp để tránh chi phí tải lớp.

Cách hoạt động?

  • Thư viện có thể xác định những quy tắc sẽ được đóng gói trong cấu phần phần mềm AAR. Tiếp đến, khi tệp APK được tạo chứa các cấu phần mềm nêu trên, các quy tắc này được hợp nhất với nhau và các quy tắc hợp nhất dùng để tạo ra một hồ sơ ART nhị phân nhỏ gọn dành riêng cho tệp APK. Sau đó, ART có thể tận dụng hồ sơ này khi tệp APK được cài đặt trên thiết bị để biên soạn trước một số ứng dụng cụ thể nhằm cải thiện hiệu suất của ứng dụng, đặc biệt là lần chạy đầu tiên. Lưu ý rằng việc này sẽ không ảnh hưởng đến các ứng dụng có thể gỡ lỗi.

  • Các tệp quy tắc phải được đặt tên là baseline-prof.txt và đặt trong thư mục gốc của nhóm tài nguyên chính (phải là tệp đồng cấp với tệp AndroidManifset.xml)

  • Hiện tại, các tệp này sẽ chỉ được dùng nếu bạn đang sử dụng trình bổ trợ Android cho Gradle 7.0 trở lên và hiện chỉ được bật bằng một cờ trong gradle.properties:

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

Hồ sơ cần phải có sự cân bằng

  • Hồ sơ được tạo đúng cách ưu tiên chính xác các phương thức và lớp sẽ nằm trong đường dẫn khởi động và hiệu suất quan trọng sẽ mang lại kết quả tốt nhất. Tuy nhiên, việc đưa quá nhiều phương thức hoặc lớp vào hồ sơ có thể dẫn đến ảnh hưởng tiêu cực cuối cùng về mức tiêu thụ bộ nhớ và mức sử dụng ổ đĩa. Vì vậy, bạn nên thận trọng khi bắt đầu xác định quy tắc hồ sơ của riêng mình.