diff --git a/app/src/main/java/com/topjohnwu/magisk/App.kt b/app/src/main/java/com/topjohnwu/magisk/App.kt index 4bc13958b..0569ac57a 100644 --- a/app/src/main/java/com/topjohnwu/magisk/App.kt +++ b/app/src/main/java/com/topjohnwu/magisk/App.kt @@ -15,7 +15,6 @@ import com.topjohnwu.magisk.di.ActivityTracker import com.topjohnwu.magisk.di.koinModules import com.topjohnwu.magisk.extensions.get import com.topjohnwu.magisk.extensions.unwrap -import com.topjohnwu.magisk.utils.DynAPK import com.topjohnwu.magisk.utils.RootInit import com.topjohnwu.superuser.Shell import org.koin.android.ext.koin.androidContext @@ -25,7 +24,7 @@ import timber.log.Timber open class App() : Application() { constructor(o: Any) : this() { - ClassMap.data = DynAPK.load(o) + Info.stub = DynAPK.load(o) } init { diff --git a/app/src/main/java/com/topjohnwu/magisk/Hacks.kt b/app/src/main/java/com/topjohnwu/magisk/Hacks.kt index 8b638e32c..52926eb77 100644 --- a/app/src/main/java/com/topjohnwu/magisk/Hacks.kt +++ b/app/src/main/java/com/topjohnwu/magisk/Hacks.kt @@ -23,13 +23,10 @@ import com.topjohnwu.magisk.ui.MainActivity import com.topjohnwu.magisk.ui.SplashActivity import com.topjohnwu.magisk.ui.flash.FlashActivity import com.topjohnwu.magisk.ui.surequest.SuRequestActivity -import com.topjohnwu.magisk.utils.DynAPK import com.topjohnwu.magisk.utils.currentLocale import com.topjohnwu.magisk.utils.defaultLocale import java.util.* -val isRunningAsStub get() = ClassMap.data != null - private val addAssetPath by lazy { AssetManager::class.java.getMethod("addAssetPath", String::class.java) } @@ -69,19 +66,19 @@ private fun Resources.patch(config: Configuration = Configuration(configuration) fun Class<*>.cmp(pkg: String = BuildConfig.APPLICATION_ID): ComponentName { val name = ClassMap[this].name - return ComponentName(pkg, ClassMap.data?.componentMap?.get(name) ?: name) + return ComponentName(pkg, Info.stub?.componentMap?.get(name) ?: name) } fun Context.intent(c: Class<*>): Intent { val cls = ClassMap[c] - return ClassMap.data?.let { + return Info.stub?.let { val className = it.componentMap.getOrElse(cls.name) { cls.name } Intent().setComponent(ComponentName(this, className)) } ?: Intent(this, cls) } fun resolveRes(idx: Int): Int { - return ClassMap.data?.resourceMap?.get(idx) ?: when(idx) { + return Info.stub?.resourceMap?.get(idx) ?: when(idx) { DynAPK.NOTIFICATION -> R.drawable.ic_magisk_outline DynAPK.DOWNLOAD -> R.drawable.sc_cloud_download DynAPK.SUPERUSER -> R.drawable.sc_superuser @@ -172,7 +169,7 @@ private class JobSchedulerWrapper(private val base: JobScheduler) : JobScheduler // We need to patch the component of JobInfo to access WorkManager SystemJobService val name = service.className - val component = ComponentName(service.packageName, ClassMap.data?.componentMap?.get(name) + val component = ComponentName(service.packageName, Info.stub?.componentMap?.get(name) ?: name) // Clone the JobInfo except component @@ -226,7 +223,5 @@ object ClassMap { SuRequestActivity::class.java to a.m::class.java ) - internal var data: DynAPK.Data? = null - operator fun get(c: Class<*>) = map.getOrElse(c) { throw IllegalArgumentException() } } diff --git a/app/src/main/java/com/topjohnwu/magisk/Info.kt b/app/src/main/java/com/topjohnwu/magisk/Info.kt index 33b8715d4..2eec3295a 100644 --- a/app/src/main/java/com/topjohnwu/magisk/Info.kt +++ b/app/src/main/java/com/topjohnwu/magisk/Info.kt @@ -9,12 +9,15 @@ import com.topjohnwu.magisk.utils.KObservableField import com.topjohnwu.superuser.Shell import com.topjohnwu.superuser.ShellUtils +val isRunningAsStub get() = Info.stub != null + object Info { val envRef = CachedValue { loadState() } - val env by envRef // Local - var remote = UpdateInfo() // Remote + val env by envRef // Local + var remote = UpdateInfo() // Remote + var stub: DynAPK.Data? = null // Stub var keepVerity = false var keepEnc = false diff --git a/app/src/main/java/com/topjohnwu/magisk/base/viewmodel/BaseViewModel.kt b/app/src/main/java/com/topjohnwu/magisk/base/viewmodel/BaseViewModel.kt index ef9082aaa..987f1bf6d 100644 --- a/app/src/main/java/com/topjohnwu/magisk/base/viewmodel/BaseViewModel.kt +++ b/app/src/main/java/com/topjohnwu/magisk/base/viewmodel/BaseViewModel.kt @@ -1,7 +1,6 @@ package com.topjohnwu.magisk.base.viewmodel import android.app.Activity -import com.topjohnwu.magisk.Info.isConnected as gIsConnected import com.topjohnwu.magisk.extensions.doOnSubscribeUi import com.topjohnwu.magisk.model.events.BackPressEvent import com.topjohnwu.magisk.model.events.PermissionEvent @@ -9,6 +8,7 @@ import com.topjohnwu.magisk.model.events.ViewActionEvent import com.topjohnwu.magisk.utils.KObservableField import io.reactivex.Observable import io.reactivex.subjects.PublishSubject +import com.topjohnwu.magisk.Info.isConnected as gIsConnected abstract class BaseViewModel( diff --git a/app/src/main/java/com/topjohnwu/magisk/extensions/XAndroid.kt b/app/src/main/java/com/topjohnwu/magisk/extensions/XAndroid.kt index 29120d6f8..5bd64ce20 100644 --- a/app/src/main/java/com/topjohnwu/magisk/extensions/XAndroid.kt +++ b/app/src/main/java/com/topjohnwu/magisk/extensions/XAndroid.kt @@ -21,8 +21,8 @@ import androidx.annotation.DrawableRes import androidx.core.content.ContextCompat import androidx.core.net.toUri import com.topjohnwu.magisk.Const +import com.topjohnwu.magisk.FileProvider import com.topjohnwu.magisk.utils.DynamicClassLoader -import com.topjohnwu.magisk.utils.FileProvider import com.topjohnwu.magisk.utils.Utils import com.topjohnwu.magisk.utils.currentLocale import com.topjohnwu.superuser.Shell diff --git a/app/src/main/java/com/topjohnwu/magisk/model/download/ManagerUpgrade.kt b/app/src/main/java/com/topjohnwu/magisk/model/download/ManagerUpgrade.kt index 3f5d98976..9e7079bb7 100644 --- a/app/src/main/java/com/topjohnwu/magisk/model/download/ManagerUpgrade.kt +++ b/app/src/main/java/com/topjohnwu/magisk/model/download/ManagerUpgrade.kt @@ -5,7 +5,6 @@ import com.topjohnwu.magisk.extensions.writeTo import com.topjohnwu.magisk.model.entity.internal.Configuration.APK.Restore import com.topjohnwu.magisk.model.entity.internal.Configuration.APK.Upgrade import com.topjohnwu.magisk.model.entity.internal.DownloadSubject -import com.topjohnwu.magisk.utils.DynAPK import com.topjohnwu.magisk.utils.PatchAPK import com.topjohnwu.superuser.Shell import java.io.File @@ -31,7 +30,7 @@ private fun RemoteFileService.upgrade(apk: File, id: Int) { // Move to upgrade location apk.copyTo(DynAPK.update(this), overwrite = true) apk.delete() - if (ClassMap.data!!.version < Info.remote.stub.versionCode) { + if (Info.stub!!.version < Info.remote.stub.versionCode) { // We also want to upgrade stub service.fetchFile(Info.remote.stub.link).blockingGet().byteStream().use { it.writeTo(apk) diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt b/app/src/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt index 4c6f7e32b..ee86ab652 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt @@ -208,7 +208,7 @@ class HomeViewModel( } managerCurrentVersion.value = if (isRunningAsStub) MGR_VER_FMT - .format(BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE, ClassMap.data!!.version) + .format(BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE, Info.stub!!.version) else VERSION_FMT.format(BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE) } @@ -227,7 +227,7 @@ class HomeViewModel( in Int.MIN_VALUE until 0 -> MagiskState.NOT_INSTALLED //wrong update channel in (BuildConfig.VERSION_CODE + 1) until Int.MAX_VALUE -> MagiskState.OBSOLETE else -> { - if (isRunningAsStub && ClassMap.data!!.version < Info.remote.stub.versionCode) + if (isRunningAsStub && Info.stub!!.version < Info.remote.stub.versionCode) MagiskState.OBSOLETE else MagiskState.UP_TO_DATE diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/module/ModulesFragment.kt b/app/src/main/java/com/topjohnwu/magisk/ui/module/ModulesFragment.kt index c06d4b487..61892804b 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/module/ModulesFragment.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/module/ModulesFragment.kt @@ -8,7 +8,6 @@ import android.view.MenuInflater import android.view.MenuItem import android.view.View import androidx.recyclerview.widget.RecyclerView -import com.topjohnwu.magisk.ClassMap import com.topjohnwu.magisk.Const import com.topjohnwu.magisk.R import com.topjohnwu.magisk.base.BaseFragment diff --git a/app/src/main/java/com/topjohnwu/magisk/view/Notifications.kt b/app/src/main/java/com/topjohnwu/magisk/view/Notifications.kt index 20f113ae8..ef8d5e026 100644 --- a/app/src/main/java/com/topjohnwu/magisk/view/Notifications.kt +++ b/app/src/main/java/com/topjohnwu/magisk/view/Notifications.kt @@ -12,7 +12,6 @@ import com.topjohnwu.magisk.* import com.topjohnwu.magisk.extensions.get import com.topjohnwu.magisk.model.receiver.GeneralReceiver import com.topjohnwu.magisk.ui.SplashActivity -import com.topjohnwu.magisk.utils.DynAPK object Notifications { diff --git a/app/src/main/java/com/topjohnwu/magisk/view/Shortcuts.kt b/app/src/main/java/com/topjohnwu/magisk/view/Shortcuts.kt index 3a541c155..61af35fda 100644 --- a/app/src/main/java/com/topjohnwu/magisk/view/Shortcuts.kt +++ b/app/src/main/java/com/topjohnwu/magisk/view/Shortcuts.kt @@ -9,7 +9,6 @@ import android.os.Build import androidx.annotation.RequiresApi import com.topjohnwu.magisk.* import com.topjohnwu.magisk.ui.SplashActivity -import com.topjohnwu.magisk.utils.DynAPK import com.topjohnwu.magisk.utils.Utils import com.topjohnwu.superuser.Shell diff --git a/shared/src/main/java/a/p.java b/shared/src/main/java/a/p.java index 2f93235d7..5cfd5256c 100644 --- a/shared/src/main/java/a/p.java +++ b/shared/src/main/java/a/p.java @@ -1,6 +1,6 @@ package a; -import com.topjohnwu.magisk.utils.FileProvider; +import com.topjohnwu.magisk.FileProvider; public class p extends FileProvider { /* Stub */ diff --git a/shared/src/main/java/com/topjohnwu/magisk/utils/DynAPK.java b/shared/src/main/java/com/topjohnwu/magisk/DynAPK.java similarity index 98% rename from shared/src/main/java/com/topjohnwu/magisk/utils/DynAPK.java rename to shared/src/main/java/com/topjohnwu/magisk/DynAPK.java index 0128bed88..28be1d9e7 100644 --- a/shared/src/main/java/com/topjohnwu/magisk/utils/DynAPK.java +++ b/shared/src/main/java/com/topjohnwu/magisk/DynAPK.java @@ -1,4 +1,4 @@ -package com.topjohnwu.magisk.utils; +package com.topjohnwu.magisk; import android.content.Context; diff --git a/shared/src/main/java/com/topjohnwu/magisk/utils/FileProvider.java b/shared/src/main/java/com/topjohnwu/magisk/FileProvider.java similarity index 99% rename from shared/src/main/java/com/topjohnwu/magisk/utils/FileProvider.java rename to shared/src/main/java/com/topjohnwu/magisk/FileProvider.java index 5d478f1b6..9b7ea0a73 100644 --- a/shared/src/main/java/com/topjohnwu/magisk/utils/FileProvider.java +++ b/shared/src/main/java/com/topjohnwu/magisk/FileProvider.java @@ -1,4 +1,4 @@ -package com.topjohnwu.magisk.utils; +package com.topjohnwu.magisk; import android.content.ContentProvider; import android.content.ContentValues; diff --git a/shared/src/main/java/com/topjohnwu/magisk/utils/APKInstall.java b/shared/src/main/java/com/topjohnwu/magisk/utils/APKInstall.java index 66f7567aa..2270017ec 100644 --- a/shared/src/main/java/com/topjohnwu/magisk/utils/APKInstall.java +++ b/shared/src/main/java/com/topjohnwu/magisk/utils/APKInstall.java @@ -5,6 +5,8 @@ import android.content.Intent; import android.net.Uri; import android.os.Build; +import com.topjohnwu.magisk.FileProvider; + import java.io.File; public class APKInstall { diff --git a/stub/src/main/java/com/topjohnwu/magisk/DelegateApplication.java b/stub/src/main/java/com/topjohnwu/magisk/DelegateApplication.java index 0b390571e..817d4da40 100644 --- a/stub/src/main/java/com/topjohnwu/magisk/DelegateApplication.java +++ b/stub/src/main/java/com/topjohnwu/magisk/DelegateApplication.java @@ -9,7 +9,6 @@ import android.content.res.Configuration; import android.os.Build; import android.util.Log; -import com.topjohnwu.magisk.utils.DynAPK; import com.topjohnwu.magisk.utils.DynamicClassLoader; import java.io.File; diff --git a/stub/src/main/java/com/topjohnwu/magisk/Mapping.java b/stub/src/main/java/com/topjohnwu/magisk/Mapping.java index 0b15cfe0a..b069c145d 100644 --- a/stub/src/main/java/com/topjohnwu/magisk/Mapping.java +++ b/stub/src/main/java/com/topjohnwu/magisk/Mapping.java @@ -3,7 +3,7 @@ package com.topjohnwu.magisk; import java.util.HashMap; import java.util.Map; -import static com.topjohnwu.magisk.utils.DynAPK.*; +import static com.topjohnwu.magisk.DynAPK.*; class Mapping { private static Map map = new HashMap<>();