From 1f0a35f0739ea073d8d8de6951d4fd90fc1e2395 Mon Sep 17 00:00:00 2001 From: topjohnwu Date: Fri, 9 Apr 2021 20:01:32 -0700 Subject: [PATCH] Set minSdkVersion to 21 --- app/build.gradle.kts | 15 ++--- .../java/com/topjohnwu/magisk/core/App.kt | 8 +-- .../java/com/topjohnwu/magisk/core/Const.kt | 1 - .../topjohnwu/magisk/core/utils/Locales.kt | 8 +-- .../magisk/data/repository/NetworkService.kt | 4 -- .../topjohnwu/magisk/di/NetworkingModule.kt | 13 +--- .../java/com/topjohnwu/magisk/ktx/XAndroid.kt | 10 --- .../java/com/topjohnwu/magisk/ktx/XJava.kt | 60 ------------------ .../java/com/topjohnwu/magisk/ktx/XString.kt | 6 +- .../com/topjohnwu/magisk/ui/MainActivity.kt | 6 +- .../magisk/ui/settings/SettingsViewModel.kt | 4 -- .../magisk/ui/surequest/SuRequestActivity.kt | 6 +- .../main/res/drawable-hdpi/ic_launcher.png | Bin 3892 -> 0 bytes .../res/drawable-hdpi/ic_magisk_outline.png | Bin 893 -> 0 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 2381 -> 0 bytes .../res/drawable-mdpi/ic_magisk_outline.png | Bin 522 -> 0 bytes .../ic_splash_activity.xml | 0 .../ic_launcher.xml | 0 .../main/res/drawable-xhdpi/ic_launcher.png | Bin 5298 -> 0 bytes .../res/drawable-xhdpi/ic_magisk_outline.png | Bin 1315 -> 0 bytes .../main/res/drawable-xxhdpi/ic_launcher.png | Bin 8340 -> 0 bytes .../res/drawable-xxhdpi/ic_magisk_outline.png | Bin 2188 -> 0 bytes .../main/res/drawable-xxxhdpi/ic_launcher.png | Bin 11299 -> 0 bytes .../drawable-xxxhdpi/ic_magisk_outline.png | Bin 3121 -> 0 bytes .../ic_magisk_outline.xml | 0 app/src/main/res/values-v19/themes.xml | 18 ------ .../main/res/values-v21/styles_md2_impl.xml | 18 ------ app/src/main/res/values-v21/themes.xml | 38 ----------- .../drawable.xml | 0 app/src/main/res/values/styles_md2_impl.xml | 2 + app/src/main/res/values/themes.xml | 34 +++++++--- build.gradle.kts | 4 +- stub/build.gradle.kts | 1 - 33 files changed, 44 insertions(+), 212 deletions(-) delete mode 100644 app/src/main/res/drawable-hdpi/ic_launcher.png delete mode 100644 app/src/main/res/drawable-hdpi/ic_magisk_outline.png delete mode 100644 app/src/main/res/drawable-mdpi/ic_launcher.png delete mode 100644 app/src/main/res/drawable-mdpi/ic_magisk_outline.png rename app/src/main/res/{drawable-anydpi-v23 => drawable-v23}/ic_splash_activity.xml (100%) rename app/src/main/res/{drawable-anydpi-v26 => drawable-v26}/ic_launcher.xml (100%) delete mode 100644 app/src/main/res/drawable-xhdpi/ic_launcher.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_magisk_outline.png delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_launcher.png delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_magisk_outline.png delete mode 100644 app/src/main/res/drawable-xxxhdpi/ic_launcher.png delete mode 100644 app/src/main/res/drawable-xxxhdpi/ic_magisk_outline.png rename app/src/main/res/{drawable-anydpi-v21 => drawable}/ic_magisk_outline.xml (100%) delete mode 100644 app/src/main/res/values-v19/themes.xml delete mode 100644 app/src/main/res/values-v21/styles_md2_impl.xml delete mode 100644 app/src/main/res/values-v21/themes.xml rename app/src/main/res/{values-anydpi-v21 => values}/drawable.xml (100%) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 802e89726..c066d6ccf 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -221,12 +221,8 @@ dependencies { implementation("com.squareup.retrofit2:converter-moshi:${vRetrofit}") implementation("com.squareup.retrofit2:converter-scalars:${vRetrofit}") - val vOkHttp = "3.12.12" - implementation("com.squareup.okhttp3:okhttp") { - version { - strictly(vOkHttp) - } - } + val vOkHttp = "4.9.1" + implementation("com.squareup.okhttp3:okhttp:${vOkHttp}") implementation("com.squareup.okhttp3:logging-interceptor:${vOkHttp}") implementation("com.squareup.okhttp3:okhttp-dnsoverhttps:${vOkHttp}") @@ -234,7 +230,7 @@ dependencies { implementation("com.squareup.moshi:moshi:${vMoshi}") kapt("com.squareup.moshi:moshi-kotlin-codegen:${vMoshi}") - val vRoom = "2.3.0-beta03" + val vRoom = "2.3.0-rc01" implementation("androidx.room:room-runtime:${vRoom}") implementation("androidx.room:room-ktx:${vRoom}") kapt("androidx.room:room-compiler:${vRoom}") @@ -248,11 +244,10 @@ dependencies { implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") implementation("androidx.browser:browser:1.3.0") implementation("androidx.preference:preference:1.1.1") - implementation("androidx.recyclerview:recyclerview:1.1.0") - implementation("androidx.fragment:fragment-ktx:1.3.1") + implementation("androidx.recyclerview:recyclerview:1.2.0") + implementation("androidx.fragment:fragment-ktx:1.3.2") implementation("androidx.work:work-runtime-ktx:2.5.0") implementation("androidx.transition:transition:1.4.0") - implementation("androidx.multidex:multidex:2.0.1") implementation("androidx.core:core-ktx:1.3.2") implementation("com.google.android.material:material:1.3.0") } diff --git a/app/src/main/java/com/topjohnwu/magisk/core/App.kt b/app/src/main/java/com/topjohnwu/magisk/core/App.kt index 1348caa4e..ee8f3c3ac 100644 --- a/app/src/main/java/com/topjohnwu/magisk/core/App.kt +++ b/app/src/main/java/com/topjohnwu/magisk/core/App.kt @@ -1,14 +1,13 @@ package com.topjohnwu.magisk.core +import android.annotation.SuppressLint import android.app.Activity import android.app.Application import android.content.Context import android.content.res.Configuration import android.os.Bundle import androidx.appcompat.app.AppCompatDelegate -import androidx.multidex.MultiDex import androidx.work.WorkManager -import com.topjohnwu.magisk.BuildConfig import com.topjohnwu.magisk.DynAPK import com.topjohnwu.magisk.core.utils.AppShellInit import com.topjohnwu.magisk.core.utils.BusyBoxInit @@ -46,10 +45,6 @@ open class App() : Application() { } override fun attachBaseContext(base: Context) { - // Basic setup - if (BuildConfig.DEBUG) - MultiDex.install(base) - // Some context magic val app: Application val impl: Context @@ -91,6 +86,7 @@ open class App() : Application() { } } +@SuppressLint("StaticFieldLeak") object ForegroundTracker : Application.ActivityLifecycleCallbacks { @Volatile diff --git a/app/src/main/java/com/topjohnwu/magisk/core/Const.kt b/app/src/main/java/com/topjohnwu/magisk/core/Const.kt index 447c11852..d8557e849 100644 --- a/app/src/main/java/com/topjohnwu/magisk/core/Const.kt +++ b/app/src/main/java/com/topjohnwu/magisk/core/Const.kt @@ -63,7 +63,6 @@ object Const { const val GITHUB_RAW_URL = "https://raw.githubusercontent.com/" const val GITHUB_API_URL = "https://api.github.com/" const val GITHUB_PAGE_URL = "https://topjohnwu.github.io/magisk-files/" - const val GITHUB_OLD_PAGE_URL = "https://topjohnwu.github.io/magisk_files/" const val JS_DELIVR_URL = "https://cdn.jsdelivr.net/gh/" const val OFFICIAL_REPO = "https://magisk-modules-repo.github.io/submission/modules.json" } diff --git a/app/src/main/java/com/topjohnwu/magisk/core/utils/Locales.kt b/app/src/main/java/com/topjohnwu/magisk/core/utils/Locales.kt index 97b72bbe1..69f68fe52 100644 --- a/app/src/main/java/com/topjohnwu/magisk/core/utils/Locales.kt +++ b/app/src/main/java/com/topjohnwu/magisk/core/utils/Locales.kt @@ -8,8 +8,6 @@ import android.content.res.Resources import com.topjohnwu.magisk.R import com.topjohnwu.magisk.core.AssetHack import com.topjohnwu.magisk.core.Config -import com.topjohnwu.magisk.ktx.langTagToLocale -import com.topjohnwu.magisk.ktx.toLangTag import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.* @@ -40,7 +38,7 @@ withContext(Dispatchers.Default) { // Then add all supported locales addAll(Resources.getSystem().assets.locales) }.map { - it.langTagToLocale() + Locale.forLanguageTag(it) }.distinctBy { res.updateLocale(it) res.getString(compareId) @@ -59,7 +57,7 @@ withContext(Dispatchers.Default) { locales.forEach { locale -> names.add(locale.getDisplayName(locale)) - values.add(locale.toLangTag()) + values.add(locale.toLanguageTag()) } (names.toTypedArray() to values.toTypedArray()).also { cachedLocales = it } @@ -79,7 +77,7 @@ fun refreshLocale() { val localeConfig = Config.locale currentLocale = when { localeConfig.isEmpty() -> defaultLocale - else -> localeConfig.langTagToLocale() + else -> Locale.forLanguageTag(localeConfig) } Locale.setDefault(currentLocale) AssetHack.resource.updateConfig() diff --git a/app/src/main/java/com/topjohnwu/magisk/data/repository/NetworkService.kt b/app/src/main/java/com/topjohnwu/magisk/data/repository/NetworkService.kt index 825a0a039..391e11e70 100644 --- a/app/src/main/java/com/topjohnwu/magisk/data/repository/NetworkService.kt +++ b/app/src/main/java/com/topjohnwu/magisk/data/repository/NetworkService.kt @@ -21,10 +21,6 @@ class NetworkService( private val api: GithubApiServices ) { suspend fun fetchUpdate() = safe { - // Pre SDK 21 no longer receives any major updates - if (Build.VERSION.SDK_INT < 21) - return fetchStableUpdate() - var info = when (Config.updateChannel) { DEFAULT_CHANNEL, STABLE_CHANNEL -> fetchStableUpdate() BETA_CHANNEL -> fetchBetaUpdate() diff --git a/app/src/main/java/com/topjohnwu/magisk/di/NetworkingModule.kt b/app/src/main/java/com/topjohnwu/magisk/di/NetworkingModule.kt index f3600e23c..a0b85104a 100644 --- a/app/src/main/java/com/topjohnwu/magisk/di/NetworkingModule.kt +++ b/app/src/main/java/com/topjohnwu/magisk/di/NetworkingModule.kt @@ -1,7 +1,6 @@ package com.topjohnwu.magisk.di import android.content.Context -import android.os.Build import com.squareup.moshi.Moshi import com.topjohnwu.magisk.BuildConfig import com.topjohnwu.magisk.core.Config @@ -13,12 +12,11 @@ import com.topjohnwu.magisk.data.network.JSDelivrServices import com.topjohnwu.magisk.data.network.RawServices import com.topjohnwu.magisk.ktx.precomputedText import com.topjohnwu.magisk.net.Networking -import com.topjohnwu.magisk.net.NoSSLv3SocketFactory import com.topjohnwu.magisk.utils.MarkwonImagePlugin import io.noties.markwon.Markwon import io.noties.markwon.html.HtmlPlugin import okhttp3.Dns -import okhttp3.HttpUrl +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.dnsoverhttps.DnsOverHttps import okhttp3.logging.HttpLoggingInterceptor @@ -34,10 +32,7 @@ val networkingModule = module { single { createRetrofit(get()) } single { createApiService(get(), Const.Url.GITHUB_RAW_URL) } single { createApiService(get(), Const.Url.GITHUB_API_URL) } - single { createApiService(get(), - if (Build.VERSION.SDK_INT < 21) Const.Url.GITHUB_OLD_PAGE_URL - else Const.Url.GITHUB_PAGE_URL - ) } + single { createApiService(get(), Const.Url.GITHUB_PAGE_URL) } single { createApiService(get(), Const.Url.JS_DELIVR_URL) } single { createMarkwon(get(), get()) } } @@ -46,7 +41,7 @@ private class DnsResolver(client: OkHttpClient) : Dns { private val doh by lazy { DnsOverHttps.Builder().client(client) - .url(HttpUrl.get("https://cloudflare-dns.com/dns-query")) + .url("https://cloudflare-dns.com/dns-query".toHttpUrl()) .bootstrapDnsHosts(listOf( InetAddress.getByName("162.159.36.1"), InetAddress.getByName("162.159.46.1"), @@ -84,8 +79,6 @@ fun createOkHttpClient(context: Context): OkHttpClient { if (!Networking.init(context)) { Info.hasGMS = false - if (Build.VERSION.SDK_INT < 21) - builder.sslSocketFactory(NoSSLv3SocketFactory()) } builder.dns(DnsResolver(builder.build())) diff --git a/app/src/main/java/com/topjohnwu/magisk/ktx/XAndroid.kt b/app/src/main/java/com/topjohnwu/magisk/ktx/XAndroid.kt index 040d07a53..e136bd41b 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ktx/XAndroid.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ktx/XAndroid.kt @@ -339,16 +339,6 @@ var TextView.precomputedText: CharSequence set(value) { val callback = tag as? Runnable - // Don't even bother pre 21 - if (SDK_INT < 21) { - post { - text = value - isGone = false - callback?.run() - } - return - } - coroutineScope.launch(Dispatchers.IO) { if (SDK_INT >= 29) { // Internally PrecomputedTextCompat will use platform API on API 29+ diff --git a/app/src/main/java/com/topjohnwu/magisk/ktx/XJava.kt b/app/src/main/java/com/topjohnwu/magisk/ktx/XJava.kt index 324ab5f61..07705f78e 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ktx/XJava.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ktx/XJava.kt @@ -1,6 +1,5 @@ package com.topjohnwu.magisk.ktx -import android.os.Build import androidx.collection.SparseArrayCompat import timber.log.Timber import java.io.File @@ -47,64 +46,5 @@ fun MutableList.synchronized() = Collections.synchronizedList(this) fun MutableSet.synchronized() = Collections.synchronizedSet(this) fun MutableMap.synchronized() = Collections.synchronizedMap(this) -fun String.langTagToLocale(): Locale { - if (Build.VERSION.SDK_INT >= 21) { - return Locale.forLanguageTag(this) - } else { - val tok = split("[-_]".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() - if (tok.isEmpty()) { - return Locale("") - } - val language = when (tok[0]) { - "und" -> "" // Undefined - "fil" -> "tl" // Filipino - else -> tok[0] - } - if (language.length != 2 && language.length != 3) - return Locale("") - if (tok.size == 1) - return Locale(language) - val country = tok[1] - - return if (country.length != 2 && country.length != 3) Locale(language) - else Locale(language, country) - } -} - -fun Locale.toLangTag(): String { - if (Build.VERSION.SDK_INT >= 21) { - return toLanguageTag() - } else { - var language = language - var country = country - var variant = variant - when { - language.isEmpty() || !language.matches("\\p{Alpha}{2,8}".toRegex()) -> - language = "und" // Follow the Locale#toLanguageTag() implementation - language == "iw" -> language = "he" // correct deprecated "Hebrew" - language == "in" -> language = "id" // correct deprecated "Indonesian" - language == "ji" -> language = "yi" // correct deprecated "Yiddish" - } - // ensure valid country code, if not well formed, it's omitted - - // variant subtags that begin with a letter must be at least 5 characters long - // ensure valid country code, if not well formed, it's omitted - if (!country.matches("\\p{Alpha}{2}|\\p{Digit}{3}".toRegex())) { - country = "" - } - - // variant subtags that begin with a letter must be at least 5 characters long - if (!variant.matches("\\p{Alnum}{5,8}|\\p{Digit}\\p{Alnum}{3}".toRegex())) { - variant = "" - } - val tag = StringBuilder(language) - if (country.isNotEmpty()) - tag.append('-').append(country) - if (variant.isNotEmpty()) - tag.append('-').append(variant) - return tag.toString() - } -} - fun SimpleDateFormat.parseOrNull(date: String) = runCatching { parse(date) }.onFailure { Timber.e(it) }.getOrNull() diff --git a/app/src/main/java/com/topjohnwu/magisk/ktx/XString.kt b/app/src/main/java/com/topjohnwu/magisk/ktx/XString.kt index c48027411..59529d334 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ktx/XString.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ktx/XString.kt @@ -1,7 +1,6 @@ package com.topjohnwu.magisk.ktx import android.content.res.Resources -import android.os.Build val specialChars = arrayOf('!', '@', '#', '$', '%', '&', '?') val fullSpecialChars = arrayOf('!', '@', '#', '$', '%', '&', '?') @@ -13,10 +12,7 @@ fun String.isCJK(): Boolean { return false } -fun isCJK(codepoint: Int): Boolean { - return if (Build.VERSION.SDK_INT < 19) false /* Pre 5.0 don't need to be pretty.. */ - else Character.isIdeographic(codepoint) -} +fun isCJK(codepoint: Int) = Character.isIdeographic(codepoint) fun String.replaceRandomWithSpecial(passes: Int): String { var string = this diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/MainActivity.kt b/app/src/main/java/com/topjohnwu/magisk/ui/MainActivity.kt index c8a5219c3..83b3394c1 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/MainActivity.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/MainActivity.kt @@ -2,7 +2,6 @@ package com.topjohnwu.magisk.ui import android.content.Intent import android.content.pm.ApplicationInfo -import android.os.Build import android.os.Bundle import android.view.MenuItem import android.view.View @@ -123,10 +122,7 @@ open class MainActivity : BaseUIActivity( val topView = binding.mainToolbarWrapper val bottomView = binding.mainBottomBar - if ( - Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && - !binding.mainBottomBar.isAttachedToWindow - ) { + if (!binding.mainBottomBar.isAttachedToWindow) { binding.mainBottomBar.viewTreeObserver.addOnWindowAttachListener(object : ViewTreeObserver.OnWindowAttachListener { diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/settings/SettingsViewModel.kt b/app/src/main/java/com/topjohnwu/magisk/ui/settings/SettingsViewModel.kt index 240ad4343..948bb9910 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/settings/SettingsViewModel.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/settings/SettingsViewModel.kt @@ -74,10 +74,6 @@ class SettingsViewModel( Magisk, MagiskHide, SystemlessHosts )) - if (Build.VERSION.SDK_INT < 19) { - // MagiskHide is only available on 4.4+ - list.remove(MagiskHide) - } } // Superuser diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/surequest/SuRequestActivity.kt b/app/src/main/java/com/topjohnwu/magisk/ui/surequest/SuRequestActivity.kt index ed0a5d7f8..99782ec0f 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/surequest/SuRequestActivity.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/surequest/SuRequestActivity.kt @@ -3,7 +3,6 @@ package com.topjohnwu.magisk.ui.surequest import android.content.Intent import android.content.pm.ActivityInfo import android.content.res.Resources -import android.os.Build import android.os.Bundle import android.view.Window import android.view.WindowManager @@ -62,9 +61,6 @@ open class SuRequestActivity : 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 M07*qoM6N<$f}qXsT>t<8 diff --git a/app/src/main/res/drawable-anydpi-v23/ic_splash_activity.xml b/app/src/main/res/drawable-v23/ic_splash_activity.xml similarity index 100% rename from app/src/main/res/drawable-anydpi-v23/ic_splash_activity.xml rename to app/src/main/res/drawable-v23/ic_splash_activity.xml diff --git a/app/src/main/res/drawable-anydpi-v26/ic_launcher.xml b/app/src/main/res/drawable-v26/ic_launcher.xml similarity index 100% rename from app/src/main/res/drawable-anydpi-v26/ic_launcher.xml rename to app/src/main/res/drawable-v26/ic_launcher.xml diff --git a/app/src/main/res/drawable-xhdpi/ic_launcher.png b/app/src/main/res/drawable-xhdpi/ic_launcher.png deleted file mode 100644 index 1a121ddedb65df84714007a8b4dbb41b43517e27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5298 zcmV;j6iw@iP)76vqysIeP+6l3owq9!j!efIh+vBn;a9gSUM#jc6HvPcz>va`E_h}dF_nrDp3 zGnPc7#@J931;GO6opXmBc6VkLc4ikb+53IxW0|>g=idL^d)h7I;^Iusd-F~3UQab-G zd?&s8ADeW(jS&q04DkW4h4^>-v%36q#LNy)Y;v^=V3|2N^5!c9X{0Zb!3MSvS~%S6wA#4UtWLmg56EBfY8hg-?=v^gFN zW6z&}%5h;zMN%AVV=i{6Y?k*PhdGG3dlS-uPbsfnL7jw1cCV85Yq+LwCIa;`f?80! zO(>(7b~D^IG!fRhrl+xYyh=}p$lKS2_t>l#a-9Rm!1q0GOG66i zcftB!euA`gBlMXm;`TKmAIb7$LtPQLvvi*cc~Q_nAA2!N9h?}1#Ro?0e0M94o!H%bKX9|jM|iwe51cB`45 zFwz*^MB(|G2O_{)io16U^6PflJ`!HLIARLdc9}o_;(sBlH2V8vLjJX^9Fg^8e17i5@3MT~IMfY_bi!*@%$#PEEfsb{v#@r^TBvt03ZA`sX%!HX z(WcJ^>U)WRo}n8pDSp=K2AMtkP2wG^@A~t_bEvvM9O?wGRS-`?3|^1i_Z@0$WoNJR zhJ6bMvftF>tfhOY&%o8>*^#=*BA_?v`a`(ByXbm%ZkCy@NlklY^<4wb9%gyZ&g~7O zH_x=434}$?d$_haS&ai%!HdalAZ=1>cz^fT4BXhex2yv5-u_H;ksL8gpm*x}LX^In z=sG!W#^=0_=&ZgYEi16jUMpJ77% z;xb05jdV6=^nuoQhRt5>_AiCT8GBjjJ)7CR{$~%#0yOQ%(-T zkTQYG^XGjkxMYUL&T!c*7JFZ_6^7t(uDXL$%&roGiRELJL`FOs~ z6-&k*Z`nY)Rw0b{Qp>~!!~N705lG>`XF6mR(JQtDda`aTEW%M>dMzEP5c&qj=Z+=b z6_xv2@>AxEFh>t9pH~*WpXkPnE(*gHh>-(lvJ_3GT$|BV)Ig%ZWg~<;l13kOKn?Yp_Xluzn7WM++@ zMpRU()oaE{HZmQltzV|RCX2*0-A+k1E9bDjof+7l=_av|gz2>iw2F-R^Kcq?`tpTY znHx;R+MsQ7CF?~*CbNpjX{?>W-_b~E@6R9ThYEKS-2bA3WJ7P_P%oLGkc**3a^u-k zGr-*A!-cXe#m#V?H%!xwF}pTNH%`dk^e|^u*8iS7hJt#3cJIB=_3&tFd&xSH_$d;( zmDOGO)FxtP$KLO+v^P|o6U2vtv8Shcx0P&g!h-&gKZ*|>eDuv;7Oga<$rnzUg`7>n z9>Pt5DZ0EVk1JA&f9_{0%^H_dwOT)kWs#}ivxwuqj<@ST_UEmfJwznQmIt|;MpY% zifrYhjpf5O!X7m7(j@@cymB<}xS{Me+_@ouN3kQpWHs@8`*YJ^0*V~t|66tagnX@z z?G>K)zi~xS!-5&?-&B%$G;vi0JmJbC_Fa`6|WI+nzkIL8!s6H+Jh!6 zB?@~N$OtvBvM>hjPU{F8(JQYN@|E!1yFLL7e9tc7;1;1#yYTCj`n8%W*720${J{ME3hl^@z2`--^P>Si5>GihxdRWK7-g1-nO6hZHVIdi4@Y#PH&v zvi2(ha0*3J+@F5GFw}-3+AX|--5V6GuN@Cw0V}{Q zI&;##$d+ADXIN%EYkVF8`L!A-%I#9O&Pdf-R9eicq6ZA!8wDTeL!r#l0HI+b)4~J-M086s6xM^lgOu z>wftOeocA;mEuC76p9tnFC_Lz2f3N7lqeA32jvz9Lj6IZqWYEi${)HK_CPlzm7`#c z3I$B7l$F1Hc8nf2?Tdvxdo<9bdzh$^MrzP6lqu_ytC1lg{IGZ5y^f89=Gaqf9EgB3 zsEmy!q@S)21D#eujK~O6FV_uW_e$bOp}Z9leDX1<)q0;Oi)Ƙ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 Ef-%T1WB>pF diff --git a/app/src/main/res/drawable-xhdpi/ic_magisk_outline.png b/app/src/main/res/drawable-xhdpi/ic_magisk_outline.png deleted file mode 100644 index 43fddb19c76a4b4ef92a5411f2082397ae79b2fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1315 zcmV+;1>E|HP)g~Er9H(5B(J%7Y%R5_l_F<mC8>{|Cbu+t8~04g~#1<6*AAp zj6c7tl)u7WCTt26*e~>C6%N4LCTwy4bRT5)1!Lb7CJEOjt^8o&M`5jS0!n)-L+*Q? zw+qdYf%KgejQL3zCak7CBuN97^3p@XaN(*znQ6#<$MYM)E425~H!T=5%M52uqvc5& z&>VUh{XXw_H^6(J=O$r2?H2m3ck(aU;T6_6-n&T}u*kirL%2{lPS^wQe&n9u*_3~d z_A2`B;rR#KEepD56 z?m!XyCkLXeDgP8o8t(;R98r7%W3PkX&fK>Ovy(7jEx~3_OcZS+uc=_Gl#wp1B2TKq z?G_1BkZp^ZXRmOM9sDE=Xuyc-bm#P^a3%7^cq2>Nis8*frZbvF;@6mj0W}=9DP*9X zQ9bgOGAv{J^n_RUKjT)A{MjL|OTvJ=o&PqMdZX}#Q{Z=!H}gP!88gSu4()z;8B6Yd zbK`7|*}_P-J?~AzfJ@y=e-Y*hN0AeivSnQt*fuRnDjIKz*}L|_2ZRD-3W>5+v-t9$*nDcRJ#e?9o%}5^^UZYq12bX3Sm9jSJzRQh zw8_a0kBJejLGBbefe~)pM%VYM^H>(?CuC|BRtl%k?oYI}<)7#-I<0|{=0eXB#^WOW zE$s8?;zAVfAhHi|F{C!rH!;g?Ci_Fp?+D=&r(8?itqPCR;^cNlE8*pd#P8W*&-7Us z#ZBvV^V7m&mb~35wTpCNY_vLVJ6uer`k9k&XG<<3&TM2Gj!Vi56;aoT^B$Y&UrkQb zOypg`<-P)$@=m;2noPI2D=HJG3bzRlQE8hh97gtO6^X-1z5lr;TBVN4#AX8EbkYn< z?Cugy@9M(VMRqpa8EJ|t5%6|619re`aqczBTrI+1-W`>>!CWc73@UW%=>N*`zJ|9U zX4`BPdUscOacWF@QA6Laj`s&Kq&|=}*ILru1>OaLQnm08#2Da9igv53$c74a_|L9~ z@2hsZW9mwCvgzAEAyqh|kKyff%DxRRN;MW{;|GrZ`1gajRG%|FMmlb^G@HNDm=P~? zV|&;cP)&+(doFxxvNO@!>ZHzql2opdMb;=k%GHm41>AENr*f4z$Y++|2wxUc3MR002ovPDHLkV1iCvgR=kt diff --git a/app/src/main/res/drawable-xxhdpi/ic_launcher.png b/app/src/main/res/drawable-xxhdpi/ic_launcher.png deleted file mode 100644 index 1a1635633fa636fa82316aa79de9c7e0892bff84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8340 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 LNkvXXu0mjfjjHbP diff --git a/app/src/main/res/drawable-anydpi-v21/ic_magisk_outline.xml b/app/src/main/res/drawable/ic_magisk_outline.xml similarity index 100% rename from app/src/main/res/drawable-anydpi-v21/ic_magisk_outline.xml rename to app/src/main/res/drawable/ic_magisk_outline.xml diff --git a/app/src/main/res/values-v19/themes.xml b/app/src/main/res/values-v19/themes.xml deleted file mode 100644 index 6b4e43bf4..000000000 --- a/app/src/main/res/values-v19/themes.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values-v21/themes.xml b/app/src/main/res/values-v21/themes.xml deleted file mode 100644 index 54ccddd36..000000000 --- a/app/src/main/res/values-v21/themes.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 5bc16dee5..29d57a7df 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,41 +1,55 @@ - - - - - -