From cb1df040193216ec33104a86d91b717758933cae Mon Sep 17 00:00:00 2001 From: aditya-verma Date: Sun, 14 Jun 2026 23:38:52 +0530 Subject: [PATCH] upgrade to api 36 and build tool 36.0.0 --- app/src/main/AndroidManifest.xml | 2 +- app/src/main/AppAndroidManifest.xml | 2 +- app/src/main/DatabindingAdaptersManifest.xml | 2 +- app/src/main/DatabindingResourcesManifest.xml | 2 +- app/src/main/RecyclerviewAdaptersManifest.xml | 2 +- app/src/main/ViewModelManifest.xml | 2 +- app/src/main/ViewModelsManifest.xml | 2 +- app/src/main/ViewsManifest.xml | 2 +- .../app/player/audio/AudioViewModel.kt | 4 +++- .../translation/AppLanguageResourceHandler.kt | 5 ++++- build_flavors.bzl | 8 +++---- build_vars.bzl | 4 ++-- .../oppia/android/config/AndroidManifest.xml | 2 +- data/src/main/AndroidManifest.xml | 2 +- domain/src/main/AndroidManifest.xml | 2 +- .../android/scripts/lint/LintModelCreator.kt | 2 +- .../common/AndroidBuildSdkPropertiesTest.kt | 4 ++-- .../scripts/lint/AndroidLintRunnerTest.kt | 2 +- .../scripts/lint/LintModelCreatorTest.kt | 2 +- testing/src/main/AndroidManifest.xml | 2 +- utility/src/main/AndroidManifest.xml | 2 +- .../accessibility/AccessibilityServiceImpl.kt | 5 +++++ .../util/locale/AndroidLocaleProfile.kt | 21 +++++++++++++++---- 23 files changed, 53 insertions(+), 30 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 33f54765791..39bee0869ca 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" package="org.oppia.android"> + android:targetSdkVersion="36" /> diff --git a/app/src/main/AppAndroidManifest.xml b/app/src/main/AppAndroidManifest.xml index 4c15ca1f14c..7b96cea3793 100644 --- a/app/src/main/AppAndroidManifest.xml +++ b/app/src/main/AppAndroidManifest.xml @@ -1,5 +1,5 @@ + android:targetSdkVersion="36" /> diff --git a/app/src/main/DatabindingAdaptersManifest.xml b/app/src/main/DatabindingAdaptersManifest.xml index 63cdc2a5f2b..fac77236c71 100644 --- a/app/src/main/DatabindingAdaptersManifest.xml +++ b/app/src/main/DatabindingAdaptersManifest.xml @@ -1,5 +1,5 @@ + android:targetSdkVersion="36" /> diff --git a/app/src/main/DatabindingResourcesManifest.xml b/app/src/main/DatabindingResourcesManifest.xml index ae17458dc3f..ab0bc42bc41 100644 --- a/app/src/main/DatabindingResourcesManifest.xml +++ b/app/src/main/DatabindingResourcesManifest.xml @@ -1,5 +1,5 @@ + android:targetSdkVersion="36" /> diff --git a/app/src/main/RecyclerviewAdaptersManifest.xml b/app/src/main/RecyclerviewAdaptersManifest.xml index ce15d95f5c2..5a6cdc2a2a4 100644 --- a/app/src/main/RecyclerviewAdaptersManifest.xml +++ b/app/src/main/RecyclerviewAdaptersManifest.xml @@ -1,5 +1,5 @@ + android:targetSdkVersion="36" /> diff --git a/app/src/main/ViewModelManifest.xml b/app/src/main/ViewModelManifest.xml index a839f49c55d..b5416abbbae 100644 --- a/app/src/main/ViewModelManifest.xml +++ b/app/src/main/ViewModelManifest.xml @@ -3,5 +3,5 @@ + android:targetSdkVersion="36" /> diff --git a/app/src/main/ViewModelsManifest.xml b/app/src/main/ViewModelsManifest.xml index b96420da2fb..55189735a49 100644 --- a/app/src/main/ViewModelsManifest.xml +++ b/app/src/main/ViewModelsManifest.xml @@ -3,5 +3,5 @@ + android:targetSdkVersion="36" /> diff --git a/app/src/main/ViewsManifest.xml b/app/src/main/ViewsManifest.xml index 33bafb86383..b5b1aa96921 100644 --- a/app/src/main/ViewsManifest.xml +++ b/app/src/main/ViewsManifest.xml @@ -3,5 +3,5 @@ + android:targetSdkVersion="36" /> diff --git a/app/src/main/java/org/oppia/android/app/player/audio/AudioViewModel.kt b/app/src/main/java/org/oppia/android/app/player/audio/AudioViewModel.kt index 3de39cee276..70fac52537d 100644 --- a/app/src/main/java/org/oppia/android/app/player/audio/AudioViewModel.kt +++ b/app/src/main/java/org/oppia/android/app/player/audio/AudioViewModel.kt @@ -180,7 +180,9 @@ class AudioViewModel @Inject constructor( if (languageCodeForDataSource != null) { // TODO(#3791): Remove this dependency. - val locale = Locale(languageCodeForDataSource) + val locale = Locale.Builder() + .setLanguage(languageCodeForDataSource) + .build() selectedLanguageName.set(locale.getDisplayLanguage(locale)) audioPlayerController.changeDataSource( diff --git a/app/src/main/java/org/oppia/android/app/translation/AppLanguageResourceHandler.kt b/app/src/main/java/org/oppia/android/app/translation/AppLanguageResourceHandler.kt index e9c4a44a6c5..6a964b4cf36 100644 --- a/app/src/main/java/org/oppia/android/app/translation/AppLanguageResourceHandler.kt +++ b/app/src/main/java/org/oppia/android/app/translation/AppLanguageResourceHandler.kt @@ -188,7 +188,10 @@ class AppLanguageResourceHandler @Inject constructor( private fun getLocalizedDisplayName(languageCode: String, regionCode: String = ""): String { // TODO(#3791): Remove this dependency. - val locale = Locale(languageCode, regionCode) + val locale = Locale.Builder() + .setLanguage(languageCode) + .setRegion(regionCode) + .build() return locale.getDisplayLanguage(locale).replaceFirstChar { if (it.isLowerCase()) it.titlecase(locale) else it.toString() } diff --git a/build_flavors.bzl b/build_flavors.bzl index 004ee00ae95..d4a56197c95 100644 --- a/build_flavors.bzl +++ b/build_flavors.bzl @@ -37,7 +37,7 @@ _FLAVOR_METADATA = { "dev": { "manifest": "//app:src/main/AndroidManifest.xml", "min_sdk_version": 21, - "target_sdk_version": 35, + "target_sdk_version": 36, "multidex": "native", "proguard_specs": [], # Developer builds are not optimized. "production_release": False, @@ -51,7 +51,7 @@ _FLAVOR_METADATA = { "alpha": { "manifest": "//app:src/main/AndroidManifest.xml", "min_sdk_version": 21, - "target_sdk_version": 35, + "target_sdk_version": 36, "multidex": "native", "proguard_specs": _PRODUCTION_PROGUARD_SPECS, "production_release": True, @@ -66,7 +66,7 @@ _FLAVOR_METADATA = { "beta": { "manifest": "//app:src/main/AndroidManifest.xml", "min_sdk_version": 21, - "target_sdk_version": 35, + "target_sdk_version": 36, "multidex": "native", "proguard_specs": _PRODUCTION_PROGUARD_SPECS, "production_release": True, @@ -81,7 +81,7 @@ _FLAVOR_METADATA = { "ga": { "manifest": "//app:src/main/AndroidManifest.xml", "min_sdk_version": 21, - "target_sdk_version": 35, + "target_sdk_version": 36, "multidex": "native", "proguard_specs": _PRODUCTION_PROGUARD_SPECS, "production_release": True, diff --git a/build_vars.bzl b/build_vars.bzl index dd42c348fe1..9390073de4e 100644 --- a/build_vars.bzl +++ b/build_vars.bzl @@ -1,3 +1,3 @@ -BUILD_SDK_VERSION = 35 -BUILD_TOOLS_VERSION = "34.0.0" +BUILD_SDK_VERSION = 36 +BUILD_TOOLS_VERSION = "36.0.0" KOTLIN_COMPILER_VERSION = "1.6.10" diff --git a/config/src/java/org/oppia/android/config/AndroidManifest.xml b/config/src/java/org/oppia/android/config/AndroidManifest.xml index 6d109f4176e..d5ccaf2f5de 100644 --- a/config/src/java/org/oppia/android/config/AndroidManifest.xml +++ b/config/src/java/org/oppia/android/config/AndroidManifest.xml @@ -1,5 +1,5 @@ - + diff --git a/data/src/main/AndroidManifest.xml b/data/src/main/AndroidManifest.xml index 60e55b61953..9bf811aadaf 100644 --- a/data/src/main/AndroidManifest.xml +++ b/data/src/main/AndroidManifest.xml @@ -2,5 +2,5 @@ - + diff --git a/domain/src/main/AndroidManifest.xml b/domain/src/main/AndroidManifest.xml index 6ec09858172..f30b84798b5 100644 --- a/domain/src/main/AndroidManifest.xml +++ b/domain/src/main/AndroidManifest.xml @@ -1,5 +1,5 @@ - + diff --git a/scripts/src/java/org/oppia/android/scripts/lint/LintModelCreator.kt b/scripts/src/java/org/oppia/android/scripts/lint/LintModelCreator.kt index 027882e140a..a21f6a9da55 100644 --- a/scripts/src/java/org/oppia/android/scripts/lint/LintModelCreator.kt +++ b/scripts/src/java/org/oppia/android/scripts/lint/LintModelCreator.kt @@ -41,7 +41,7 @@ class LintModelCreator( // Build configurations for Android app layer configuration private const val PACKAGE_PREFIX = "org.oppia.android" private const val MIN_SDK_VERSION = "21" - private const val TARGET_SDK_VERSION = "35" + private const val TARGET_SDK_VERSION = "36" // Model directories are stable and won't change frequently therefore a longer TTL private const val MODEL_CACHE_TTL_HOURS = 24L // 24 hours diff --git a/scripts/src/javatests/org/oppia/android/scripts/common/AndroidBuildSdkPropertiesTest.kt b/scripts/src/javatests/org/oppia/android/scripts/common/AndroidBuildSdkPropertiesTest.kt index c2668a1b650..1b07cb4929d 100644 --- a/scripts/src/javatests/org/oppia/android/scripts/common/AndroidBuildSdkPropertiesTest.kt +++ b/scripts/src/javatests/org/oppia/android/scripts/common/AndroidBuildSdkPropertiesTest.kt @@ -19,14 +19,14 @@ class AndroidBuildSdkPropertiesTest { fun testBuildSdkVersion_isTheCorrectSdkVersion() { val properties = AndroidBuildSdkProperties() - assertThat(properties.buildSdkVersion).isEqualTo(35) + assertThat(properties.buildSdkVersion).isEqualTo(36) } @Test fun testBuildToolsVersion_isTheCorrectVersion() { val properties = AndroidBuildSdkProperties() - assertThat(properties.buildToolsVersion).isEqualTo("34.0.0") + assertThat(properties.buildToolsVersion).isEqualTo("36.0.0") } @Test diff --git a/scripts/src/javatests/org/oppia/android/scripts/lint/AndroidLintRunnerTest.kt b/scripts/src/javatests/org/oppia/android/scripts/lint/AndroidLintRunnerTest.kt index c6e98971b8e..5637ace02aa 100644 --- a/scripts/src/javatests/org/oppia/android/scripts/lint/AndroidLintRunnerTest.kt +++ b/scripts/src/javatests/org/oppia/android/scripts/lint/AndroidLintRunnerTest.kt @@ -44,7 +44,7 @@ class AndroidLintRunnerTest { companion object { private const val JAVA_VERSION = "11.0.6" private const val MIN_SDK_VERSION = "21" - private const val TARGET_SDK_VERSION = "35" + private const val TARGET_SDK_VERSION = "36" } @Before diff --git a/scripts/src/javatests/org/oppia/android/scripts/lint/LintModelCreatorTest.kt b/scripts/src/javatests/org/oppia/android/scripts/lint/LintModelCreatorTest.kt index 33711e27001..8ec4ce2c335 100644 --- a/scripts/src/javatests/org/oppia/android/scripts/lint/LintModelCreatorTest.kt +++ b/scripts/src/javatests/org/oppia/android/scripts/lint/LintModelCreatorTest.kt @@ -70,7 +70,7 @@ class LintModelCreatorTest { assertThat(content).contains(" + android:targetSdkVersion="36" /> diff --git a/utility/src/main/AndroidManifest.xml b/utility/src/main/AndroidManifest.xml index 89cd43f020b..0fe889b0a55 100644 --- a/utility/src/main/AndroidManifest.xml +++ b/utility/src/main/AndroidManifest.xml @@ -1,5 +1,5 @@ + android:targetSdkVersion="36" /> diff --git a/utility/src/main/java/org/oppia/android/util/accessibility/AccessibilityServiceImpl.kt b/utility/src/main/java/org/oppia/android/util/accessibility/AccessibilityServiceImpl.kt index 892c3e3f154..c66f0f876eb 100644 --- a/utility/src/main/java/org/oppia/android/util/accessibility/AccessibilityServiceImpl.kt +++ b/utility/src/main/java/org/oppia/android/util/accessibility/AccessibilityServiceImpl.kt @@ -17,6 +17,11 @@ class AccessibilityServiceImpl @Inject constructor( return accessibilityManager.isEnabled } + // TODO : Replace deprecated View.announceForAccessibility() with a direct + // AccessibilityManager.sendAccessibilityEvent(TYPE_ANNOUNCEMENT) call. + // Suppressed temporarily to unblock the Android 16 (SDK 36) target upgrade. + + @Suppress("DEPRECATION") override fun announceForAccessibilityForView(view: View, text: CharSequence) { view.announceForAccessibility(text) } diff --git a/utility/src/main/java/org/oppia/android/util/locale/AndroidLocaleProfile.kt b/utility/src/main/java/org/oppia/android/util/locale/AndroidLocaleProfile.kt index 9c96ec0f8fc..c2b48ea568b 100644 --- a/utility/src/main/java/org/oppia/android/util/locale/AndroidLocaleProfile.kt +++ b/utility/src/main/java/org/oppia/android/util/locale/AndroidLocaleProfile.kt @@ -56,7 +56,11 @@ sealed class AndroidLocaleProfile { } } - override fun computeAndroidLocale(): Locale = Locale(languageCode, regionCode) + override fun computeAndroidLocale(): Locale = + Locale.Builder() + .setLanguage(languageCode) + .setRegion(regionCode) + .build() } /** @@ -73,7 +77,10 @@ sealed class AndroidLocaleProfile { override fun matches(otherProfile: AndroidLocaleProfile): Boolean = otherProfile is RegionOnlyProfile && regionCode == otherProfile.regionCode - override fun computeAndroidLocale(): Locale = Locale(/* language = */ "", regionCode) + override fun computeAndroidLocale(): Locale = + Locale.Builder() + .setRegion(regionCode) + .build() } /** @@ -95,7 +102,10 @@ sealed class AndroidLocaleProfile { } } - override fun computeAndroidLocale(): Locale = Locale(languageCode) + override fun computeAndroidLocale(): Locale = + Locale.Builder() + .setLanguage(languageCode) + .build() } /** @@ -119,7 +129,10 @@ sealed class AndroidLocaleProfile { } } - override fun computeAndroidLocale(): Locale = Locale(languageCode) + override fun computeAndroidLocale(): Locale = + Locale.Builder() + .setLanguage(languageCode) + .build() } /**