Harden Android accessibility, localization and startup (#105)
Implement independent hardening and regression coverage. Keep #105 open for final feature and environment coverage after #106–#110; document the completion boundary and resume order.
This commit is contained in:
1 parent
43f660ace3
commit
6669b77f4e
55 files changed
+24445
-296
No files matched your search
@@ -0,0 +1,37 @@
|
||||
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||
|
||||
plugins { alias(libs.plugins.android.test) }
|
||||
|
||||
android {
|
||||
namespace = "de.rfc1437.ironstorage.performance"
|
||||
compileSdk = libs.versions.compileSdk.get().toInt()
|
||||
targetProjectPath = ":app"
|
||||
defaultConfig {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
targetSdk = libs.versions.compileSdk.get().toInt()
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
buildTypes.create("benchmark") {
|
||||
isDebuggable = true
|
||||
signingConfig = signingConfigs.getByName("debug")
|
||||
matchingFallbacks += "release"
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
}
|
||||
experimentalProperties["android.experimental.self-instrumenting"] = true
|
||||
}
|
||||
|
||||
kotlin {
|
||||
jvmToolchain(25)
|
||||
compilerOptions {
|
||||
jvmTarget.set(JvmTarget.JVM_17)
|
||||
allWarningsAsErrors.set(true)
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(libs.benchmark.macro)
|
||||
implementation(libs.android.test.runner)
|
||||
}
|
||||
@@ -0,0 +1,304 @@
|
||||
# This is a Gradle generated file for dependency locking.
|
||||
# Manual edits can break the build and are not advised.
|
||||
# This file is expected to be part of source control.
|
||||
# To regenerate this file, run: ./gradlew :performance:dependencies --write-locks
|
||||
androidx.activity:activity-compose:1.13.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.activity:activity-ktx:1.13.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.activity:activity:1.13.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.annotation:annotation-experimental:1.4.1=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,benchmarkTestedApks,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath,debugTestedApks
|
||||
androidx.annotation:annotation-jvm:1.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.annotation:annotation-jvm:1.8.1=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.annotation:annotation:1.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.annotation:annotation:1.8.1=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.appcompat:appcompat-resources:1.2.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.appcompat:appcompat:1.2.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.arch.core:core-common:2.1.0=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.arch.core:core-common:2.2.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.arch.core:core-runtime:2.1.0=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.arch.core:core-runtime:2.2.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.benchmark:benchmark-common:1.5.0=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.benchmark:benchmark-macro-junit4:1.5.0=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.benchmark:benchmark-macro:1.5.0=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.benchmark:benchmark-traceprocessor-android:1.5.0=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.benchmark:benchmark-traceprocessor:1.5.0=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.biometric:biometric:1.1.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.collection:collection-jvm:1.6.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.collection:collection:1.0.0=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.collection:collection:1.6.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.animation:animation-core-jvmstubs:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.animation:animation-core:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.animation:animation-jvmstubs:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.animation:animation:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.foundation:foundation-jvmstubs:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.foundation:foundation-layout-jvmstubs:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.foundation:foundation-layout:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.foundation:foundation:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.material3.adaptive:adaptive-jvmstubs:1.3.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.material3.adaptive:adaptive-layout-jvmstubs:1.3.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.material3.adaptive:adaptive-layout:1.3.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.material3.adaptive:adaptive-navigation-jvmstubs:1.3.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.material3.adaptive:adaptive-navigation:1.3.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.material3.adaptive:adaptive:1.3.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.material3:material3-jvmstubs:1.4.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.material3:material3:1.4.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.material:material-ripple-jvmstubs:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.material:material-ripple:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.runtime:runtime-annotation-jvm:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.runtime:runtime-annotation:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.runtime:runtime-desktop:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.runtime:runtime-retain-desktop:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.runtime:runtime-retain:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.runtime:runtime-saveable-desktop:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.runtime:runtime-saveable:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.runtime:runtime:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.ui:ui-geometry-jvmstubs:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.ui:ui-geometry:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.ui:ui-graphics-jvmstubs:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.ui:ui-graphics:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.ui:ui-jvmstubs:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.ui:ui-text-jvmstubs:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.ui:ui-text:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.ui:ui-unit-jvmstubs:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.ui:ui-unit:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.ui:ui-util-jvmstubs:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.ui:ui-util:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose.ui:ui:1.12.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.compose:compose-bom:2026.09.00=benchmarkTestedApks,debugTestedApks
|
||||
androidx.concurrent:concurrent-futures-ktx:1.2.0=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.concurrent:concurrent-futures:1.1.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.concurrent:concurrent-futures:1.2.0=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.core:core-ktx:1.18.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.core:core-viewtree:1.0.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.core:core:1.18.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.core:core:1.9.0=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.cursoradapter:cursoradapter:1.0.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.customview:customview:1.0.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.drawerlayout:drawerlayout:1.0.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.fragment:fragment:1.9.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.interpolator:interpolator:1.0.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-common-jvm:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-common:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-common:2.3.1=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.lifecycle:lifecycle-livedata-core-ktx:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-livedata-core:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-livedata:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-runtime-compose-desktop:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-runtime-compose:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-runtime-desktop:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-runtime-ktx-android:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-runtime-ktx:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-runtime:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-runtime:2.3.1=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.lifecycle:lifecycle-viewmodel-compose-desktop:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-viewmodel-compose:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-viewmodel-desktop:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-viewmodel-ktx:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-viewmodel-savedstate-desktop:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.lifecycle:lifecycle-viewmodel:2.11.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.loader:loader:1.0.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.navigation3:navigation3-runtime-desktop:1.2.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.navigation3:navigation3-runtime:1.2.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.navigation3:navigation3-ui-jvmstubs:1.2.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.navigation3:navigation3-ui:1.2.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.navigationevent:navigationevent-compose-desktop:1.1.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.navigationevent:navigationevent-compose:1.1.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.navigationevent:navigationevent-desktop:1.1.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.navigationevent:navigationevent:1.1.1=benchmarkTestedApks,debugTestedApks
|
||||
androidx.profileinstaller:profileinstaller:1.4.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.profileinstaller:profileinstaller:1.4.1=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.savedstate:savedstate-compose-desktop:1.4.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.savedstate:savedstate-compose:1.4.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.savedstate:savedstate-desktop:1.4.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.savedstate:savedstate-ktx:1.4.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.savedstate:savedstate:1.4.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.startup:startup-runtime:1.1.1=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,benchmarkTestedApks,debugLintChecksClasspath,debugRuntimeClasspath,debugTestedApks
|
||||
androidx.test.ext:junit:1.2.1=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.test.services:storage:1.6.0=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.test.uiautomator:uiautomator-shell-android:2.4.0=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.test.uiautomator:uiautomator-shell:2.4.0=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.test.uiautomator:uiautomator:2.4.0=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.test:annotation:1.0.1=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.test:core:1.7.0=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.test:monitor:1.8.0=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.test:rules:1.5.0=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.test:runner:1.7.0=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.tracing:tracing-desktop:2.0.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.tracing:tracing-ktx:1.1.0=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.tracing:tracing-perfetto-binary:1.0.1=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.tracing:tracing-perfetto-handshake:1.0.1=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.tracing:tracing-perfetto:1.0.1=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.tracing:tracing:1.1.0=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
androidx.tracing:tracing:2.0.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.vectordrawable:vectordrawable-animated:1.1.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.vectordrawable:vectordrawable:1.1.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.versionedparcelable:versionedparcelable:1.1.1=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,benchmarkTestedApks,debugLintChecksClasspath,debugRuntimeClasspath,debugTestedApks
|
||||
androidx.viewpager:viewpager:1.0.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.window:window-core-jvm:1.5.0=benchmarkTestedApks,debugTestedApks
|
||||
androidx.window:window-core:1.5.0=benchmarkTestedApks,debugTestedApks
|
||||
ch.qos.logback:logback-classic:1.3.15=ktlint
|
||||
ch.qos.logback:logback-core:1.3.15=ktlint
|
||||
com.android.tools.analytics-library:protos:32.4.1=androidLintTool
|
||||
com.android.tools.analytics-library:shared:32.4.1=androidLintTool
|
||||
com.android.tools.analytics-library:tracker:32.4.1=androidLintTool
|
||||
com.android.tools.androidtest:android-test-engine-result-listener:1.0.1=unified-test-platform-gradle-work-action
|
||||
com.android.tools.androidtest:android-test-engine:1.0.1=unified-test-platform-gradle-work-action
|
||||
com.android.tools.androidtest:test-result-event-proto:1.0.1=unified-test-platform-gradle-work-action
|
||||
com.android.tools.androidtest:test-result-proto:1.0.1=unified-test-platform-gradle-work-action
|
||||
com.android.tools.build:aapt2-proto:9.4.1-15978811=androidLintTool
|
||||
com.android.tools.build:builder-model:9.4.1=androidLintTool
|
||||
com.android.tools.build:manifest-merger:32.4.1=androidLintTool
|
||||
com.android.tools.ddms:ddmlib:32.4.1=androidLintTool
|
||||
com.android.tools.external.com-intellij:intellij-core:32.4.1=androidLintTool
|
||||
com.android.tools.external.com-intellij:kotlin-compiler:32.4.1=androidLintTool
|
||||
com.android.tools.external.org-jetbrains:uast:32.4.1=androidLintTool
|
||||
com.android.tools.layoutlib:layoutlib-api:32.4.1=androidLintTool
|
||||
com.android.tools.lint:lint-api:32.4.1=androidLintTool
|
||||
com.android.tools.lint:lint-checks:32.4.1=androidLintTool
|
||||
com.android.tools.lint:lint-gradle:32.4.1=androidLintTool
|
||||
com.android.tools.lint:lint-model:32.4.1=androidLintTool
|
||||
com.android.tools.lint:lint-typedef-remover:32.4.1=androidLintTool
|
||||
com.android.tools.lint:lint:32.4.1=androidLintTool
|
||||
com.android.tools.utp:gradle-work-action:32.4.1=unified-test-platform-gradle-work-action
|
||||
com.android.tools:annotations:32.4.1=androidLintTool
|
||||
com.android.tools:common:32.4.1=androidLintTool
|
||||
com.android.tools:dvlib:32.4.1=androidLintTool
|
||||
com.android.tools:play-sdk-proto:32.4.1=androidLintTool
|
||||
com.android.tools:repository:32.4.1=androidLintTool
|
||||
com.android.tools:sdk-common:32.4.1=androidLintTool
|
||||
com.android.tools:sdklib:32.4.1=androidLintTool
|
||||
com.github.ajalt.clikt:clikt-jvm:5.0.3=ktlint
|
||||
com.github.ajalt.clikt:clikt:5.0.3=ktlint
|
||||
com.google.code.findbugs:jsr305:3.0.2=androidLintTool,benchmarkTestedApks,debugTestedApks
|
||||
com.google.code.gson:gson:2.11.0=androidLintTool
|
||||
com.google.dagger:dagger-lint-aar:2.60.1=benchmarkTestedApks,debugTestedApks
|
||||
com.google.dagger:dagger:2.60.1=benchmarkTestedApks,debugTestedApks
|
||||
com.google.dagger:hilt-android:2.60.1=benchmarkTestedApks,debugTestedApks
|
||||
com.google.dagger:hilt-core:2.60.1=benchmarkTestedApks,debugTestedApks
|
||||
com.google.errorprone:error_prone_annotations:2.36.0=androidLintTool
|
||||
com.google.guava:failureaccess:1.0.2=androidLintTool
|
||||
com.google.guava:guava:33.4.0-jre=androidLintTool
|
||||
com.google.guava:listenablefuture:1.0=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,benchmarkTestedApks,debugLintChecksClasspath,debugRuntimeClasspath,debugTestedApks
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=androidLintTool
|
||||
com.google.j2objc:j2objc-annotations:3.0.0=androidLintTool
|
||||
com.google.jimfs:jimfs:1.1=androidLintTool
|
||||
com.google.protobuf:protobuf-java:3.25.5=androidLintTool,unified-test-platform-gradle-work-action
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-baseline:1.7.1=ktlint,ktlintBaselineReporter
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-checkstyle:1.7.1=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-core:1.7.1=ktlint,ktlintBaselineReporter
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-format:1.7.1=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-html:1.7.1=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-json:1.7.1=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-plain-summary:1.7.1=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-plain:1.7.1=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-reporter-sarif:1.7.1=ktlint
|
||||
com.pinterest.ktlint:ktlint-cli-ruleset-core:1.7.1=ktlint,ktlintRuleset
|
||||
com.pinterest.ktlint:ktlint-cli:1.7.1=ktlint
|
||||
com.pinterest.ktlint:ktlint-logger:1.7.1=ktlint,ktlintBaselineReporter,ktlintRuleset
|
||||
com.pinterest.ktlint:ktlint-rule-engine-core:1.7.1=ktlint,ktlintBaselineReporter,ktlintRuleset
|
||||
com.pinterest.ktlint:ktlint-rule-engine:1.7.1=ktlint
|
||||
com.pinterest.ktlint:ktlint-ruleset-standard:1.7.1=ktlint,ktlintRuleset
|
||||
com.squareup.moshi:moshi:1.13.0=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
com.squareup.okio:okio-jvm:3.17.0=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
com.squareup.okio:okio:3.17.0=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
com.squareup.wire:wire-runtime-jvm:6.4.0=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
com.squareup.wire:wire-runtime:6.4.0=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
com.sun.istack:istack-commons-runtime:3.0.8=androidLintTool
|
||||
com.sun.xml.fastinfoset:FastInfoset:1.2.16=androidLintTool
|
||||
commons-codec:commons-codec:1.17.1=androidLintTool
|
||||
commons-io:commons-io:2.16.1=androidLintTool
|
||||
commons-logging:commons-logging:1.2=androidLintTool
|
||||
dev.drewhamilton.poko:poko-annotations-jvm:0.19.1=ktlint,ktlintBaselineReporter,ktlintRuleset
|
||||
dev.drewhamilton.poko:poko-annotations:0.19.1=ktlint,ktlintBaselineReporter,ktlintRuleset
|
||||
io.github.detekt.sarif4k:sarif4k-jvm:0.6.0=ktlint,ktlintReporter
|
||||
io.github.detekt.sarif4k:sarif4k:0.6.0=ktlint,ktlintReporter
|
||||
io.github.oshai:kotlin-logging-jvm:7.0.7=ktlint,ktlintBaselineReporter,ktlintReporter,ktlintRuleset
|
||||
io.github.oshai:kotlin-logging:5.1.0=ktlint,ktlintBaselineReporter,ktlintReporter
|
||||
jakarta.activation:jakarta.activation-api:1.2.1=androidLintTool
|
||||
jakarta.inject:jakarta.inject-api:2.0.1=benchmarkTestedApks,debugTestedApks
|
||||
jakarta.xml.bind:jakarta.xml.bind-api:2.3.2=androidLintTool
|
||||
javax.inject:javax.inject:1=androidLintTool,benchmarkTestedApks,debugTestedApks
|
||||
junit:junit:4.13.2=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
net.java.dev.jna:jna-platform:5.6.0=androidLintTool
|
||||
net.java.dev.jna:jna:5.19.1=benchmarkTestedApks,debugTestedApks
|
||||
net.java.dev.jna:jna:5.6.0=androidLintTool
|
||||
net.sf.kxml:kxml2:2.3.0=androidLintTool
|
||||
org.apache.commons:commons-compress:1.27.1=androidLintTool
|
||||
org.apache.commons:commons-lang3:3.16.0=androidLintTool
|
||||
org.apache.groovy:groovy-bom:4.0.29=androidLintTool
|
||||
org.apache.groovy:groovy:4.0.29=androidLintTool
|
||||
org.apache.httpcomponents:httpclient:4.5.6=androidLintTool
|
||||
org.apache.httpcomponents:httpcore:4.4.16=androidLintTool
|
||||
org.apache.httpcomponents:httpmime:4.5.6=androidLintTool
|
||||
org.bouncycastle:bcpkix-jdk18on:1.80.2=androidLintTool
|
||||
org.bouncycastle:bcprov-jdk18on:1.80.2=androidLintTool
|
||||
org.bouncycastle:bcutil-jdk18on:1.80.2=androidLintTool
|
||||
org.checkerframework:checker-qual:3.43.0=androidLintTool
|
||||
org.ec4j.core:ec4j-core:1.1.1=ktlint,ktlintBaselineReporter,ktlintRuleset
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.2=androidLintTool
|
||||
org.glassfish.jaxb:txw2:2.3.2=androidLintTool
|
||||
org.hamcrest:hamcrest-core:1.3=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
org.jetbrains.kotlin:kotlin-build-tools-api:2.4.0=kotlinAbiValidationCompatClasspath
|
||||
org.jetbrains.kotlin:kotlin-build-tools-api:2.4.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
|
||||
org.jetbrains.kotlin:kotlin-build-tools-compat:2.4.21=kotlinAbiValidationCompatClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
|
||||
org.jetbrains.kotlin:kotlin-build-tools-cri-impl:2.4.0=kotlinAbiValidationCompatClasspath
|
||||
org.jetbrains.kotlin:kotlin-build-tools-cri-impl:2.4.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
|
||||
org.jetbrains.kotlin:kotlin-build-tools-impl:2.4.0=kotlinAbiValidationCompatClasspath
|
||||
org.jetbrains.kotlin:kotlin-build-tools-impl:2.4.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
|
||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.2.0=ktlint,ktlintBaselineReporter,ktlintRuleset
|
||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.4.0=kotlinAbiValidationCompatClasspath
|
||||
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.4.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
|
||||
org.jetbrains.kotlin:kotlin-compiler-runner:2.4.0=kotlinAbiValidationCompatClasspath
|
||||
org.jetbrains.kotlin:kotlin-compiler-runner:2.4.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
|
||||
org.jetbrains.kotlin:kotlin-daemon-client:2.4.0=kotlinAbiValidationCompatClasspath
|
||||
org.jetbrains.kotlin:kotlin-daemon-client:2.4.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
|
||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.2.0=ktlint,ktlintBaselineReporter,ktlintRuleset
|
||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.4.0=kotlinAbiValidationCompatClasspath
|
||||
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.4.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
|
||||
org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinAbiValidationCompatClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,ktlint,ktlintBaselineReporter,ktlintRuleset
|
||||
org.jetbrains.kotlin:kotlin-reflect:2.2.10=androidLintTool
|
||||
org.jetbrains.kotlin:kotlin-script-runtime:2.2.0=ktlint,ktlintBaselineReporter,ktlintRuleset
|
||||
org.jetbrains.kotlin:kotlin-script-runtime:2.4.0=kotlinAbiValidationCompatClasspath
|
||||
org.jetbrains.kotlin:kotlin-script-runtime:2.4.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
|
||||
org.jetbrains.kotlin:kotlin-stdlib-common:2.2.0=ktlintReporter
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath,ktlintReporter
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.2.10=androidLintTool,unified-test-platform-gradle-work-action
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath,ktlintReporter
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.10=androidLintTool,unified-test-platform-gradle-work-action
|
||||
org.jetbrains.kotlin:kotlin-stdlib:2.2.0=ktlint,ktlintBaselineReporter,ktlintReporter,ktlintRuleset
|
||||
org.jetbrains.kotlin:kotlin-stdlib:2.2.10=androidLintTool,unified-test-platform-gradle-work-action
|
||||
org.jetbrains.kotlin:kotlin-stdlib:2.4.0=kotlinAbiValidationCompatClasspath
|
||||
org.jetbrains.kotlin:kotlin-stdlib:2.4.21=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,benchmarkTestedApks,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath,debugTestedApks,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
|
||||
org.jetbrains.kotlin:kotlin-tooling-core:2.4.21=kotlinAbiValidationCompatClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.11.0=benchmarkTestedApks,debugTestedApks
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0=benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.11.0=benchmarkTestedApks,debugTestedApks
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0=androidLintTool,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath,unified-test-platform-gradle-work-action
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.11.0=benchmarkTestedApks,debugTestedApks
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=kotlinAbiValidationCompatClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,ktlint,ktlintBaselineReporter,ktlintRuleset
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0=androidLintTool,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath,unified-test-platform-gradle-work-action
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0=benchmarkTestedApks,debugTestedApks
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0=androidLintTool,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,debugLintChecksClasspath,debugRuntimeClasspath,unified-test-platform-gradle-work-action
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3=benchmarkTestedApks,debugTestedApks
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.4.1=ktlintReporter
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3=benchmarkTestedApks,debugTestedApks
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-core:1.4.1=ktlintReporter
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3=benchmarkTestedApks,debugTestedApks
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.4.1=ktlintReporter
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1=ktlintReporter
|
||||
org.jetbrains:annotations:13.0=benchmarkCompileClasspath,debugCompileClasspath,kotlinAbiValidationCompatClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,ktlint,ktlintBaselineReporter,ktlintReporter,ktlintRuleset
|
||||
org.jetbrains:annotations:23.0.0=androidLintTool,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,benchmarkTestedApks,debugLintChecksClasspath,debugRuntimeClasspath,debugTestedApks,unified-test-platform-gradle-work-action
|
||||
org.jspecify:jspecify:1.0.0=benchmarkCompileClasspath,benchmarkLintChecksClasspath,benchmarkRuntimeClasspath,benchmarkTestedApks,debugCompileClasspath,debugLintChecksClasspath,debugRuntimeClasspath,debugTestedApks
|
||||
org.junit.platform:junit-platform-commons:1.13.3=unified-test-platform-gradle-work-action
|
||||
org.junit.platform:junit-platform-engine:1.13.3=unified-test-platform-gradle-work-action
|
||||
org.junit.platform:junit-platform-launcher:1.13.3=unified-test-platform-gradle-work-action
|
||||
org.junit:junit-bom:5.13.3=unified-test-platform-gradle-work-action
|
||||
org.jvnet.staxex:stax-ex:1.8.1=androidLintTool
|
||||
org.opentest4j:opentest4j:1.3.0=unified-test-platform-gradle-work-action
|
||||
org.ow2.asm:asm-analysis:9.9=androidLintTool
|
||||
org.ow2.asm:asm-commons:9.9=androidLintTool
|
||||
org.ow2.asm:asm-tree:9.9=androidLintTool
|
||||
org.ow2.asm:asm:9.9=androidLintTool
|
||||
org.slf4j:slf4j-api:2.0.7=ktlint
|
||||
rustls:rustls-platform-verifier:0.1.1=benchmarkTestedApks,debugTestedApks
|
||||
empty=androidApis,androidJdkImage,androidTestUtil,benchmarkAnnotationProcessorClasspath,benchmarkImplementationDependenciesMetadata,coreLibraryDesugaring,debugAnnotationProcessorClasspath,debugImplementationDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinCompilerPluginClasspathBenchmark,kotlinCompilerPluginClasspathDebug,lintChecks,lintPublish
|
||||
@@ -0,0 +1 @@
|
||||
<manifest />
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
package de.rfc1437.ironstorage.performance
|
||||
|
||||
import android.os.Build
|
||||
import androidx.benchmark.macro.junit4.BaselineProfileRule
|
||||
import androidx.test.uiautomator.By
|
||||
import androidx.test.uiautomator.Until
|
||||
import org.junit.Assert.assertNotNull
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
|
||||
class BaselineProfile {
|
||||
@get:Rule val profile = BaselineProfileRule()
|
||||
|
||||
@Before fun preserveInstalledApplicationData() {
|
||||
// Older non-rooted images can reinstall the app while resetting compilation.
|
||||
check(Build.VERSION.SDK_INT >= 34)
|
||||
}
|
||||
|
||||
@Test fun startupAndPreferences() = profile.collect(
|
||||
packageName = "de.rfc1437.ironstorage"
|
||||
) {
|
||||
pressHome()
|
||||
startActivityAndWait()
|
||||
val preferences = device.wait(Until.findObject(By.text("Preferences")), 10000)
|
||||
assertNotNull("Preferences navigation must be available", preferences)
|
||||
preferences.click()
|
||||
assertNotNull(
|
||||
"Searchable settings must finish loading",
|
||||
device.wait(Until.findObject(By.text("Search settings")), 10000)
|
||||
)
|
||||
}
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package de.rfc1437.ironstorage.performance
|
||||
|
||||
import androidx.benchmark.macro.CompilationMode
|
||||
import androidx.benchmark.macro.ExperimentalMacrobenchmarkApi
|
||||
import androidx.benchmark.macro.StartupMode
|
||||
import androidx.benchmark.macro.StartupTimingMetric
|
||||
import androidx.benchmark.macro.junit4.MacrobenchmarkRule
|
||||
import androidx.test.uiautomator.By
|
||||
import androidx.test.uiautomator.Until
|
||||
import org.junit.Assert.assertNotNull
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
|
||||
@OptIn(ExperimentalMacrobenchmarkApi::class)
|
||||
class StartupBenchmark {
|
||||
@get:Rule val benchmark = MacrobenchmarkRule()
|
||||
|
||||
@Test fun coldStart() = startup(StartupMode.COLD)
|
||||
|
||||
@Test fun warmStart() = startup(StartupMode.WARM)
|
||||
|
||||
private fun startup(mode: StartupMode) = benchmark.measureRepeated(
|
||||
packageName = "de.rfc1437.ironstorage",
|
||||
metrics = listOf(StartupTimingMetric()),
|
||||
compilationMode = CompilationMode.Ignore(),
|
||||
startupMode = mode,
|
||||
iterations = 5,
|
||||
setupBlock = { pressHome() }
|
||||
) {
|
||||
startActivityAndWait()
|
||||
assertNotNull(
|
||||
"Native shell must finish loading",
|
||||
device.wait(Until.findObject(By.text("Home")), 10000)
|
||||
)
|
||||
device.waitForIdle()
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user