Tạo Hồ sơ cơ sở
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Hồ sơ cơ sở là yếu tố cần thiết để tối đa hoá hiệu suất của Jetpack Compose.
Việc biên dịch trước các hành trình quan trọng của người dùng giúp đảm bảo giao diện người dùng Compose của bạn hiển thị mượt mà.
Tự động tạo hồ sơ cho mọi bản phát hành ứng dụng bằng thư viện Jetpack Macrobenchmark và BaselineProfileRule. Bạn nên sử dụng com.android.tools.build:gradle:8.0.0 trở lên để tận dụng các điểm cải tiến về bản dựng khi sử dụng Hồ sơ cơ sở.
Dưới đây là các bước chung để tạo một Hồ sơ cơ sở mới:
Thiết lập mô-đun Hồ sơ cơ sở.
Xác định chương trình kiểm thử JUnit giúp tạo Hồ sơ cơ sở.
Thêm hành trình trọng yếu của người dùng (CUJ) mà bạn muốn tối ưu hoá.
Tạo Hồ sơ cơ sở.
Sau khi bạn tạo Hồ sơ cơ sở, hãy đo điểm chuẩn cho hồ sơ đó bằng một thiết bị thực để đo lường mức cải thiện tốc độ.
Tạo Hồ sơ cơ sở mới bằng AGP 8.2 trở lên
Cách dễ nhất để tạo Hồ sơ cơ sở mới là sử dụng mẫu mô-đun Hồ sơ cơ sở có trong Android Studio Iguana và Trình bổ trợ Android cho Gradle (AGP) 8.2 trở lên.
Mẫu mô-đun trình tạo Hồ sơ cơ sở của Android Studio sẽ tự động tạo một mô-đun mới để tạo và đo điểm chuẩn Hồ sơ cơ sở. Khi chạy mẫu này sẽ tạo hầu hết cấu hình bản dựng điển hình, chức năng tạo Hồ sơ cơ sở và mã xác minh. Mẫu này sẽ tạo mã để tạo và đo điểm chuẩn cho Hồ sơ cơ sở để đo lường ứng dụng lúc khởi động.
Thiết lập mô-đun Hồ sơ cơ sở
Để chạy mẫu mô-đun Hồ sơ cơ sở, hãy làm theo các bước sau:
Chọn File > New > New Module (Tệp > Mới > Mô-đun mới).
Chọn mẫu Baseline Profile Generator (Trình tạo hồ sơ cơ sở) trong bảng điều khiển Templates (Mẫu) rồi định cấu hình mẫu đó:
Hình 1. Mẫu mô-đun trình tạo Hồ sơ cơ sở.
Trong mẫu có các trường như sau:
Target application (Ứng dụng mục tiêu): ứng dụng mà Hồ sơ cơ sở được tạo. Khi dự án của bạn chỉ có một mô-đun ứng dụng duy nhất, thì danh sách này chỉ có một mục duy nhất.
Module name (Tên mô-đun): tên bạn muốn cho mô-đun Hồ sơ cơ sở đang được tạo.
Package name (Tên gói): tên gói bạn muốn cho mô-đun Hồ sơ cơ sở.
Language (Ngôn ngữ): bạn muốn tạo mã Kotlin hay Java.
Build configuration language (Ngôn ngữ cấu hình bản dựng): bạn muốn sử dụng Tập lệnh Kotlin (KTS) hay Groovy làm tập lệnh cấu hình bản dựng.
Sử dụng thiết bị do Gradle quản lý: cho dù bạn đang sử dụng thiết bị do Gradle quản lý để kiểm thử ứng dụng của mình hay không.
Nhấp vào Finish (Hoàn tất) và mô-đun mới sẽ được tạo. Nếu đang sử dụng chế độ kiểm soát nguồn, có thể bạn sẽ được nhắc thêm các tệp mô-đun mới tạo vào chế độ kiểm soát nguồn.
Xác định trình tạo Hồ sơ cơ sở
Mô-đun mới tạo chứa các chương trình kiểm thử cho cả việc tạo và đo điểm chuẩn Hồ sơ cơ sở, đồng thời chỉ kiểm thử quy trình khởi động ứng dụng cơ bản. Bạn nên tăng cường các chương trình kiểm thử này để đưa CUJ và quy trình khởi động nâng cao vào. Đảm bảo rằng mọi kiểm thử liên quan đến quá trình khởi động ứng dụng đều nằm trong một khối rule có includeInStartupProfile được đặt thành true; ngược lại, để có hiệu suất tối ưu, hãy đảm bảo rằng mọi kiểm thử không liên quan đến quá trình khởi động ứng dụng đều không được đưa vào Cấu hình khởi động. Các hoạt động tối ưu hoá quá trình khởi động ứng dụng được dùng để xác định một phần đặc biệt của Hồ sơ cơ sở, được gọi là Hồ sơ khởi động.
Điều này tạo thuận lợi cho khả năng bảo trì, nếu bạn chiết tách các CUJ này ra khỏi Hồ sơ cơ sở đã tạo và mã điểm chuẩn để có thể sử dụng cho cả hai. Điều này có nghĩa là các thay đổi đối với CUJ sẽ được sử dụng một cách nhất quán.
Tạo và cài đặt Hồ sơ cơ sở
Mẫu mô-đun Hồ sơ cơ sở sẽ thêm một cấu hình chạy mới để tạo Hồ sơ cơ sở. Nếu bạn có nhiều phiên bản sản phẩm, Android Studio sẽ tạo nhiều cấu hình chạy để bạn có thể tạo Hồ sơ cơ sở riêng cho từng phiên bản.
Hình 2. Việc chạy cấu hình này sẽ tạo Hồ sơ cơ sở.
Khi cấu hình chạy Generate Baseline Profile (Tạo Hồ sơ cơ sở) hoàn tất, cấu hình này sẽ sao chép Hồ sơ cơ sở đã tạo vào tệp src/variant/generated/baselineProfiles/baseline-prof.txt trong mô-đun đang được lập hồ sơ. Các lựa chọn biến thể là loại bản phát hành hoặc biến thể bản dựng liên quan đến loại bản phát hành.
Hồ sơ cơ sở đã tạo vốn được tạo trong build/outputs. Đường dẫn đầy đủ sẽ được quyết định bởi biến thể hoặc phiên bản của ứng dụng đang được lập hồ sơ, cũng như việc bạn sử dụng thiết bị do Gradle quản lý hay thiết bị được kết nối để lập hồ sơ. Nếu bạn dùng tên được sử dụng trong đoạn mã còn cấu hình bản dựng do mẫu tạo, thì Hồ sơ cơ sở sẽ được tạo trong tệp build/outputs/managed_device_android_test_additional_output/nonminifiedrelease/pixel6Api31/BaselineProfileGenerator_generate-baseline-prof.txt. Có thể bạn sẽ không phải tương tác trực tiếp với phiên bản Hồ sơ cơ sở đã tạo này, trừ phi bạn sao chép theo cách thủ công vào các mô-đun đích (không nên thực hiện).
Tạo Hồ sơ cơ sở mới bằng AGP 8.1
Nếu bạn không thể sử dụng mẫu mô-đun Hồ sơ cơ sở, hãy sử dụng mẫu mô-đun Macrobenchmark và trình bổ trợ Gradle cho Hồ sơ cơ sở để tạo một Hồ sơ cơ sở mới. Bạn nên sử dụng các công cụ này trong Android Studio Giraffe và AGP 8.1 trở lên.
Dưới đây là các bước tạo Hồ sơ cơ sở mới bằng mẫu mô-đun Macrobenchmark và trình bổ trợ Gradle cho Hồ sơ cơ sở:
Trình tạo có thể chứa các hoạt động tương tác với ứng dụng của bạn ngoài việc khởi động ứng dụng.
Nhờ đó, bạn có thể tối ưu hoá hiệu suất trong thời gian chạy của ứng dụng, chẳng hạn như việc cuộn danh sách, chạy ảnh động và di chuyển trong Activity.
Hãy xem những ví dụ khác về các chương trình kiểm thử sử dụng @BaselineProfileRule để cải thiện các hành trình trọng yếu của người dùng.
Thêm trình bổ trợ Gradle cho Hồ sơ cơ sở (libs.plugins.androidx.baselineprofile). Trình bổ trợ này giúp bạn dễ dàng tạo Hồ sơ cơ sở và duy trì các hồ sơ đó sau này.
Để tạo Hồ sơ cơ sở, hãy chạy các tác vụ :app:generateBaselineProfile hoặc :app:generateVariantBaselineProfile của Gradle trong thiết bị đầu cuối.
Chạy trình tạo ở dạng kiểm thử đo lường trên thiết bị thực, trình mô phỏng hoặc thiết bị do Gradle quản lý đã bị can thiệp vào hệ thống. Nếu bạn sử dụng một Thiết bị do Gradle quản lý, hãy thiết lập aosp thành systemImageSource, vì bạn cần có quyền truy cập thư mục gốc cho trình tạo Hồ sơ cơ sở.
Khi bạn kết thúc tác vụ tạo, Hồ sơ cơ sở sẽ được sao chép vào app/src//generated/baselineProfiles.
Sau đây là cách tạo Hồ sơ cơ sở trực tiếp bằng trình bổ trợ Gradle cho Hồ sơ cơ sở:
Tạo một mô-đun com.android.test mới – ví dụ: :baseline-profile.
Định cấu hình tệp build.gradle.kts cho :baseline-profile:
Áp dụng trình bổ trợ androidx.baselineprofile.
Đảm bảo targetProjectPath trỏ đến mô-đun :app.
Thêm thiết bị do Gradle quản lý (GMD) (không bắt buộc). Trong ví dụ sau, đó là pixel6Api31. Nếu không được chỉ định, trình bổ trợ sẽ sử dụng một thiết bị thông minh được kết nối, đó là thiết bị mô phỏng hoặc thiết bị thực.
Áp dụng cấu hình bạn muốn, như trong ví dụ sau.
Kotlin
plugins{id("com.android.test")id("androidx.baselineprofile")}android{defaultConfig{...}// Point to the app module, the module that you're generating the Baseline Profile for.targetProjectPath=":app"// Configure a GMD (optional).testOptions.managedDevices.devices{pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice){device="Pixel 6"apiLevel=31systemImageSource="aosp"}}}dependencies{...}// Baseline Profile Gradle plugin configuration. Everything is optional. This// example uses the GMD added earlier and disables connected devices.baselineProfile{// Specifies the GMDs to run the tests on. The default is none.managedDevices+="pixel6Api31"// Enables using connected devices to generate profiles. The default is// `true`. When using connected devices, they must be rooted or API 33 and// higher.useConnectedDevices=false}
Groovy
plugins{id'com.android.test'id'androidx.baselineprofile'}android{defaultConfig{...}// Point to the app module, the module that you're generating the Baseline Profile for.targetProjectPath':app'// Configure a GMD (optional).testOptions.managedDevices.devices{pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice){device'Pixel 6'apiLevel31systemImageSource'aosp'}}}dependencies{...}// Baseline Profile Gradle plugin configuration. Everything is optional. This// example uses the GMD added earlier and disables connected devices.baselineProfile{// Specifies the GMDs to run the tests on. The default is none.managedDevices['pixel6Api31']// Enables using connected devices to generate profiles. The default is// `true`. When using connected devices, they must be rooted or API 33 and// higher.useConnectedDevicesfalse}
Tạo một bài kiểm thử Hồ sơ cơ sở trong mô-đun kiểm thử :baseline-profile. Ví dụ sau đây là một bài kiểm thử tạo Hồ sơ cơ sở để khởi động ứng dụng.
Cập nhật tệp build.gradle.kts trong mô-đun ứng dụng, ví dụ: :app.
Áp dụng trình bổ trợ androidx.baselineprofile.
Thêm một phần phụ thuộc baselineProfile vào mô-đun :baseline-profile.
Kotlin
plugins{id("com.android.application")id("androidx.baselineprofile")}android{// There are no changes to the `android` block....}dependencies{...// Add a `baselineProfile` dependency on the `:baseline-profile` module.baselineProfile(project(":baseline-profile"))}
Groovy
plugins{id'com.android.application'id'androidx.baselineprofile'}android{// No changes to the `android` block....}dependencies{...// Add a `baselineProfile` dependency on the `:baseline-profile` module.baselineProfile':baseline-profile'}
Tạo hồ sơ bằng cách chạy các tác vụ Gradle :app:generateBaselineProfile hoặc :app:generateVariantBaselineProfile.
Khi bạn kết thúc tác vụ tạo, Hồ sơ cơ sở sẽ được sao chép vào app/src/variant/generated/baselineProfiles.
Đo điểm chuẩn cho Hồ sơ cơ sở
Để đo điểm chuẩn cho Hồ sơ cơ sở của bạn, hãy tạo một cấu hình mới để chạy kiểm thử đo lường Android thông qua thao tác định hướng (gutter action) mà sẽ thực thi phép đo điểm chuẩn được xác định trong tệp StartupBenchmarks.kt. Để tìm hiểu thêm về kiểm thử điểm chuẩn, hãy xem phần Tạo lớp Macrobenchmark và Đo điểm chuẩn Hồ sơ cơ sở bằng thư viện Macrobenchmark.
Hình 3. Chạy chương trình kiểm thử Android thông qua thao tác định hướng.
Khi bạn chạy chương trình này trong Android Studio, dữ liệu đầu ra của bản dựng sẽ chứa thông tin về các điểm cải thiện tốc độ mà Hồ sơ cơ sở cung cấp:
StartupBenchmarks_startupCompilationBaselineProfiles
timeToInitialDisplayMs min 161.8, median 178.9, max 194.6
StartupBenchmarks_startupCompilationNone
timeToInitialDisplayMs min 184.7, median 196.9, max 202.9
Ghi lại mọi đường dẫn mã bắt buộc
Sau đây là 2 chỉ số chính giúp đo lường thời gian khởi động ứng dụng:
TTFD được báo cáo sau khi phương thức reportFullyDrawn của ComponentActivity được gọi. Nếu reportFullyDrawn không được gọi, thì TTID sẽ được báo cáo. Có thể bạn cần phải trì hoãn thời điểm reportFullyDrawn được gọi cho đến khi quá trình tải không đồng bộ hoàn tất. Ví dụ: nếu giao diện người dùng chứa một danh sách từng phần động, thì có thể danh sách này sẽ được điền bằng một tác vụ trong nền (hoàn tất sau khi danh sách này hiển thị lần đầu và do đó, chính là thời điểm sau khi giao diện người dùng được đánh dấu là đã hiển thị đầy đủ). Trong những trường hợp như vậy, đoạn mã chạy sau khi giao diện người dùng đạt trạng thái hiển thị đầy đủ sẽ không được đưa vào Hồ sơ cơ sở.
Để đưa hoạt động điền danh sách vào Hồ sơ cơ sở, hãy lấy FullyDrawnReporter bằng cách sử dụng getFullyDrawnReporter và thêm một trình báo cáo vào đó trong mã ứng dụng của bạn. Giải phóng trình báo cáo khi tác vụ trong nền điền xong danh sách. FullyDrawnReporter không gọi phương thức reportFullyDrawn cho đến khi mọi trình báo cáo được giải phóng. Bằng cách này, Hồ sơ cơ sở sẽ bao gồm các đường dẫn mã cần thiết để điền danh sách. Điều này không làm thay đổi hành vi của ứng dụng đối với người dùng nhưng cho phép đưa mọi đường dẫn mã cần thiết vào Hồ sơ cơ sở.
Để biểu thị trạng thái đã hiển thị đầy đủ, hãy sử dụng các API Compose sau:
ReportDrawn cho biết thành phần kết hợp của bạn đã sẵn sàng tương tác ngay lập tức.
ReportDrawnWhen sử dụng một thuộc tính, chẳng hạn như list.count > 0, để cho biết thời điểm thành phần kết hợp của bạn đã sẵn sàng tương tác.
ReportDrawnAfter sử dụng một phương thức tạm ngưng mà khi phương thức này hoàn tất, sẽ cho biết thành phần kết hợp của bạn đã sẵn sàng tương tác.
Đề xuất cho bạn
Lưu ý: văn bản có đường liên kết sẽ hiện khi JavaScript tắt
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2026-08-24 UTC.
[null,null,["Cập nhật lần gần đây nhất: 2026-08-24 UTC."],[],[]]