Set installer package to Play Store for root variant
In some Android 11 installation, Play Services refuse to work if the calling package does not come from a legit source (e.g. Play Store). Be sloppy about version detection and whether the operation succeeded as this appears to happen only in Android 11.
This commit is contained in:
parent
b31dbda624
commit
b6fc2cadbc
|
@ -21,6 +21,7 @@
|
||||||
<package android:name="com.vanced.android.apps.youtube.music" />
|
<package android:name="com.vanced.android.apps.youtube.music" />
|
||||||
<package android:name="com.google.android.apps.youtube.music" />
|
<package android:name="com.google.android.apps.youtube.music" />
|
||||||
<package android:name="com.mgoogle.android.gms" />
|
<package android:name="com.mgoogle.android.gms" />
|
||||||
|
<package android:name="com.android.vending" />
|
||||||
</queries>
|
</queries>
|
||||||
|
|
||||||
<application
|
<application
|
||||||
|
|
|
@ -22,6 +22,7 @@ object AppUtils: CoroutineScope by CoroutineScope(Dispatchers.IO) {
|
||||||
const val musicRootPkg = "com.google.android.apps.youtube.music"
|
const val musicRootPkg = "com.google.android.apps.youtube.music"
|
||||||
const val microgPkg = "com.mgoogle.android.gms"
|
const val microgPkg = "com.mgoogle.android.gms"
|
||||||
const val managerPkg = APPLICATION_ID
|
const val managerPkg = APPLICATION_ID
|
||||||
|
const val playStorePkg = "com.android.vending"
|
||||||
|
|
||||||
fun sendRefresh(context: Context): Job {
|
fun sendRefresh(context: Context): Job {
|
||||||
return launch {
|
return launch {
|
||||||
|
|
|
@ -14,6 +14,7 @@ import com.vanced.manager.BuildConfig
|
||||||
import com.vanced.manager.core.installer.AppInstallerService
|
import com.vanced.manager.core.installer.AppInstallerService
|
||||||
import com.vanced.manager.core.installer.AppUninstallerService
|
import com.vanced.manager.core.installer.AppUninstallerService
|
||||||
import com.vanced.manager.utils.AppUtils.musicRootPkg
|
import com.vanced.manager.utils.AppUtils.musicRootPkg
|
||||||
|
import com.vanced.manager.utils.AppUtils.playStorePkg
|
||||||
import com.vanced.manager.utils.AppUtils.sendCloseDialog
|
import com.vanced.manager.utils.AppUtils.sendCloseDialog
|
||||||
import com.vanced.manager.utils.AppUtils.sendFailure
|
import com.vanced.manager.utils.AppUtils.sendFailure
|
||||||
import com.vanced.manager.utils.AppUtils.sendRefresh
|
import com.vanced.manager.utils.AppUtils.sendRefresh
|
||||||
|
@ -214,6 +215,7 @@ object PackageHelper {
|
||||||
val modApk: FileInfo? = fileInfoList.lastOrNull { modApkBool(it.name) }
|
val modApk: FileInfo? = fileInfoList.lastOrNull { modApkBool(it.name) }
|
||||||
if (modApk != null) {
|
if (modApk != null) {
|
||||||
if (overwriteBase(modApk, fileInfoList, appVerCode, pkg, app, context)) {
|
if (overwriteBase(modApk, fileInfoList, appVerCode, pkg, app, context)) {
|
||||||
|
setInstallerPackage(context, pkg, playStorePkg)
|
||||||
Log.d(INSTALLER_TAG, "Finished installation")
|
Log.d(INSTALLER_TAG, "Finished installation")
|
||||||
sendRefresh(context)
|
sendRefresh(context)
|
||||||
sendCloseDialog(context)
|
sendCloseDialog(context)
|
||||||
|
@ -649,4 +651,20 @@ object PackageHelper {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setInstallerPackage(context: Context, target: String, installer: String) {
|
||||||
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) return
|
||||||
|
try {
|
||||||
|
Log.d(INSTALLER_TAG, "Setting installer package to $installer for $target")
|
||||||
|
val installerUid = context.packageManager.getPackageUid(installer, 0)
|
||||||
|
val res = Shell.su("""su $installerUid -c 'pm set-installer $target $installer'""").exec()
|
||||||
|
if (res.out.any { line -> line.contains("Success") }) {
|
||||||
|
Log.d(INSTALLER_TAG, "Installer package successfully set")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
Log.d(INSTALLER_TAG, "Failed setting installer package")
|
||||||
|
} catch (e: PackageManager.NameNotFoundException) {
|
||||||
|
Log.d(INSTALLER_TAG, "Installer package $installer not found. Skipping setting installer")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue