feat: new project, project manager

This commit is contained in:
hyb1996
2018-09-18 17:30:57 +08:00
parent 36e9c9481a
commit c8d2a6e7a2
42 changed files with 747 additions and 166 deletions

View File

@@ -175,14 +175,6 @@ public class ScriptEngineService {
return execute(new ScriptExecutionTask(source, null, config));
}
public ScriptExecution execute(ScriptSource source, ScriptExecutionListener listener) {
return execute(source, listener, ExecutionConfig.getDefault());
}
public ScriptExecution execute(ScriptSource source) {
return execute(source, null, ExecutionConfig.getDefault());
}
@Subscribe
public void onScriptExecution(ScriptExecutionEvent event) {
if (event.getCode() == ScriptExecutionEvent.ON_START) {

View File

@@ -0,0 +1,59 @@
package com.stardust.autojs.project;
import com.google.gson.annotations.SerializedName;
import java.util.zip.CRC32;
public class BuildInfo {
@SerializedName("build_time")
private long mBuildTime;
@SerializedName("build_id")
private String mBuildId;
@SerializedName("build_number")
private long mBuildNumber;
public BuildInfo() {
}
public long getBuildNumber() {
return mBuildNumber;
}
public void setBuildNumber(long buildNumber) {
mBuildNumber = buildNumber;
}
public long getBuildTime() {
return mBuildTime;
}
public void setBuildTime(long buildTime) {
mBuildTime = buildTime;
}
public String getBuildId() {
return mBuildId;
}
public void setBuildId(String buildId) {
mBuildId = buildId;
}
public static BuildInfo generate(long buildNumber) {
BuildInfo info = new BuildInfo();
info.setBuildNumber(buildNumber);
info.setBuildTime(System.currentTimeMillis());
info.setBuildId(generateBuildId(buildNumber, info.getBuildTime()));
return info;
}
private static String generateBuildId(long buildNumber, long buildTime) {
CRC32 crc32 = new CRC32();
crc32.update((buildNumber + "" + buildTime).getBytes());
return String.format("%08X", crc32.getValue()) + "-" + buildNumber;
}
}

View File

@@ -2,6 +2,7 @@ package com.stardust.autojs.project;
import android.content.Context;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -32,7 +33,7 @@ public class ProjectConfig {
private String mVersionName;
@SerializedName("versionCode")
private int mVersionCode;
private int mVersionCode = -1;
@SerializedName("packageName")
private String mPackageName;
@@ -46,11 +47,40 @@ public class ProjectConfig {
@SerializedName("launchConfig")
private LaunchConfig mLaunchConfig;
@SerializedName("build")
private BuildInfo mBuildInfo = new BuildInfo();
@SerializedName("icon")
private String mIcon;
public static ProjectConfig fromJson(String json) {
if (json == null) {
return null;
}
return GSON.fromJson(json, ProjectConfig.class);
ProjectConfig config = GSON.fromJson(json, ProjectConfig.class);
if(!isValid(config)){
return null;
}
return config;
}
private static boolean isValid(ProjectConfig config) {
if(TextUtils.isEmpty(config.getName())){
return false;
}
if(TextUtils.isEmpty(config.getPackageName())){
return false;
}
if(TextUtils.isEmpty(config.getVersionName())){
return false;
}
if(TextUtils.isEmpty(config.getMainScriptFile())){
return false;
}
if(config.getVersionCode() == -1){
return false;
}
return true;
}
@@ -81,6 +111,13 @@ public class ProjectConfig {
return PFiles.join(projectDir, CONFIG_FILE_NAME);
}
public BuildInfo getBuildInfo() {
return mBuildInfo;
}
public void setBuildInfo(BuildInfo buildInfo) {
mBuildInfo = buildInfo;
}
public String getName() {
return mName;
@@ -166,4 +203,15 @@ public class ProjectConfig {
return GSON.toJson(this);
}
public String getIcon() {
return mIcon;
}
public void setIcon(String icon) {
mIcon = icon;
}
public String getBuildDir() {
return "build";
}
}

View File

@@ -0,0 +1,27 @@
package com.stardust.autojs.project;
import com.stardust.autojs.ScriptEngineService;
import com.stardust.autojs.execution.ExecutionConfig;
import com.stardust.autojs.script.JavaScriptFileSource;
import java.io.File;
public class ProjectLauncher {
private String mProjectDir;
private File mMainScriptFile;
private ProjectConfig mProjectConfig;
public ProjectLauncher(String projectDir) {
mProjectDir = projectDir;
mProjectConfig = ProjectConfig.fromProjectDir(projectDir);
mMainScriptFile = new File(mProjectDir, mProjectConfig.getMainScriptFile());
}
public void launch(ScriptEngineService service){
service.execute(new JavaScriptFileSource(mMainScriptFile), new ExecutionConfig()
.executePath(mProjectDir)
.requirePath(mProjectDir));
}
}