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")
private List<String> 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<String> 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);
}

View File

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

View File

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

View File

@@ -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() {

View File

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