diff --git a/.github/workflows/copy-branch.yml b/.github/workflows/copy-branch.yml deleted file mode 100644 index 6c363fe4..00000000 --- a/.github/workflows/copy-branch.yml +++ /dev/null @@ -1,33 +0,0 @@ -# Duplicates default main branch to the old master branch - -name: Duplicates main to old master branch - -# Controls when the action will run. Triggers the workflow on push or pull request -# events but only for the main branch -on: - push: - branches: [ main ] - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - # This workflow contains a single job called "copy-branch" - copy-branch: - # Only run action for the main repo & not forks - if: github.repository_owner == 'android' - # The type of runner that the job will run on - runs-on: ubuntu-latest - - # Steps represent a sequence of tasks that will be executed as part of the job - steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it, - # but specifies master branch (old default). - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - ref: master - - - run: | - git config user.name github-actions - git config user.email github-actions@github.com - git merge origin/main - git push diff --git a/.github/workflows/firebase_test_lab.yml b/.github/workflows/firebase_test_lab.yml index 7d3589db..63334704 100644 --- a/.github/workflows/firebase_test_lab.yml +++ b/.github/workflows/firebase_test_lab.yml @@ -3,6 +3,8 @@ name: Runs Macro Benchmarks on Firebase Test Lab on: push: branches: [ macrobenchmark, main ] + pull_request: + branches: [ main ] workflow_dispatch: jobs: @@ -93,6 +95,5 @@ jobs: --directories-to-pull /sdcard/Download \ --results-bucket gs://macrobenchmark-results \ --environment-variables clearPackageData=true,additionalTestOutputDir=/sdcard/Download,no-isolated-storage=true,androidx.benchmark.enabledRules=BaselineProfile \ - --num-uniform-shards 2 \ + --num-uniform-shards 1 \ --timeout 30m - diff --git a/.github/workflows/generate-bp.yml b/.github/workflows/generate-bp.yml index c5f6ba3a..5763eed6 100644 --- a/.github/workflows/generate-bp.yml +++ b/.github/workflows/generate-bp.yml @@ -1,6 +1,8 @@ name: Generate Baseline Profiles on: + # We ONLY want to build baseline profiles for pushes on main. + # Do not trigger on "pull_request" because it takes too much time and resources. push: branches: [ main ] workflow_dispatch: @@ -52,7 +54,7 @@ jobs: distribution: "zulu" - name: Setup Gradle - uses: gradle/gradle-build-action@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-home-cache-cleanup: true @@ -77,4 +79,3 @@ jobs: with: name: "Production App" path: MacrobenchmarkSample/app/build/outputs/apk/release/*.apk - diff --git a/.github/workflows/macrobenchmark.yml b/.github/workflows/macrobenchmark.yml index 5057225e..e9cc1d11 100644 --- a/.github/workflows/macrobenchmark.yml +++ b/.github/workflows/macrobenchmark.yml @@ -1,6 +1,7 @@ name: Builds Macrobenchmarks on: + workflow_dispatch: pull_request: push: branches: [ macrobenchmark, main ] @@ -47,17 +48,20 @@ jobs: distribution: 'zulu' - name: Setup Gradle - uses: gradle/gradle-build-action@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-home-cache-cleanup: true - name: Build Macrobenchmark Sample run: > ./gradlew assemble \ + -x :macrobenchmark:pixel6Api31Setup \ -x :macrobenchmark:pixel6Api31NonMinifiedReleaseAndroidTest \ -x :macrobenchmark:collectNonMinifiedReleaseBaselineProfile \ - -Pandroidx.benchmark.enabledRules=BaselineProfile \ + -Pandroid.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules="none" \ -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect" \ -Pandroid.experimental.testOptions.managedDevices.setupTimeoutMinutes=180 \ -Pandroid.experimental.androidTest.numManagedDeviceShards=1 \ - -Pandroid.experimental.testOptions.managedDevices.maxConcurrentDevices=1 + -Pandroid.experimental.testOptions.managedDevices.maxConcurrentDevices=1 \ + -Pandroid.experimental.testOptions.managedDevices.emulator.showKernelLogging=true + diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 00000000..26610d1f --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1 @@ +* @mlykotom @keyboardsurfer \ No newline at end of file diff --git a/JankStatsSample/gradle/libs.versions.toml b/JankStatsSample/gradle/libs.versions.toml index e2da76a2..3ff0f0a5 100644 --- a/JankStatsSample/gradle/libs.versions.toml +++ b/JankStatsSample/gradle/libs.versions.toml @@ -14,18 +14,18 @@ [versions] -agp = "8.8.2" -appcompat = "1.7.0" +agp = "8.11.1" +appcompat = "1.7.1" activity = "1.10.1" -composeBom = "2025.02.00" -coroutines = "1.10.1" +composeBom = "2025.07.00" +coroutines = "1.10.2" constraint_layout = "2.2.1" core = "1.9.0" -jankstats = "1.0.0-beta01" -kotlin = "2.1.10" +jankstats = "1.0.0-beta02" +kotlin = "2.2.0" material = "1.12.0" -navigation = "2.8.8" -tracing = "1.2.0" +navigation = "2.9.3" +tracing = "1.3.0" [libraries] diff --git a/JankStatsSample/gradle/wrapper/gradle-wrapper.jar b/JankStatsSample/gradle/wrapper/gradle-wrapper.jar index 9bbc975c..1b33c55b 100644 Binary files a/JankStatsSample/gradle/wrapper/gradle-wrapper.jar and b/JankStatsSample/gradle/wrapper/gradle-wrapper.jar differ diff --git a/JankStatsSample/gradle/wrapper/gradle-wrapper.properties b/JankStatsSample/gradle/wrapper/gradle-wrapper.properties index 37f853b1..d4081da4 100644 --- a/JankStatsSample/gradle/wrapper/gradle-wrapper.properties +++ b/JankStatsSample/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/JankStatsSample/gradlew b/JankStatsSample/gradlew index faf93008..23d15a93 100755 --- a/JankStatsSample/gradlew +++ b/JankStatsSample/gradlew @@ -114,7 +114,7 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar +CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -213,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/JankStatsSample/gradlew.bat b/JankStatsSample/gradlew.bat index 9b42019c..5eed7ee8 100644 --- a/JankStatsSample/gradlew.bat +++ b/JankStatsSample/gradlew.bat @@ -70,11 +70,11 @@ goto fail :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar +set CLASSPATH= @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/MacrobenchmarkSample/app/benchmark-rules.pro b/MacrobenchmarkSample/app/benchmark-rules.txt similarity index 100% rename from MacrobenchmarkSample/app/benchmark-rules.pro rename to MacrobenchmarkSample/app/benchmark-rules.txt diff --git a/MacrobenchmarkSample/app/build.gradle.kts b/MacrobenchmarkSample/app/build.gradle.kts index 23beb2ca..6563650c 100644 --- a/MacrobenchmarkSample/app/build.gradle.kts +++ b/MacrobenchmarkSample/app/build.gradle.kts @@ -22,7 +22,7 @@ plugins { } android { - compileSdk = 35 + compileSdk = 36 namespace = "com.example.macrobenchmark.target" defaultConfig { @@ -30,7 +30,7 @@ android { versionCode = 1 versionName = "1.0" minSdk = 24 - targetSdk = 35 + targetSdk = 36 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -41,15 +41,16 @@ android { // [START macrobenchmark_setup_app_build_type] buildTypes { - getByName("release") { + release { isMinifyEnabled = true isShrinkResources = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" + "keep-rules.pro" ) // In real app, this would use its own release keystore signingConfig = signingConfigs.getByName("debug") + baselineProfile.automaticGenerationDuringBuild = true } } // [END macrobenchmark_setup_app_build_type] @@ -58,12 +59,6 @@ android { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = JavaVersion.VERSION_17.toString() - freeCompilerArgs = freeCompilerArgs + listOf( - "-opt-in=kotlin.RequiresOptIn" - ) - } } dependencies { diff --git a/MacrobenchmarkSample/app/keep-rules.pro b/MacrobenchmarkSample/app/keep-rules.pro new file mode 100644 index 00000000..7d6786e0 --- /dev/null +++ b/MacrobenchmarkSample/app/keep-rules.pro @@ -0,0 +1,6 @@ +# Add project specific Keep Rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle.kts. +# +# For more details, see +# http://developer.android.com/r8 \ No newline at end of file diff --git a/MacrobenchmarkSample/app/proguard-rules.pro b/MacrobenchmarkSample/app/proguard-rules.pro deleted file mode 100644 index 2a5cc63d..00000000 --- a/MacrobenchmarkSample/app/proguard-rules.pro +++ /dev/null @@ -1,27 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle.kts. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile - -# TODO can be removed when https://github.com/square/curtains/issues/36 is fixed and 1.2.5+ is released -# Fixes missing method crash --keepclassmembers class android.view.JavaViewSpy { - static int windowAttachCount(android.view.View); -} diff --git a/MacrobenchmarkSample/app/src/main/AndroidManifest.xml b/MacrobenchmarkSample/app/src/main/AndroidManifest.xml index ab34acde..6536dfe1 100644 --- a/MacrobenchmarkSample/app/src/main/AndroidManifest.xml +++ b/MacrobenchmarkSample/app/src/main/AndroidManifest.xml @@ -14,7 +14,7 @@ android:theme="@style/Theme.Macrobenchmarktarget"> + tools:targetApi="29" />