From 8713027efe3fe090472132a38825f9ab1f26ec71 Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Thu, 25 Jan 2018 14:12:54 +0800 Subject: [PATCH] feat: hiding logs support when launch a project on built app --- .../stardust/autojs/project/LaunchConfig.java | 21 ++++++++++++++ .../autojs/project/ProjectConfig.java | 17 +++++++++++ inrt/src/main/assets/project/project.json | 5 +++- .../com/stardust/auojs/inrt/MainActivity.java | 3 -- .../java/com/stardust/auojs/inrt/Pref.java | 4 +-- .../inrt/launch/AssetsProjectLauncher.java | 28 ++++++++++++------- 6 files changed, 62 insertions(+), 16 deletions(-) create mode 100644 autojs/src/main/java/com/stardust/autojs/project/LaunchConfig.java diff --git a/autojs/src/main/java/com/stardust/autojs/project/LaunchConfig.java b/autojs/src/main/java/com/stardust/autojs/project/LaunchConfig.java new file mode 100644 index 00000000..a358368e --- /dev/null +++ b/autojs/src/main/java/com/stardust/autojs/project/LaunchConfig.java @@ -0,0 +1,21 @@ +package com.stardust.autojs.project; + +import com.google.gson.annotations.SerializedName; + +/** + * Created by Stardust on 2018/1/25. + */ + +public class LaunchConfig { + + @SerializedName("hideLogs") + private boolean mHideLogs = false; + + public boolean shouldHideLogs() { + return mHideLogs; + } + + public void setHideLogs(boolean hideLogs) { + mHideLogs = hideLogs; + } +} diff --git a/autojs/src/main/java/com/stardust/autojs/project/ProjectConfig.java b/autojs/src/main/java/com/stardust/autojs/project/ProjectConfig.java index e7551ccf..f8519d27 100644 --- a/autojs/src/main/java/com/stardust/autojs/project/ProjectConfig.java +++ b/autojs/src/main/java/com/stardust/autojs/project/ProjectConfig.java @@ -41,6 +41,9 @@ public class ProjectConfig { @SerializedName("assets") private List mAssets = new ArrayList<>(); + @SerializedName("launchConfig") + private LaunchConfig mLaunchConfig; + public static ProjectConfig fromJson(String json) { if (json == null) { return null; @@ -122,6 +125,9 @@ public class ProjectConfig { } public List getAssets() { + if (mAssets == null) { + mAssets = new ArrayList<>(); + } return mAssets; } @@ -129,6 +135,17 @@ public class ProjectConfig { mAssets = assets; } + public LaunchConfig getLaunchConfig() { + if (mLaunchConfig == null) { + mLaunchConfig = new LaunchConfig(); + } + return mLaunchConfig; + } + + public void setLaunchConfig(LaunchConfig launchConfig) { + mLaunchConfig = launchConfig; + } + public String toJson() { return GSON.toJson(this); } diff --git a/inrt/src/main/assets/project/project.json b/inrt/src/main/assets/project/project.json index 2e6c09bf..159d85ef 100644 --- a/inrt/src/main/assets/project/project.json +++ b/inrt/src/main/assets/project/project.json @@ -6,5 +6,8 @@ "main": "main.js", "assets" : [ "auto.js.png" - ] + ], + "launchConfig": { + "hideLogs": true + } } \ No newline at end of file diff --git a/inrt/src/main/java/com/stardust/auojs/inrt/MainActivity.java b/inrt/src/main/java/com/stardust/auojs/inrt/MainActivity.java index 10142a42..2aa1ab85 100644 --- a/inrt/src/main/java/com/stardust/auojs/inrt/MainActivity.java +++ b/inrt/src/main/java/com/stardust/auojs/inrt/MainActivity.java @@ -46,9 +46,6 @@ public class MainActivity extends AppCompatActivity { private void runScript() { new Thread(() -> new AssetsProjectLauncher("project", this).launch()).start(); - if (!Pref.shouldShowMainActivity()) { - finish(); - } } @Override diff --git a/inrt/src/main/java/com/stardust/auojs/inrt/Pref.java b/inrt/src/main/java/com/stardust/auojs/inrt/Pref.java index 9359131f..23a9d03b 100644 --- a/inrt/src/main/java/com/stardust/auojs/inrt/Pref.java +++ b/inrt/src/main/java/com/stardust/auojs/inrt/Pref.java @@ -29,8 +29,8 @@ public class Pref { return getPreferences().getBoolean(getString(R.string.key_enable_accessibility_service_by_root), false); } - public static boolean shouldShowMainActivity() { - return !getPreferences().getBoolean(getString(R.string.key_dont_show_main_activity), false); + public static boolean shouldHideLogs() { + return getPreferences().getBoolean(getString(R.string.key_dont_show_main_activity), false); } public static boolean shouldStopAllScriptsWhenVolumeUp() { diff --git a/inrt/src/main/java/com/stardust/auojs/inrt/launch/AssetsProjectLauncher.java b/inrt/src/main/java/com/stardust/auojs/inrt/launch/AssetsProjectLauncher.java index 57b5f489..fc4af538 100644 --- a/inrt/src/main/java/com/stardust/auojs/inrt/launch/AssetsProjectLauncher.java +++ b/inrt/src/main/java/com/stardust/auojs/inrt/launch/AssetsProjectLauncher.java @@ -1,15 +1,14 @@ package com.stardust.auojs.inrt.launch; -import android.content.Context; +import android.app.Activity; +import com.stardust.auojs.inrt.Pref; import com.stardust.auojs.inrt.autojs.AutoJs; import com.stardust.autojs.execution.ExecutionConfig; import com.stardust.autojs.project.ProjectConfig; import com.stardust.autojs.script.JavaScriptFileSource; import com.stardust.pio.PFiles; -import org.mozilla.javascript.optimizer.ClassCompiler; - import java.io.File; /** @@ -22,18 +21,27 @@ public class AssetsProjectLauncher { private String mProjectDir; private File mMainScriptFile; private ProjectConfig mProjectConfig; - private Context mContext; + private Activity mActivity; - public AssetsProjectLauncher(String projectDir, Context context) { + public AssetsProjectLauncher(String projectDir, Activity activity) { mAssetsProjectDir = projectDir; - mContext = context; - mProjectDir = new File(context.getFilesDir(), "project/").getPath(); - mProjectConfig = ProjectConfig.fromAssets(context, ProjectConfig.configFileOfDir(mAssetsProjectDir)); + mActivity = activity; + mProjectDir = new File(activity.getFilesDir(), "project/").getPath(); + mProjectConfig = ProjectConfig.fromAssets(activity, ProjectConfig.configFileOfDir(mAssetsProjectDir)); mMainScriptFile = new File(mProjectDir, mProjectConfig.getMainScriptFile()); } public void launch() { prepare(); + if (mProjectConfig.getLaunchConfig().shouldHideLogs() || Pref.shouldHideLogs()) { + mActivity.runOnUiThread(mActivity::finish); + } + mActivity = null; + runScript(); + + } + + private void runScript() { try { JavaScriptFileSource source = new JavaScriptFileSource(mMainScriptFile); AutoJs.getInstance().getScriptEngineService().execute(source, new ExecutionConfig() @@ -47,10 +55,10 @@ public class AssetsProjectLauncher { if (mMainScriptFile.exists()) { return; } - PFiles.copyAsset(mContext, PFiles.join(mAssetsProjectDir, mProjectConfig.getMainScriptFile()), + PFiles.copyAsset(mActivity, PFiles.join(mAssetsProjectDir, mProjectConfig.getMainScriptFile()), mMainScriptFile.getPath()); for (String asset : mProjectConfig.getAssets()) { - PFiles.copyAsset(mContext, PFiles.join(mAssetsProjectDir, asset), PFiles.join(mProjectDir, asset)); + PFiles.copyAsset(mActivity, PFiles.join(mAssetsProjectDir, asset), PFiles.join(mProjectDir, asset)); } }