fix(modules/HookScriptLoaderModule): delay script execution until hooks completed
This commit is contained in:
parent
4f583a86f2
commit
b0fd423863
2 changed files with 18 additions and 1 deletions
|
|
@ -7,12 +7,18 @@ import android.os.Bundle
|
|||
import de.robv.android.xposed.IXposedHookLoadPackage
|
||||
import de.robv.android.xposed.IXposedHookZygoteInit
|
||||
import de.robv.android.xposed.callbacks.XC_LoadPackage
|
||||
import io.github.revenge.xposed.Utils.Log
|
||||
import io.github.revenge.xposed.modules.*
|
||||
import io.github.revenge.xposed.modules.appearance.FontsModule
|
||||
import io.github.revenge.xposed.modules.appearance.SysColorsModule
|
||||
import io.github.revenge.xposed.modules.appearance.ThemesModule
|
||||
import io.github.revenge.xposed.modules.bridge.AdditionalBridgeMethodsModule
|
||||
import io.github.revenge.xposed.modules.bridge.BridgeModule
|
||||
import kotlinx.coroutines.CompletableDeferred
|
||||
|
||||
object HookReadyHolder {
|
||||
val deferred = CompletableDeferred<Unit>()
|
||||
}
|
||||
|
||||
class Main : Module(), IXposedHookLoadPackage, IXposedHookZygoteInit {
|
||||
private var hooked = false
|
||||
|
|
@ -45,13 +51,16 @@ class Main : Module(), IXposedHookLoadPackage, IXposedHookZygoteInit {
|
|||
|
||||
ContextWrapper::class.java.hookMethod("attachBaseContext", Context::class.java) {
|
||||
after {
|
||||
Log.i("Received Context")
|
||||
this@Main.onContext(args[0] as Context)
|
||||
}
|
||||
}
|
||||
|
||||
reactActivity.hookMethod("onCreate", Bundle::class.java) {
|
||||
after {
|
||||
Log.i("Received Activity")
|
||||
this@Main.onActivity(thisObject as Activity)
|
||||
HookReadyHolder.deferred.complete(Unit)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,9 +6,12 @@ import de.robv.android.xposed.IXposedHookZygoteInit
|
|||
import de.robv.android.xposed.XposedBridge
|
||||
import de.robv.android.xposed.callbacks.XC_LoadPackage
|
||||
import io.github.revenge.xposed.Constants
|
||||
import io.github.revenge.xposed.HookReadyHolder
|
||||
import io.github.revenge.xposed.Module
|
||||
import io.github.revenge.xposed.Utils.Log
|
||||
import io.github.revenge.xposed.modules.HookScriptLoaderModule.Companion.PRELOADS_DIR
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.awaitAll
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import java.io.File
|
||||
import java.lang.reflect.Method
|
||||
|
|
@ -84,7 +87,12 @@ class HookScriptLoaderModule : Module() {
|
|||
private fun HookScope.runCustomScripts(loadScriptFromFile: Method, loadScriptFromAssets: Method) {
|
||||
Log.i("Running custom scripts...")
|
||||
|
||||
runBlocking { UpdaterModule.downloadScript().join() }
|
||||
runBlocking {
|
||||
val ready = async { HookReadyHolder.deferred.join() }
|
||||
val download = async { UpdaterModule.downloadScript().join() }
|
||||
|
||||
awaitAll(ready, download)
|
||||
}
|
||||
|
||||
val loadSynchronously = args[2]
|
||||
val runScriptFile = { file: File ->
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue