From 7b78ded893036e9fc4e04b8aa7713c7a63096c58 Mon Sep 17 00:00:00 2001 From: Chatchawan Kotarasu Date: Tue, 21 Dec 2021 12:19:20 +0700 Subject: [PATCH 1/2] fix: WebView crashing on Android 5 *BREAKING CHANGES* - change `targetSdkVersion` from 30 to 31 - change `appcompat` version to `1.4.0` --- app/build.gradle | 2 +- build.gradle | 4 +-- localization/build.gradle | 2 +- .../ui/LocalizationActivity.kt | 29 ++++++++++++++----- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 60ae514..687064f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -49,7 +49,7 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'androidx.viewpager:viewpager:1.0.0' implementation 'androidx.preference:preference-ktx:1.1.1' implementation "androidx.viewpager2:viewpager2:1.0.0" diff --git a/build.gradle b/build.gradle index 69f0166..42d8f63 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,8 @@ buildscript { project.ext { kotlin_version = '1.4.32' - compileSdkVersion = 30 - targetSdkVersion = 30 + compileSdkVersion = 31 + targetSdkVersion = 31 minSdkVersion = 14 versionName = '1.2.10' diff --git a/localization/build.gradle b/localization/build.gradle index 82a9911..9e51a6c 100644 --- a/localization/build.gradle +++ b/localization/build.gradle @@ -29,7 +29,7 @@ task dokkaJavadoc(type: org.jetbrains.dokka.gradle.DokkaTask) { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$project.kotlin_version" - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.0' implementation "androidx.activity:activity-ktx:1.2.2" testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.2' diff --git a/localization/src/main/java/com/akexorcist/localizationactivity/ui/LocalizationActivity.kt b/localization/src/main/java/com/akexorcist/localizationactivity/ui/LocalizationActivity.kt index 991130a..354c1f7 100644 --- a/localization/src/main/java/com/akexorcist/localizationactivity/ui/LocalizationActivity.kt +++ b/localization/src/main/java/com/akexorcist/localizationactivity/ui/LocalizationActivity.kt @@ -2,8 +2,8 @@ package com.akexorcist.localizationactivity.ui import android.content.Context import android.content.res.Resources -import android.os.Build import android.os.Bundle +import androidx.annotation.CallSuper import androidx.annotation.LayoutRes import androidx.appcompat.app.AppCompatActivity import com.akexorcist.localizationactivity.core.LocalizationActivityDelegate @@ -30,12 +30,27 @@ abstract class LocalizationActivity : AppCompatActivity, OnLocaleChangedListener } override fun attachBaseContext(newBase: Context) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - applyOverrideConfiguration(localizationDelegate.updateConfigurationLocale(newBase)) - super.attachBaseContext(newBase) - } else { - super.attachBaseContext(localizationDelegate.attachBaseContext(newBase)) - } + super.attachBaseContext(delegateBaseContext(newBase)) + } + + /** + * Get a base context for [attachBaseContext]. You can override this function to wrap this + * context by using ContextWrapper. For example, if your project use ViewPump from + * `io.github.inflationx:viewpump` module ([ViewPump](https://github.com/InflationX/ViewPump)), + * you can override this method to wrap this context with `ViewPumpContextWrapper`. + * ```Kotlin + * override fun delegateBaseContext(context: Context): Context { + * val localizedContext: Context = super.delegateBaseContext(context) + * return ViewPumpContextWrapper.wrap(localizedContext) + * } + * ``` + * @param context a new base context from [attachBaseContext] parameter. + * @return a new base context. By default, it will return + * [LocalizationActivityDelegate.attachBaseContext] + */ + @CallSuper + open fun delegateBaseContext(context: Context): Context { + return localizationDelegate.attachBaseContext(context) } override fun getBaseContext(): Context { From 67c5d422a8e8f9a9300b14c95e6f9e9460377f06 Mon Sep 17 00:00:00 2001 From: Chatchawan Kotarasu Date: Tue, 21 Dec 2021 13:32:46 +0700 Subject: [PATCH 2/2] fix: add jvmTarget 1.8 to localization module --- app/build.gradle | 6 +++--- build.gradle | 2 ++ localization/build.gradle | 8 ++++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 687064f..98b650c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -29,12 +29,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility project.targetJavaVersion + targetCompatibility project.targetJavaVersion } kotlinOptions { - jvmTarget = '1.8' + jvmTarget = project.targetJavaVersion.toString() } buildFeatures { diff --git a/build.gradle b/build.gradle index 42d8f63..5912aa4 100644 --- a/build.gradle +++ b/build.gradle @@ -5,6 +5,8 @@ buildscript { targetSdkVersion = 31 minSdkVersion = 14 + targetJavaVersion = JavaVersion.VERSION_1_8 + versionName = '1.2.10' versionCode = 10210 diff --git a/localization/build.gradle b/localization/build.gradle index 9e51a6c..864ce4d 100644 --- a/localization/build.gradle +++ b/localization/build.gradle @@ -20,6 +20,14 @@ android { res.srcDirs = ['src/main/res'] } } + + compileOptions { + sourceCompatibility project.targetJavaVersion + targetCompatibility project.targetJavaVersion + } + kotlinOptions { + jvmTarget = project.targetJavaVersion.toString() + } } task dokkaJavadoc(type: org.jetbrains.dokka.gradle.DokkaTask) {