Tạo hồ sơ khởi động

Hồ sơ khởi động là một tập hợp con của Hồ sơ cơ sở. Hệ thống xây dựng dùng Hồ sơ khởi động để tối ưu hoá thêm các lớp và phương thức mà hồ sơ này chứa bằng cách cải thiện bố cục mã trong các tệp DEX của APK. Với Hồ sơ khởi động, ứng dụng của bạn thường khởi động nhanh hơn từ 15% đến 30% so với khi chỉ dùng Hồ sơ cơ sở.

Hình 1. Cải thiện vị trí của mã nhờ tính năng tối ưu hoá bố cục DEX.

Yêu cầu

Bạn nên sử dụng Hồ sơ khởi động với các công cụ sau:

  • Jetpack Macrobenchmark 1.2.0 trở lên
  • Trình bổ trợ Android cho Gradle 8.2 trở lên
  • Android Studio Iguana trở lên

Ngoài ra, bạn cần có các chế độ cài đặt sau trong ứng dụng:

  • Đã bật R8. Đối với bản phát hành, hãy đặt isMinifyEnabled = true.
  • Đã bật tính năng tối ưu hoá bố cục DEX. Trong khối baselineProfile {} của tệp bản dựng mô-đun ứng dụng, hãy đặt dexLayoutOptimization = true.

Tạo Hồ sơ khởi nghiệp

Android Studio tạo một Hồ sơ khởi động cùng với Hồ sơ cơ sở khi bạn sử dụng mẫu Trình tạo Hồ sơ cơ sở mặc định.

Các bước chung để tạo và tạo Hồ sơ khởi động cũng giống như các bước để tạo Hồ sơ cơ sở.

Cách mặc định để tạo Hồ sơ khởi động là sử dụng mẫu mô-đun Trình tạo Hồ sơ cơ sở trong Android Studio. Trong đó có các hoạt động tương tác khi khởi động tạo thành một Hồ sơ khởi động cơ bản. Để tăng cường Hồ sơ khởi động này bằng nhiều Hành trình trọng yếu của người dùng (CUJ), hãy thêm các CUJ khởi động ứng dụng vào một khối ruleincludeInStartupProfile được đặt thành true. Đối với các ứng dụng đơn giản, việc chạy MainActivity của ứng dụng có thể là đủ. Đối với các ứng dụng phức tạp hơn, hãy cân nhắc việc thêm các điểm truy cập phổ biến nhất vào ứng dụng của bạn, chẳng hạn như khởi động ứng dụng từ màn hình chính hoặc khởi chạy vào một đường liên kết sâu.

Đoạn mã sau đây cho thấy một trình tạo Hồ sơ cơ sở (theo mặc định là tệp BaselineProfileGenerator.kt) bao gồm việc khởi động ứng dụng từ màn hình chính và chạy vào một đường liên kết sâu. Đường liên kết sâu sẽ chuyển thẳng đến nguồn cấp tin tức của ứng dụng chứ không phải màn hình chính của ứng dụng.

@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")
            })
        }
    }
}

Chạy cấu hình Tạo Hồ sơ cơ sở cho ứng dụng và tìm các quy tắc Hồ sơ khởi động tại src/<variant>/generated/baselineProfiles/startup-prof.txt.

Những điều cần cân nhắc khi tạo hồ sơ khởi nghiệp

Để quyết định hành trình nào của người dùng cần đề cập khi tạo hồ sơ khởi động, hãy cân nhắc xem hầu hết người dùng bắt đầu ứng dụng ở đâu. Thường là từ trình chạy và sau khi họ đăng nhập. Đây cũng là hành trình hồ sơ cơ sở cơ bản nhất.

Sau khi đã đề cập đến trường hợp sử dụng đầu tiên, hãy theo dõi phễu người dùng để khởi động ứng dụng. Trong nhiều trường hợp, phễu khởi động ứng dụng tuân theo danh sách này:

  1. Hoạt động chính của trình chạy
  2. Thông báo kích hoạt quá trình khởi động ứng dụng
  3. Các hoạt động không bắt buộc của trình chạy

Xử lý danh sách này từ trên xuống và dừng lại trước khi classes.dex đầy. Để bao gồm nhiều hành trình hơn sau đó, hãy di chuyển mã ra khỏi đường dẫn khởi động và thêm nhiều hành trình hơn. Để di chuyển mã ra khỏi đường dẫn khởi động, hãy kiểm tra dấu vết Perfetto trong quá trình khởi động ứng dụng và tìm các thao tác chạy trong thời gian dài. Bạn cũng có thể sử dụng macrobenchmark khi bật tính năng theo dõi phương thức để có chế độ xem đầy đủ và có thể tự động hoá về các lệnh gọi phương thức trong quá trình khởi động ứng dụng.