commit a0d7ad313f50a12989501974e0e52b8143373535 parent f839885524588fb02570370abeeb49c5a6d2d48b Author: Ryan VanderMeulen <rvandermeulen@mozilla.com> Date: Mon, 1 Dec 2025 20:16:04 +0000 Bug 2001959 - Compile with Android SDK 36.1. r=jgraham,geckoview-reviewers,android-reviewers,firefox-build-system-reviewers,mcarare,ahochheiden,ohall Android wrench tests depend on cargo-apk, which doesn't support non-integer platform versions. Keep the last major version around in android-packages.txt for it to use instead. https://github.com/rust-mobile/cargo-apk/issues/74 Differential Revision: https://phabricator.services.mozilla.com/D274021 Diffstat:
27 files changed, 115 insertions(+), 75 deletions(-)
diff --git a/build.gradle b/build.gradle @@ -108,9 +108,10 @@ allprojects { buildId = getBuildId() buildToolsVersion = mozconfig.substs.ANDROID_BUILD_TOOLS_VERSION - compileSdkVersion = tryInt(mozconfig.substs.ANDROID_COMPILE_SDK) - targetSdkVersion = tryInt(mozconfig.substs.ANDROID_TARGET_SDK) + compileSdkMajorVersion = tryInt(mozconfig.substs.ANDROID_COMPILE_SDK_MAJOR) + compileSdkMinorVersion = tryInt(mozconfig.substs.ANDROID_COMPILE_SDK_MINOR) minSdkVersion = tryInt(mozconfig.substs.MOZ_ANDROID_MIN_SDK_VERSION) + targetSdkVersion = tryInt(mozconfig.substs.ANDROID_TARGET_SDK) manifestPlaceholders = [ ANDROID_TARGET_SDK: mozconfig.substs.ANDROID_TARGET_SDK, MOZ_ANDROID_MIN_SDK_VERSION: mozconfig.substs.MOZ_ANDROID_MIN_SDK_VERSION, diff --git a/build/moz.configure/android-sdk.configure b/build/moz.configure/android-sdk.configure @@ -127,9 +127,11 @@ def android_sdk_root(value, android_os_info, want_bootstrap): @dependable def android_sdk_version(): + major, minor, patch = "36", "1", "0" return namespace( - build_tools_version="36.0.0", - compile_sdk_version="36", + build_tools_version=f"{major}.{minor}.{patch}", + compile_sdk_major_version=major, + compile_sdk_minor_version=minor, target_sdk_version="36", min_sdk_version="26", ) @@ -199,7 +201,13 @@ def android_platform_tools(sdk_root, android_os_info, want_bootstrap): @imports(_from="mozboot.android", _import="AndroidPackageList") def android_platforms(sdk_root, sdk_version, android_os_info, want_bootstrap): prefix = "platforms" - platforms_path = os.path.join(prefix, "android-" + sdk_version.compile_sdk_version) + + version = sdk_version.compile_sdk_major_version + if int(sdk_version.compile_sdk_minor_version) != 0: + version = f"{version}.{sdk_version.compile_sdk_minor_version}" + + platforms_path = os.path.join(prefix, f"android-{version}") + return _ensure_android_package( package_relative_path=platforms_path, sdk_root=sdk_root, @@ -349,4 +357,5 @@ check_file("android.jar", android_platforms) set_config("ANDROID_BUILD_TOOLS_VERSION", android_sdk_version.build_tools_version) set_config("ANDROID_TARGET_SDK", android_sdk_version.target_sdk_version) -set_config("ANDROID_COMPILE_SDK", android_sdk_version.compile_sdk_version) +set_config("ANDROID_COMPILE_SDK_MAJOR", android_sdk_version.compile_sdk_major_version) +set_config("ANDROID_COMPILE_SDK_MINOR", android_sdk_version.compile_sdk_minor_version) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] # AGP -android-gradle-plugin = "8.13.0" # Keep lint version in sync -android-lint = "31.13.0" +android-gradle-plugin = "8.13.1" # Keep lint version in sync +android-lint = "31.13.1" # Kotlin coroutines = "1.10.2" diff --git a/mobile/android/android-components/.config.yml b/mobile/android/android-components/.config.yml @@ -3,6 +3,7 @@ componentsGroupId: "org.mozilla.components" # Synchronized build configuration for all modules jvmTargetCompatibility: 17 -compileSdkVersion: 36 +compileSdkMajorVersion: 36 +compileSdkMinorVersion: 1 minSdkVersion: 26 targetSdkVersion: 36 diff --git a/mobile/android/android-components/common-config.gradle b/mobile/android/android-components/common-config.gradle @@ -6,7 +6,7 @@ android { } } - compileSdk config.compileSdkVersion + compileSdk { version = release(config.compileSdkMajorVersion) { minorApiLevel = config.compileSdkMinorVersion } } defaultConfig { minSdk config.minSdkVersion diff --git a/mobile/android/android-components/samples/browser/build.gradle b/mobile/android/android-components/samples/browser/build.gradle @@ -10,11 +10,12 @@ plugins { apply plugin: 'com.android.application' android { + compileSdk { version = release(config.compileSdkMajorVersion) { minorApiLevel = config.compileSdkMinorVersion } } + defaultConfig { applicationId "org.mozilla.samples.browser" - minSdkVersion = config.minSdkVersion - compileSdk = config.compileSdkVersion - targetSdkVersion = config.targetSdkVersion + minSdk config.minSdkVersion + targetSdk config.targetSdkVersion versionCode 1 versionName "1.0" diff --git a/mobile/android/android-components/samples/compose-browser/build.gradle b/mobile/android/android-components/samples/compose-browser/build.gradle @@ -11,11 +11,12 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-parcelize' android { + compileSdk { version = release(config.compileSdkMajorVersion) { minorApiLevel = config.compileSdkMinorVersion } } + defaultConfig { applicationId "org.mozilla.samples.compose.browser" - minSdkVersion = config.minSdkVersion - compileSdk = config.compileSdkVersion - targetSdkVersion = config.targetSdkVersion + minSdk config.minSdkVersion + targetSdk config.targetSdkVersion versionCode 1 versionName "1.0" diff --git a/mobile/android/android-components/samples/crash/build.gradle b/mobile/android/android-components/samples/crash/build.gradle @@ -6,11 +6,12 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { + compileSdk { version = release(config.compileSdkMajorVersion) { minorApiLevel = config.compileSdkMinorVersion } } + defaultConfig { applicationId "org.mozilla.samples.crash" - minSdkVersion = config.minSdkVersion - compileSdk = config.compileSdkVersion - targetSdkVersion = config.targetSdkVersion + minSdk config.minSdkVersion + targetSdk config.targetSdkVersion versionCode 1 versionName "1.0" diff --git a/mobile/android/android-components/samples/dataprotect/build.gradle b/mobile/android/android-components/samples/dataprotect/build.gradle @@ -2,12 +2,12 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { + compileSdk { version = release(config.compileSdkMajorVersion) { minorApiLevel = config.compileSdkMinorVersion } } + defaultConfig { applicationId "org.mozilla.samples.dataprotect" - - minSdkVersion = config.minSdkVersion - compileSdk = config.compileSdkVersion - targetSdkVersion = config.targetSdkVersion + minSdk config.minSdkVersion + targetSdk config.targetSdkVersion versionCode 1 versionName "1.0" diff --git a/mobile/android/android-components/samples/firefox-accounts/build.gradle b/mobile/android/android-components/samples/firefox-accounts/build.gradle @@ -6,11 +6,12 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { + compileSdk { version = release(config.compileSdkMajorVersion) { minorApiLevel = config.compileSdkMinorVersion } } + defaultConfig { applicationId "org.mozilla.samples.fxa" - minSdkVersion = config.minSdkVersion - compileSdk = config.compileSdkVersion - targetSdkVersion = config.targetSdkVersion + minSdk config.minSdkVersion + targetSdk config.targetSdkVersion versionCode 1 versionName "1.0" diff --git a/mobile/android/android-components/samples/glean/build.gradle b/mobile/android/android-components/samples/glean/build.gradle @@ -27,11 +27,12 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { + compileSdk { version = release(config.compileSdkMajorVersion) { minorApiLevel = config.compileSdkMinorVersion } } + defaultConfig { applicationId "org.mozilla.samples.glean" - minSdkVersion = config.minSdkVersion - compileSdk = config.compileSdkVersion - targetSdkVersion = config.targetSdkVersion + minSdk config.minSdkVersion + targetSdk config.targetSdkVersion versionCode 1 versionName "1.0" diff --git a/mobile/android/android-components/samples/glean/samples-glean-library/build.gradle b/mobile/android/android-components/samples/glean/samples-glean-library/build.gradle @@ -27,10 +27,11 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' android { + compileSdk { version = release(config.compileSdkMajorVersion) { minorApiLevel = config.compileSdkMinorVersion } } + defaultConfig { - minSdkVersion = config.minSdkVersion - compileSdk = config.compileSdkVersion - targetSdkVersion = config.targetSdkVersion + minSdk config.minSdkVersion + targetSdk config.targetSdkVersion } buildTypes { diff --git a/mobile/android/android-components/samples/sync-logins/build.gradle b/mobile/android/android-components/samples/sync-logins/build.gradle @@ -6,11 +6,12 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { + compileSdk { version = release(config.compileSdkMajorVersion) { minorApiLevel = config.compileSdkMinorVersion } } + defaultConfig { applicationId "org.mozilla.samples.sync.logins" - minSdkVersion = config.minSdkVersion - compileSdk = config.compileSdkVersion - targetSdkVersion = config.targetSdkVersion + minSdk config.minSdkVersion + targetSdk config.targetSdkVersion versionCode 1 versionName "1.0" diff --git a/mobile/android/android-components/samples/sync/build.gradle b/mobile/android/android-components/samples/sync/build.gradle @@ -6,11 +6,12 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { + compileSdk { version = release(config.compileSdkMajorVersion) { minorApiLevel = config.compileSdkMinorVersion } } + defaultConfig { applicationId "org.mozilla.samples.sync" - minSdkVersion = config.minSdkVersion - compileSdk = config.compileSdkVersion - targetSdkVersion = config.targetSdkVersion + minSdk config.minSdkVersion + targetSdk config.targetSdkVersion versionCode 1 versionName "1.0" diff --git a/mobile/android/android-components/samples/toolbar/build.gradle b/mobile/android/android-components/samples/toolbar/build.gradle @@ -10,11 +10,12 @@ plugins { apply plugin: 'com.android.application' android { + compileSdk { version = release(config.compileSdkMajorVersion) { minorApiLevel = config.compileSdkMinorVersion } } + defaultConfig { applicationId "org.mozilla.samples.toolbar" - minSdkVersion = config.minSdkVersion - compileSdk = config.compileSdkVersion - targetSdkVersion = config.targetSdkVersion + minSdk config.minSdkVersion + targetSdk config.targetSdkVersion versionCode 1 versionName "1.0" diff --git a/mobile/android/examples/messaging_example/app/build.gradle b/mobile/android/examples/messaging_example/app/build.gradle @@ -6,12 +6,14 @@ apply plugin: 'com.android.application' android { buildToolsVersion = project.ext.buildToolsVersion - compileSdkVersion = project.ext.compileSdkVersion + compileSdk { + version = release(project.ext.compileSdkMajorVersion) { minorApiLevel = project.ext.compileSdkMinorVersion } + } defaultConfig { applicationId "org.mozilla.geckoview.example.messaging" - targetSdkVersion = project.ext.targetSdkVersion - minSdkVersion = project.ext.minSdkVersion + minSdk project.ext.minSdkVersion + targetSdk project.ext.targetSdkVersion versionCode 1 versionName "1.0" } diff --git a/mobile/android/examples/port_messaging_example/app/build.gradle b/mobile/android/examples/port_messaging_example/app/build.gradle @@ -6,12 +6,14 @@ apply plugin: 'com.android.application' android { buildToolsVersion = project.ext.buildToolsVersion - compileSdkVersion = project.ext.compileSdkVersion + compileSdk { + version = release(project.ext.compileSdkMajorVersion) { minorApiLevel = project.ext.compileSdkMinorVersion } + } defaultConfig { applicationId "org.mozilla.geckoview.example.messaging" - targetSdkVersion = project.ext.targetSdkVersion - minSdkVersion = project.ext.minSdkVersion + minSdk project.ext.minSdkVersion + targetSdk project.ext.targetSdkVersion versionCode 1 versionName "1.0" } diff --git a/mobile/android/exoplayer2/build.gradle b/mobile/android/exoplayer2/build.gradle @@ -12,11 +12,13 @@ dependencies { android { buildToolsVersion = project.ext.buildToolsVersion - compileSdkVersion = project.ext.compileSdkVersion + compileSdk { + version = release(project.ext.compileSdkMajorVersion) { minorApiLevel = project.ext.compileSdkMinorVersion } + } defaultConfig { - targetSdkVersion project.ext.targetSdkVersion - minSdkVersion project.ext.minSdkVersion + targetSdk project.ext.targetSdkVersion + minSdk project.ext.minSdkVersion versionCode project.ext.versionCode versionName project.ext.versionName diff --git a/mobile/android/fenix/app/build.gradle b/mobile/android/fenix/app/build.gradle @@ -69,11 +69,12 @@ android { testBuildType project.property("testBuildType") } + compileSdk { version = release(config.compileSdkMajorVersion) { minorApiLevel = config.compileSdkMinorVersion } } + defaultConfig { applicationId "org.mozilla" - minSdkVersion config.minSdkVersion - compileSdk = config.compileSdkVersion - targetSdkVersion config.targetSdkVersion + minSdk config.minSdkVersion + targetSdk config.targetSdkVersion versionCode 1 versionName Config.generateDebugVersionName() vectorDrawables.useSupportLibrary = true diff --git a/mobile/android/fenix/benchmark/build.gradle b/mobile/android/fenix/benchmark/build.gradle @@ -11,11 +11,12 @@ plugins { android { namespace = 'org.mozilla.fenix.benchmark' - compileSdk = config.compileSdkVersion + + compileSdk { version = release(config.compileSdkMajorVersion) { minorApiLevel = config.compileSdkMinorVersion } } defaultConfig { - minSdk = config.minSdkVersion - targetSdk = config.targetSdkVersion + minSdk config.minSdkVersion + targetSdk config.targetSdkVersion testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/mobile/android/focus-android/app/build.gradle b/mobile/android/focus-android/app/build.gradle @@ -34,11 +34,12 @@ android { testBuildType project.property("testBuildType") } + compileSdk { version = release(config.compileSdkMajorVersion) { minorApiLevel = config.compileSdkMinorVersion } } + defaultConfig { applicationId "org.mozilla" - minSdkVersion config.minSdkVersion - compileSdk = config.compileSdkVersion - targetSdkVersion config.targetSdkVersion + minSdk config.minSdkVersion + targetSdk config.targetSdkVersion versionCode 11 // This versionCode is "frozen" for local builds. For "release" builds we // override this with a generated versionCode at build time. // The versionName is dynamically overridden for all the build variants at build time. diff --git a/mobile/android/geckoview/build.gradle b/mobile/android/geckoview/build.gradle @@ -13,15 +13,17 @@ evaluationDependsOn(':annotations') android { buildToolsVersion = project.ext.buildToolsVersion - compileSdkVersion = project.ext.compileSdkVersion + compileSdk { + version = release(project.ext.compileSdkMajorVersion) { minorApiLevel = project.ext.compileSdkMinorVersion } + } useLibrary 'android.test.runner' useLibrary 'android.test.base' useLibrary 'android.test.mock' defaultConfig { - targetSdkVersion project.ext.targetSdkVersion - minSdkVersion project.ext.minSdkVersion + targetSdk project.ext.targetSdkVersion + minSdk project.ext.minSdkVersion manifestPlaceholders = project.ext.manifestPlaceholders versionCode project.ext.versionCode diff --git a/mobile/android/geckoview_example/build.gradle b/mobile/android/geckoview_example/build.gradle @@ -6,11 +6,13 @@ apply plugin: 'com.android.application' android { buildToolsVersion = project.ext.buildToolsVersion - compileSdkVersion = project.ext.compileSdkVersion + compileSdk { + version = release(project.ext.compileSdkMajorVersion) { minorApiLevel = project.ext.compileSdkMinorVersion } + } defaultConfig { - targetSdkVersion project.ext.targetSdkVersion - minSdkVersion project.ext.minSdkVersion + targetSdk project.ext.targetSdkVersion + minSdk project.ext.minSdkVersion manifestPlaceholders = project.ext.manifestPlaceholders applicationId "org.mozilla.geckoview_example" diff --git a/mobile/android/shared-settings.gradle b/mobile/android/shared-settings.gradle @@ -42,7 +42,8 @@ class Config { public final String componentsVersion public final String componentsGroupId public final Integer jvmTargetCompatibility - public final Integer compileSdkVersion + public final Integer compileSdkMajorVersion + public final Integer compileSdkMinorVersion public final Integer minSdkVersion public final Integer targetSdkVersion public final String ndkVersion @@ -52,7 +53,8 @@ class Config { String componentsVersion, String componentsGroupId, Integer jvmTargetCompatibility, - Integer compileSdkVersion, + Integer compileSdkMajorVersion, + Integer compileSdkMinorVersion, Integer minSdkVersion, Integer targetSdkVersion, String ndkVersion @@ -60,7 +62,8 @@ class Config { this.componentsVersion = componentsVersion this.componentsGroupId = componentsGroupId this.jvmTargetCompatibility = jvmTargetCompatibility - this.compileSdkVersion = compileSdkVersion + this.compileSdkMajorVersion = compileSdkMajorVersion + this.compileSdkMinorVersion = compileSdkMinorVersion this.minSdkVersion = minSdkVersion this.targetSdkVersion = targetSdkVersion this.ndkVersion = ndkVersion @@ -155,7 +158,8 @@ gradle.projectsLoaded { -> version, configData.componentsGroupId, configData.jvmTargetCompatibility, - configData.compileSdkVersion, + configData.compileSdkMajorVersion, + configData.compileSdkMinorVersion, configData.minSdkVersion, configData.targetSdkVersion, ndkVersion diff --git a/mobile/android/test_runner/build.gradle b/mobile/android/test_runner/build.gradle @@ -6,11 +6,13 @@ apply plugin: 'com.android.application' android { buildToolsVersion = project.ext.buildToolsVersion - compileSdkVersion = project.ext.compileSdkVersion + compileSdk { + version = release(project.ext.compileSdkMajorVersion) { minorApiLevel = project.ext.compileSdkMinorVersion } + } defaultConfig { - targetSdkVersion project.ext.targetSdkVersion - minSdkVersion project.ext.minSdkVersion + targetSdk project.ext.targetSdkVersion + minSdk project.ext.minSdkVersion manifestPlaceholders = project.ext.manifestPlaceholders applicationId "org.mozilla.geckoview.test_runner" diff --git a/python/mozboot/mozboot/android-packages.txt b/python/mozboot/mozboot/android-packages.txt @@ -1,4 +1,5 @@ emulator platform-tools -build-tools;36.0.0 +build-tools;36.1.0 +platforms;android-36.1 platforms;android-36 diff --git a/testing/web-platform/tests/tools/wpt/android.py b/testing/web-platform/tests/tools/wpt/android.py @@ -252,8 +252,8 @@ def install(logger, dest=None, reinstall=False, prompt=True): if new_install: packages = ["platform-tools", - "build-tools;36.0.0", - "platforms;android-36", + "build-tools;36.1.0", + "platforms;android-36.1", "emulator"] install_android_packages(logger, paths, packages, prompt=prompt)