修复 打包后ui脚本无法运行的问题
修复 打包后模块无法运行的问题
This commit is contained in:
@@ -23,8 +23,6 @@ import java.lang.IllegalStateException
|
||||
*/
|
||||
|
||||
class AutoJs private constructor(application: Application) : com.stardust.autojs.AutoJs(application) {
|
||||
private var mKey = ""
|
||||
private var mInitVector = ""
|
||||
|
||||
init {
|
||||
scriptEngineService.registerGlobalScriptExecutionListener(ScriptExecutionGlobalListener())
|
||||
@@ -85,7 +83,6 @@ class AutoJs private constructor(application: Application) : com.stardust.autojs
|
||||
super.initScriptEngineManager()
|
||||
scriptEngineManager.registerEngine(JavaScriptSource.ENGINE) {
|
||||
val engine = XJavaScriptEngine(application)
|
||||
engine.setKey(mKey, mInitVector)
|
||||
engine.runtime = createRuntime()
|
||||
engine
|
||||
}
|
||||
@@ -98,11 +95,6 @@ class AutoJs private constructor(application: Application) : com.stardust.autojs
|
||||
return runtime
|
||||
}
|
||||
|
||||
fun setKey(key: String, vet: String) {
|
||||
mKey = key
|
||||
mInitVector = vet
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
|
||||
@@ -20,7 +20,7 @@ class ScriptExecutionGlobalListener : ScriptExecutionListener {
|
||||
}
|
||||
|
||||
private fun onFinish(execution: ScriptExecution) {
|
||||
val millis = execution.engine.getTag(ENGINE_TAG_START_TIME) as Long ?: return
|
||||
val millis = execution.engine.getTag(ENGINE_TAG_START_TIME) as Long? ?: return
|
||||
val seconds = (System.currentTimeMillis() - millis) / 1000.0
|
||||
AutoJs.instance.scriptEngineService.globalConsole
|
||||
.verbose(GlobalAppContext.getString(R.string.text_execution_finished), execution.source.toString(), seconds)
|
||||
|
||||
@@ -2,20 +2,17 @@ package com.stardust.auojs.inrt.autojs
|
||||
|
||||
import android.content.Context
|
||||
import com.stardust.autojs.engine.LoopBasedJavaScriptEngine
|
||||
import com.stardust.autojs.engine.encryption.ScriptEncryption
|
||||
import com.stardust.autojs.script.EncryptedScriptFileHeader
|
||||
import com.stardust.autojs.script.JavaScriptFileSource
|
||||
import com.stardust.autojs.script.ScriptSource
|
||||
import com.stardust.autojs.script.StringScriptSource
|
||||
import com.stardust.pio.PFiles
|
||||
import com.stardust.util.AdvancedEncryptionStandard
|
||||
import java.io.File
|
||||
import java.lang.Exception
|
||||
import java.lang.IllegalStateException
|
||||
import java.security.GeneralSecurityException
|
||||
|
||||
class XJavaScriptEngine(context: Context) : LoopBasedJavaScriptEngine(context) {
|
||||
|
||||
private var mKey = ""
|
||||
private var mInitVector = ""
|
||||
|
||||
override fun execute(source: ScriptSource, callback: ExecuteCallback?) {
|
||||
if (source is JavaScriptFileSource) {
|
||||
@@ -32,17 +29,10 @@ class XJavaScriptEngine(context: Context) : LoopBasedJavaScriptEngine(context) {
|
||||
private fun execute(file: File) {
|
||||
val bytes = PFiles.readBytes(file.path)
|
||||
try {
|
||||
val source = AdvancedEncryptionStandard(mKey.toByteArray(), mInitVector).decrypt(bytes)
|
||||
super.execute(StringScriptSource(file.name, String(source)))
|
||||
super.execute(StringScriptSource(file.name, String(ScriptEncryption.decrypt(bytes, EncryptedScriptFileHeader.BLOCK_SIZE))))
|
||||
} catch (e: GeneralSecurityException) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
fun setKey(key: String, initVector: String) {
|
||||
mKey = key
|
||||
mInitVector = initVector
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -11,6 +11,7 @@ import com.stardust.auojs.inrt.BuildConfig
|
||||
import com.stardust.auojs.inrt.LogActivity
|
||||
import com.stardust.auojs.inrt.Pref
|
||||
import com.stardust.auojs.inrt.autojs.AutoJs
|
||||
import com.stardust.autojs.engine.encryption.ScriptEncryption
|
||||
import com.stardust.autojs.execution.ExecutionConfig
|
||||
import com.stardust.autojs.execution.ScriptExecution
|
||||
import com.stardust.autojs.project.ProjectConfig
|
||||
@@ -101,12 +102,12 @@ open class AssetsProjectLauncher(private val mAssetsProjectDir: String, private
|
||||
val key = MD5.md5(projectConfig.packageName + projectConfig.versionName + projectConfig.mainScriptFile)
|
||||
val vec = MD5.md5(projectConfig.buildInfo.buildId + projectConfig.name).substring(0, 16)
|
||||
try {
|
||||
val fieldKey = AutoJs::class.java.getDeclaredField("mKey")
|
||||
val fieldKey = ScriptEncryption::class.java.getDeclaredField("mKey")
|
||||
fieldKey.isAccessible = true
|
||||
fieldKey.set(AutoJs.instance, key)
|
||||
val fieldVector = AutoJs::class.java.getDeclaredField("mInitVector")
|
||||
fieldKey.set(null, key)
|
||||
val fieldVector = ScriptEncryption::class.java.getDeclaredField("mInitVector")
|
||||
fieldVector.isAccessible = true
|
||||
fieldVector.set(AutoJs.instance, vec)
|
||||
fieldVector.set(null, vec)
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user