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

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