Generate a baseline profile for release builds
Cold starts ran unoptimised: no profileinstaller dependency and no profile in the bundle, so ART interpreted Compose on first launch (class verification measured at 128 bytecodes/s in an emulator ANR). Add the androidx.baselineprofile producer module with an AOSP managed device, a generator covering startup plus the four detail tabs, and commit the generated baseline and startup profiles.
This commit is contained in:
@@ -7,6 +7,7 @@ plugins {
|
|||||||
alias(libs.plugins.kotlin.compose)
|
alias(libs.plugins.kotlin.compose)
|
||||||
alias(libs.plugins.kotlin.serialization)
|
alias(libs.plugins.kotlin.serialization)
|
||||||
alias(libs.plugins.ksp)
|
alias(libs.plugins.ksp)
|
||||||
|
alias(libs.plugins.baselineprofile)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Release signing credentials, loaded from android/keystore.properties (gitignored).
|
// Release signing credentials, loaded from android/keystore.properties (gitignored).
|
||||||
@@ -117,4 +118,10 @@ dependencies {
|
|||||||
implementation(libs.coil.compose)
|
implementation(libs.coil.compose)
|
||||||
|
|
||||||
implementation(libs.play.review.ktx)
|
implementation(libs.play.review.ktx)
|
||||||
|
|
||||||
|
// Installs the bundled baseline profile on devices that do not get it from Play.
|
||||||
|
implementation(libs.androidx.profileinstaller)
|
||||||
|
|
||||||
|
// Consumes the profile produced by :baselineprofile.
|
||||||
|
baselineProfile(project(":baselineprofile"))
|
||||||
}
|
}
|
||||||
|
|||||||
21943
android/app/src/release/generated/baselineProfiles/baseline-prof.txt
Normal file
21943
android/app/src/release/generated/baselineProfiles/baseline-prof.txt
Normal file
File diff suppressed because it is too large
Load Diff
18842
android/app/src/release/generated/baselineProfiles/startup-prof.txt
Normal file
18842
android/app/src/release/generated/baselineProfiles/startup-prof.txt
Normal file
File diff suppressed because it is too large
Load Diff
48
android/baselineprofile/build.gradle.kts
Normal file
48
android/baselineprofile/build.gradle.kts
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
plugins {
|
||||||
|
alias(libs.plugins.android.test)
|
||||||
|
alias(libs.plugins.kotlin.android)
|
||||||
|
alias(libs.plugins.baselineprofile)
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "app.voltplan.cable.baselineprofile"
|
||||||
|
compileSdk = 35
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_11
|
||||||
|
targetCompatibility = JavaVersion.VERSION_11
|
||||||
|
}
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = "11"
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
// Baseline profile capture needs API 33+ on an unrooted device.
|
||||||
|
minSdk = 33
|
||||||
|
targetSdk = 35
|
||||||
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
}
|
||||||
|
|
||||||
|
targetProjectPath = ":app"
|
||||||
|
|
||||||
|
// Profiles must be generated on an AOSP image: Play Store images are user
|
||||||
|
// builds where the benchmark cannot reset the compilation state.
|
||||||
|
testOptions.managedDevices.allDevices {
|
||||||
|
create<com.android.build.api.dsl.ManagedVirtualDevice>("pixel6Api34") {
|
||||||
|
device = "Pixel 6"
|
||||||
|
apiLevel = 34
|
||||||
|
systemImageSource = "aosp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
baselineProfile {
|
||||||
|
managedDevices += "pixel6Api34"
|
||||||
|
useConnectedDevices = false
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(libs.androidx.test.ext.junit)
|
||||||
|
implementation(libs.androidx.uiautomator)
|
||||||
|
implementation(libs.androidx.benchmark.macro.junit4)
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
#- File Locator -
|
||||||
|
listingFile=../../../../outputs/apk/nonMinifiedRelease/output-metadata.json
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
8
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<merger version="3"><dataSet config="androidx.benchmark:benchmark-macro:1.4.1" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/lange-hegermann/.gradle/caches/8.11.1/transforms/f271377597a5382a6d80241136ca586d/transformed/benchmark-macro-1.4.1/assets"><file name="trace_processor_shell_x86" path="/Users/lange-hegermann/.gradle/caches/8.11.1/transforms/f271377597a5382a6d80241136ca586d/transformed/benchmark-macro-1.4.1/assets/trace_processor_shell_x86"/><file name="trace_processor_shell_arm" path="/Users/lange-hegermann/.gradle/caches/8.11.1/transforms/f271377597a5382a6d80241136ca586d/transformed/benchmark-macro-1.4.1/assets/trace_processor_shell_arm"/><file name="trace_processor_shell_aarch64" path="/Users/lange-hegermann/.gradle/caches/8.11.1/transforms/f271377597a5382a6d80241136ca586d/transformed/benchmark-macro-1.4.1/assets/trace_processor_shell_aarch64"/><file name="trace_processor_shell_x86_64" path="/Users/lange-hegermann/.gradle/caches/8.11.1/transforms/f271377597a5382a6d80241136ca586d/transformed/benchmark-macro-1.4.1/assets/trace_processor_shell_x86_64"/></source></dataSet><dataSet config="androidx.benchmark:benchmark-common:1.4.1" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/lange-hegermann/.gradle/caches/8.11.1/transforms/1e8a3a9d48c6a6250f9534cccde84f8d/transformed/benchmark-common-1.4.1/assets"><file name="tracebox_x86" path="/Users/lange-hegermann/.gradle/caches/8.11.1/transforms/1e8a3a9d48c6a6250f9534cccde84f8d/transformed/benchmark-common-1.4.1/assets/tracebox_x86"/><file name="tracebox_arm" path="/Users/lange-hegermann/.gradle/caches/8.11.1/transforms/1e8a3a9d48c6a6250f9534cccde84f8d/transformed/benchmark-common-1.4.1/assets/tracebox_arm"/><file name="tracebox_x86_64" path="/Users/lange-hegermann/.gradle/caches/8.11.1/transforms/1e8a3a9d48c6a6250f9534cccde84f8d/transformed/benchmark-common-1.4.1/assets/tracebox_x86_64"/><file name="tracebox_aarch64" path="/Users/lange-hegermann/.gradle/caches/8.11.1/transforms/1e8a3a9d48c6a6250f9534cccde84f8d/transformed/benchmark-common-1.4.1/assets/tracebox_aarch64"/></source></dataSet><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/lange-hegermann/Documents/Development/ios-macos/Cable-Swift/Cable/android/baselineprofile/src/main/assets"/></dataSet><dataSet config="nonMinifiedRelease" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/lange-hegermann/Documents/Development/ios-macos/Cable-Swift/Cable/android/baselineprofile/src/nonMinifiedRelease/assets"/></dataSet><dataSet config="generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/lange-hegermann/Documents/Development/ios-macos/Cable-Swift/Cable/android/baselineprofile/build/intermediates/shader_assets/nonMinifiedRelease/compileNonMinifiedReleaseShaders/out"/></dataSet></merger>
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/lange-hegermann/Documents/Development/ios-macos/Cable-Swift/Cable/android/baselineprofile/src/main/jniLibs"/></dataSet><dataSet config="nonMinifiedRelease" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/lange-hegermann/Documents/Development/ios-macos/Cable-Swift/Cable/android/baselineprofile/src/nonMinifiedRelease/jniLibs"/></dataSet></merger>
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/lange-hegermann/Documents/Development/ios-macos/Cable-Swift/Cable/android/baselineprofile/src/main/shaders"/></dataSet><dataSet config="nonMinifiedRelease" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/lange-hegermann/Documents/Development/ios-macos/Cable-Swift/Cable/android/baselineprofile/src/nonMinifiedRelease/shaders"/></dataSet></merger>
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
#Wed Aug 12 13:44:18 CEST 2026
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string msgid="6277540029070332960" name="status_bar_notification_info_overflow">"999+"</string>
|
||||||
|
</resources>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string msgid="6277540029070332960" name="status_bar_notification_info_overflow">"999+"</string>
|
||||||
|
</resources>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string msgid="6277540029070332960" name="status_bar_notification_info_overflow">"999+"</string>
|
||||||
|
</resources>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string msgid="6277540029070332960" name="status_bar_notification_info_overflow">"৯৯৯+"</string>
|
||||||
|
</resources>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string msgid="6277540029070332960" name="status_bar_notification_info_overflow">"999+"</string>
|
||||||
|
</resources>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string msgid="6277540029070332960" name="status_bar_notification_info_overflow">"999+"</string>
|
||||||
|
</resources>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user