6.7.0 - Alpha6 - 修复运行项目时 project.json 配置参数无法正常解析的问题
This commit is contained in:
@@ -21,6 +21,7 @@
|
|||||||
"images 部分相关方法出现异常时 oneShot 标记功能失效的问题 _[`issue #372`](http://issues.autojs6.com/372)_",
|
"images 部分相关方法出现异常时 oneShot 标记功能失效的问题 _[`issue #372`](http://issues.autojs6.com/372)_",
|
||||||
"images 部分相关方法可能引发内存泄露的问题 _[`issue #372`](http://issues.autojs6.com/372)_",
|
"images 部分相关方法可能引发内存泄露的问题 _[`issue #372`](http://issues.autojs6.com/372)_",
|
||||||
"Android 10 UiObject#child 方法可能出现 ArrayIndexOutOfBoundsException 异常的问题 _[`issue #416`](http://issues.autojs6.com/416)_",
|
"Android 10 UiObject#child 方法可能出现 ArrayIndexOutOfBoundsException 异常的问题 _[`issue #416`](http://issues.autojs6.com/416)_",
|
||||||
|
"运行项目时 project.json 配置参数无法正常解析的问题",
|
||||||
"打包应用无法正常使用 Paddle OCR 与 Rapid OCR 功能的问题",
|
"打包应用无法正常使用 Paddle OCR 与 Rapid OCR 功能的问题",
|
||||||
"版本历史页面部分系统因字体差别导致统计数据显示不完整的问题",
|
"版本历史页面部分系统因字体差别导致统计数据显示不完整的问题",
|
||||||
"部分设备无法正常初始化 MLKit Google OCR 的问题 (试修) _[`issue #8`](http://issues.autojs6.com/8#issuecomment-3117061768)_",
|
"部分设备无法正常初始化 MLKit Google OCR 的问题 (试修) _[`issue #8`](http://issues.autojs6.com/8#issuecomment-3117061768)_",
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ public class ProjectConfig {
|
|||||||
@With(value = "ignoredDirs", target = {"AutoJs4", "AutoX"}),
|
@With(value = "ignoredDirs", target = {"AutoJs4", "AutoX"}),
|
||||||
@With(value = "ignore", target = {"Unknown"}),
|
@With(value = "ignore", target = {"Unknown"}),
|
||||||
})
|
})
|
||||||
private final List<File> mExcludedDirs = new ArrayList<>();
|
private final List<String> mExcludedDirs = new ArrayList<>();
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private transient String mSourcePath = null;
|
private transient String mSourcePath = null;
|
||||||
@@ -231,27 +231,27 @@ public class ProjectConfig {
|
|||||||
LaunchConfig launchConfig = new LaunchConfig();
|
LaunchConfig launchConfig = new LaunchConfig();
|
||||||
BuildInfo buildInfo = new BuildInfo();
|
BuildInfo buildInfo = new BuildInfo();
|
||||||
|
|
||||||
Pattern namePattern = Pattern.compile(stringPattern("name"));
|
Pattern namePattern = Pattern.compile(stringPattern("name"), Pattern.CASE_INSENSITIVE);
|
||||||
Pattern versionNamePattern = Pattern.compile(stringPattern("versionName"));
|
Pattern versionNamePattern = Pattern.compile(stringPattern("versionName"), Pattern.CASE_INSENSITIVE);
|
||||||
Pattern versionCodePattern = Pattern.compile(numberPattern("versionCode"));
|
Pattern versionCodePattern = Pattern.compile(numberPattern("versionCode"), Pattern.CASE_INSENSITIVE);
|
||||||
Pattern packageNamePattern = Pattern.compile(stringPattern("packageName"));
|
Pattern packageNamePattern = Pattern.compile(stringPattern("packageName"), Pattern.CASE_INSENSITIVE);
|
||||||
Pattern mainPattern = Pattern.compile(stringPattern("main"));
|
Pattern mainPattern = Pattern.compile(stringPattern("main"), Pattern.CASE_INSENSITIVE);
|
||||||
Pattern iconPattern = Pattern.compile(stringPattern("icon"));
|
Pattern iconPattern = Pattern.compile(stringPattern("icon"), Pattern.CASE_INSENSITIVE);
|
||||||
|
|
||||||
Pattern assetsPattern = Pattern.compile(listPattern("asset"));
|
Pattern assetsPattern = Pattern.compile(listPattern("asset"), Pattern.CASE_INSENSITIVE);
|
||||||
Pattern abisPattern = Pattern.compile(listPattern("abi"));
|
Pattern abisPattern = Pattern.compile(listPattern("abi"), Pattern.CASE_INSENSITIVE);
|
||||||
Pattern libsPattern = Pattern.compile(listPattern("lib"));
|
Pattern libsPattern = Pattern.compile(listPattern("lib"), Pattern.CASE_INSENSITIVE);
|
||||||
Pattern useFeaturesPattern = Pattern.compile(listPattern("useFeature"));
|
Pattern useFeaturesPattern = Pattern.compile(listPattern("useFeature"), Pattern.CASE_INSENSITIVE);
|
||||||
|
|
||||||
Pattern buildTimePattern = Pattern.compile(numberPattern("buildTime"));
|
Pattern buildTimePattern = Pattern.compile(numberPattern("buildTime"), Pattern.CASE_INSENSITIVE);
|
||||||
Pattern buildNumberPattern = Pattern.compile(numberPattern("buildNumber"));
|
Pattern buildNumberPattern = Pattern.compile(numberPattern("buildNumber"), Pattern.CASE_INSENSITIVE);
|
||||||
Pattern buildIdPattern = Pattern.compile(stringPattern("buildId"));
|
Pattern buildIdPattern = Pattern.compile(stringPattern("buildId"), Pattern.CASE_INSENSITIVE);
|
||||||
|
|
||||||
Pattern launchConfigHideLogsPattern = Pattern.compile(booleanPattern("hideLogs"));
|
Pattern launchConfigHideLogsPattern = Pattern.compile(booleanPattern("hideLogs"), Pattern.CASE_INSENSITIVE);
|
||||||
Pattern launchConfigLogsVisiblePattern = Pattern.compile(booleanPattern("logsVisible"));
|
Pattern launchConfigLogsVisiblePattern = Pattern.compile(booleanPattern("logsVisible"), Pattern.CASE_INSENSITIVE);
|
||||||
|
|
||||||
Pattern launchConfigDisplaySplashPattern = Pattern.compile(booleanPattern("displaySplash"));
|
Pattern launchConfigDisplaySplashPattern = Pattern.compile(booleanPattern("displaySplash"), Pattern.CASE_INSENSITIVE);
|
||||||
Pattern launchConfigSplashVisiblePattern = Pattern.compile(booleanPattern("splashVisible"));
|
Pattern launchConfigSplashVisiblePattern = Pattern.compile(booleanPattern("splashVisible"), Pattern.CASE_INSENSITIVE);
|
||||||
|
|
||||||
setFieldIfMatches(namePattern, s, projectConfig::setName);
|
setFieldIfMatches(namePattern, s, projectConfig::setName);
|
||||||
setFieldIfMatches(versionNamePattern, s, projectConfig::setVersionName);
|
setFieldIfMatches(versionNamePattern, s, projectConfig::setVersionName);
|
||||||
@@ -293,7 +293,7 @@ public class ProjectConfig {
|
|||||||
@NotNull
|
@NotNull
|
||||||
@Language("RegExp")
|
@Language("RegExp")
|
||||||
private static String listPattern(String name) {
|
private static String listPattern(String name) {
|
||||||
return "\"" + parseNamePattern(name) + "(s|List)?\"\\s*:\\s*\\[([^\"]*)]";
|
return "\"" + parseNamePattern(name) + "(?:s|list)?\"\\s*:\\s*\\[\\s*(\"(?:\\\\.|[^\"\\\\])*\")(?:\\s*,\\s*\"(?:\\\\.|[^\"\\\\])*\")*\\s*]";
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -316,7 +316,7 @@ public class ProjectConfig {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private static String parseNamePattern(String name) {
|
private static String parseNamePattern(String name) {
|
||||||
return Pattern.quote(name.replaceAll("(?<=[a-z])([A-Z]+)", "(?:$1|_$1)"));
|
return name.replaceAll("(?<=[a-z])([A-Z]+)", "(?:$1|_$1)");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void setFieldIfMatches(Pattern pattern, String s, java.util.function.Consumer<String> setter) {
|
private static void setFieldIfMatches(Pattern pattern, String s, java.util.function.Consumer<String> setter) {
|
||||||
@@ -347,7 +347,12 @@ public class ProjectConfig {
|
|||||||
if (content == null) {
|
if (content == null) {
|
||||||
setter.accept(Collections.emptyList());
|
setter.accept(Collections.emptyList());
|
||||||
} else {
|
} else {
|
||||||
List<String> list = Arrays.asList(content.split("\\s*,\\s*"));
|
List<String> list = Arrays.stream(content.split("\\s*,\\s*")).map(str -> {
|
||||||
|
if (str.startsWith("\"") && str.endsWith("\"")) {
|
||||||
|
return str.substring(1, str.length() - 1);
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
setter.accept(list);
|
setter.accept(list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -552,11 +557,24 @@ public class ProjectConfig {
|
|||||||
// # }
|
// # }
|
||||||
|
|
||||||
public List<File> getExcludedDirs() {
|
public List<File> getExcludedDirs() {
|
||||||
return mExcludedDirs;
|
return mExcludedDirs.stream().map(dir -> {
|
||||||
|
if (dir.endsWith("/")) {
|
||||||
|
dir = dir.substring(0, dir.length() - 1);
|
||||||
|
}
|
||||||
|
if (mSourcePath == null) {
|
||||||
|
throw new IllegalStateException("Source path is not set");
|
||||||
|
}
|
||||||
|
if (dir.startsWith(mSourcePath)) {
|
||||||
|
return new File(dir);
|
||||||
|
}
|
||||||
|
return new File(mSourcePath, dir);
|
||||||
|
}).distinct().collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ProjectConfig excludeDir(File dirToExclude) {
|
public ProjectConfig excludeDir(String dirToExclude) {
|
||||||
mExcludedDirs.add(dirToExclude);
|
if (!mExcludedDirs.contains(dirToExclude)) {
|
||||||
|
mExcludedDirs.add(dirToExclude);
|
||||||
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -932,7 +932,7 @@ public class BuildActivity extends BaseActivity implements ApkBuilder.ProgressCa
|
|||||||
ProjectConfig projectConfig;
|
ProjectConfig projectConfig;
|
||||||
if (mProjectConfig != null) {
|
if (mProjectConfig != null) {
|
||||||
projectConfig = mProjectConfig
|
projectConfig = mProjectConfig
|
||||||
.excludeDir(new File(mSource, mProjectConfig.getBuildDir()))
|
.excludeDir(mProjectConfig.getBuildDir())
|
||||||
.setSourcePath(mSource)
|
.setSourcePath(mSource)
|
||||||
.setIconPath(mProjectConfig.getIconPath() == null ? null : new File(mSource, mProjectConfig.getIconPath()).getPath());
|
.setIconPath(mProjectConfig.getIconPath() == null ? null : new File(mSource, mProjectConfig.getIconPath()).getPath());
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user