feat: hiding logs support when launch a project on built app

This commit is contained in:
hyb1996
2018-01-25 14:12:54 +08:00
parent 02f9145a80
commit 8713027efe
6 changed files with 62 additions and 16 deletions

View File

@@ -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;
}
}

View File

@@ -41,6 +41,9 @@ public class ProjectConfig {
@SerializedName("assets") @SerializedName("assets")
private List<String> mAssets = new ArrayList<>(); private List<String> mAssets = new ArrayList<>();
@SerializedName("launchConfig")
private LaunchConfig mLaunchConfig;
public static ProjectConfig fromJson(String json) { public static ProjectConfig fromJson(String json) {
if (json == null) { if (json == null) {
return null; return null;
@@ -122,6 +125,9 @@ public class ProjectConfig {
} }
public List<String> getAssets() { public List<String> getAssets() {
if (mAssets == null) {
mAssets = new ArrayList<>();
}
return mAssets; return mAssets;
} }
@@ -129,6 +135,17 @@ public class ProjectConfig {
mAssets = assets; mAssets = assets;
} }
public LaunchConfig getLaunchConfig() {
if (mLaunchConfig == null) {
mLaunchConfig = new LaunchConfig();
}
return mLaunchConfig;
}
public void setLaunchConfig(LaunchConfig launchConfig) {
mLaunchConfig = launchConfig;
}
public String toJson() { public String toJson() {
return GSON.toJson(this); return GSON.toJson(this);
} }

View File

@@ -6,5 +6,8 @@
"main": "main.js", "main": "main.js",
"assets" : [ "assets" : [
"auto.js.png" "auto.js.png"
] ],
"launchConfig": {
"hideLogs": true
}
} }

View File

@@ -46,9 +46,6 @@ public class MainActivity extends AppCompatActivity {
private void runScript() { private void runScript() {
new Thread(() -> new AssetsProjectLauncher("project", this).launch()).start(); new Thread(() -> new AssetsProjectLauncher("project", this).launch()).start();
if (!Pref.shouldShowMainActivity()) {
finish();
}
} }
@Override @Override

View File

@@ -29,8 +29,8 @@ public class Pref {
return getPreferences().getBoolean(getString(R.string.key_enable_accessibility_service_by_root), false); return getPreferences().getBoolean(getString(R.string.key_enable_accessibility_service_by_root), false);
} }
public static boolean shouldShowMainActivity() { public static boolean shouldHideLogs() {
return !getPreferences().getBoolean(getString(R.string.key_dont_show_main_activity), false); return getPreferences().getBoolean(getString(R.string.key_dont_show_main_activity), false);
} }
public static boolean shouldStopAllScriptsWhenVolumeUp() { public static boolean shouldStopAllScriptsWhenVolumeUp() {

View File

@@ -1,15 +1,14 @@
package com.stardust.auojs.inrt.launch; 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.auojs.inrt.autojs.AutoJs;
import com.stardust.autojs.execution.ExecutionConfig; import com.stardust.autojs.execution.ExecutionConfig;
import com.stardust.autojs.project.ProjectConfig; import com.stardust.autojs.project.ProjectConfig;
import com.stardust.autojs.script.JavaScriptFileSource; import com.stardust.autojs.script.JavaScriptFileSource;
import com.stardust.pio.PFiles; import com.stardust.pio.PFiles;
import org.mozilla.javascript.optimizer.ClassCompiler;
import java.io.File; import java.io.File;
/** /**
@@ -22,18 +21,27 @@ public class AssetsProjectLauncher {
private String mProjectDir; private String mProjectDir;
private File mMainScriptFile; private File mMainScriptFile;
private ProjectConfig mProjectConfig; private ProjectConfig mProjectConfig;
private Context mContext; private Activity mActivity;
public AssetsProjectLauncher(String projectDir, Context context) { public AssetsProjectLauncher(String projectDir, Activity activity) {
mAssetsProjectDir = projectDir; mAssetsProjectDir = projectDir;
mContext = context; mActivity = activity;
mProjectDir = new File(context.getFilesDir(), "project/").getPath(); mProjectDir = new File(activity.getFilesDir(), "project/").getPath();
mProjectConfig = ProjectConfig.fromAssets(context, ProjectConfig.configFileOfDir(mAssetsProjectDir)); mProjectConfig = ProjectConfig.fromAssets(activity, ProjectConfig.configFileOfDir(mAssetsProjectDir));
mMainScriptFile = new File(mProjectDir, mProjectConfig.getMainScriptFile()); mMainScriptFile = new File(mProjectDir, mProjectConfig.getMainScriptFile());
} }
public void launch() { public void launch() {
prepare(); prepare();
if (mProjectConfig.getLaunchConfig().shouldHideLogs() || Pref.shouldHideLogs()) {
mActivity.runOnUiThread(mActivity::finish);
}
mActivity = null;
runScript();
}
private void runScript() {
try { try {
JavaScriptFileSource source = new JavaScriptFileSource(mMainScriptFile); JavaScriptFileSource source = new JavaScriptFileSource(mMainScriptFile);
AutoJs.getInstance().getScriptEngineService().execute(source, new ExecutionConfig() AutoJs.getInstance().getScriptEngineService().execute(source, new ExecutionConfig()
@@ -47,10 +55,10 @@ public class AssetsProjectLauncher {
if (mMainScriptFile.exists()) { if (mMainScriptFile.exists()) {
return; return;
} }
PFiles.copyAsset(mContext, PFiles.join(mAssetsProjectDir, mProjectConfig.getMainScriptFile()), PFiles.copyAsset(mActivity, PFiles.join(mAssetsProjectDir, mProjectConfig.getMainScriptFile()),
mMainScriptFile.getPath()); mMainScriptFile.getPath());
for (String asset : mProjectConfig.getAssets()) { 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));
} }
} }