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 sử dụng Hồ sơ khởi động để tối ưu hoá thêm các lớp và phương thức mà các hồ sơ này chứa bằng cách cải thiện bố cục của mã trong tệp DEX của APK. Với Hồ sơ khởi động, quá trình khởi động ứng dụng của bạn thường nhanh hơn từ 15% đến 30% so với khi chỉ sử 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 của mô-đun ứng dụng, hãy đặt dexLayoutOptimization = true.

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

Android Studio sẽ tạo 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. Điều này bao gồm 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. Để bổ sung 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ơn, hãy thêm CUJ khởi động ứng dụng vào khối rule với includeInStartupProfile đượ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, 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 trang 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 của 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 động

Đầu ra của các lớp và phương thức trong hồ sơ khởi động bị giới hạn bởi kích thước của tệp classes.dex đầu tiên. Điều này có nghĩa là không phải mọi hành trình hồ sơ cơ sở đều phải là hành trình hồ sơ khởi động.

Để quyết định hành trình người dùng nào cần được đề cập khi tạo hồ sơ khởi động, hãy cân nhắc nơi hầu hết người dùng bắt đầu ứng dụng. Thông 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 làm theo 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 sau:

  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ừ đầu và dừng 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 với tính năng theo dõi phương thức được bật để xem toàn bộ và tự động hoá các lệnh gọi phương thức trong quá trình khởi động ứng dụng.

Hiện không có đề xuất nào.

Hãy thử vào Tài khoản Google của bạn.