Add root install back

This commit is contained in:
vvb2060 2022-02-17 17:40:30 +08:00 committed by John Wu
parent 563a587882
commit 237794b05c

View File

@ -14,6 +14,7 @@ import com.topjohnwu.magisk.core.Provider
import com.topjohnwu.magisk.core.utils.AXML import com.topjohnwu.magisk.core.utils.AXML
import com.topjohnwu.magisk.core.utils.Keygen import com.topjohnwu.magisk.core.utils.Keygen
import com.topjohnwu.magisk.di.ServiceLocator import com.topjohnwu.magisk.di.ServiceLocator
import com.topjohnwu.magisk.ktx.await
import com.topjohnwu.magisk.ktx.writeTo import com.topjohnwu.magisk.ktx.writeTo
import com.topjohnwu.magisk.signing.JarMap import com.topjohnwu.magisk.signing.JarMap
import com.topjohnwu.magisk.signing.SignApk import com.topjohnwu.magisk.signing.SignApk
@ -25,6 +26,7 @@ import kotlinx.coroutines.Runnable
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import timber.log.Timber import timber.log.Timber
import java.io.File import java.io.File
import java.io.FileOutputStream
import java.io.IOException import java.io.IOException
import java.io.OutputStream import java.io.OutputStream
import java.security.SecureRandom import java.security.SecureRandom
@ -115,18 +117,23 @@ object HideAPK {
} }
// Generate a new random package name and signature // Generate a new random package name and signature
val repack = File(activity.cacheDir, "patched.apk")
val pkg = genPackageName() val pkg = genPackageName()
Config.keyStoreRaw = "" Config.keyStoreRaw = ""
if (!patch(activity, stub, FileOutputStream(repack), pkg, label))
return false
// Install and auto launch app // Install and auto launch app
val session = APKInstall.startSession(activity, pkg, onFailure) { val session = APKInstall.startSession(activity, pkg, onFailure) {
launchApp(activity, pkg) launchApp(activity, pkg)
} }
val cmd = "adb_pm_install $repack ${activity.applicationInfo.uid}"
if (Shell.su(cmd).exec().isSuccess) return true
try { try {
val success = session.openStream(activity).use { session.install(activity, repack)
patch(activity, stub, it, pkg, label)
}
if (!success) return false
} catch (e: IOException) { } catch (e: IOException) {
Timber.e(e) Timber.e(e)
return false return false
@ -170,6 +177,8 @@ object HideAPK {
launchApp(activity, APPLICATION_ID) launchApp(activity, APPLICATION_ID)
dialog.dismiss() dialog.dismiss()
} }
val cmd = "adb_pm_install $apk ${activity.applicationInfo.uid}"
if (Shell.su(cmd).await().isSuccess) return
val success = withContext(Dispatchers.IO) { val success = withContext(Dispatchers.IO) {
try { try {
session.install(activity, apk) session.install(activity, apk)