6.6.3 - Alpha3 - Gradle 构建脚本提升版本自适应能力 (discussion #369)

This commit is contained in:
SuperMonster003
2025-05-13 18:49:00 +08:00
parent 94122476fa
commit adf8dc9f30
22 changed files with 429 additions and 240 deletions

View File

@@ -732,7 +732,7 @@ android {
// Configures multiple APKs based on ABI.
abi {
// Enables building multiple APKs per ABI.
isEnable = /* isNotAssembleInrt */ !gradle.startParameter.taskNames.any {
isEnable = /* isNotAssembleInrt */ gradle.startParameter.taskNames.none {
it.contains(Regex("^(:?$flavorNameApp:)?$buildActionAssemble$flavorNameInrt", IGNORE_CASE))
}
// By default, all ABIs are included, so use reset() and include to specify that we only
@@ -847,14 +847,29 @@ class Versions(filePath: String) {
private var javaVersionInfoSuffix = ""
val javaVersion: JavaVersion by lazy {
var niceVersionInt = javaVersionRaw.toInt()
var javaVersionInt = determineJavaVersion()
gradle.beforeProject {
extensions.extraProperties["javaVersion"] = javaVersionInt
}
JavaVersion.toVersion(javaVersionInt)
}
private fun determineJavaVersion(): Int {
if (gradle.extra.has("javaVersionOverriddenByUser")) {
(gradle.extra.get("javaVersionOverriddenByUser") as? Int)?.let {
javaVersionInfoSuffix += " [user-specified]"
return it
}
}
var versionInt = javaVersionRaw.toInt()
var isFallback = false
while (niceVersionInt > javaVersionMinSupported) {
if (JvmTarget.values().any { it.name.contains(Regex("_$niceVersionInt$")) }) {
while (versionInt > javaVersionMinSupported) {
if (JvmTarget.values().any { it.name.contains(Regex("_$versionInt$")) }) {
break
}
niceVersionInt -= 1
versionInt -= 1
isFallback = true
}
@@ -862,26 +877,20 @@ class Versions(filePath: String) {
javaVersionInfoSuffix += " [fallback]"
}
if (gradle.extra.has("gradleVersionToCoerceJavaVersion")) {
(gradle.extra["gradleVersionToCoerceJavaVersion"] as? String)?.let {
val maxGradleVersion = getMaxSupportedJavaVersion(it)
if (niceVersionInt > maxGradleVersion) {
niceVersionInt = maxGradleVersion
javaVersionInfoSuffix += " [coerced]"
if (versionInt > currentVersionInt) {
versionInt = currentVersionInt
javaVersionInfoSuffix += " [consistent-downgraded]"
}
if (gradle.extra.has("javaVersionCoercedByGradle")) {
(gradle.extra["javaVersionCoercedByGradle"] as? Int)?.let {
if (versionInt > it) {
versionInt = it
javaVersionInfoSuffix += " [coercive-gradle-downgraded]"
}
}
}
if (niceVersionInt > currentVersionInt) {
niceVersionInt = currentVersionInt
javaVersionInfoSuffix += " [consistent]"
}
gradle.beforeProject {
extensions.extraProperties["javaVersion"] = niceVersionInt
}
JavaVersion.toVersion(niceVersionInt)
return versionInt
}
private var isBuildNumberAutoIncremented = false
@@ -962,51 +971,6 @@ class Versions(filePath: String) {
properties.store(file.writer(), null)
}
private fun getMaxSupportedJavaVersion(gradleVersion: String): Int {
/* https://docs.gradle.org/current/userguide/compatibility.html . */
val presetVersionMap = listOf(
17 to "7.3",
18 to "7.5",
19 to "7.6",
20 to "8.3",
21 to "8.5",
22 to "8.8",
23 to "8.10",
24 to "8.11", /* Unofficial as of Mar 19, 2025. */
)
fun parseVersion(version: String) = version.split(Regex("[.-]")).map { it.toIntOrNull() ?: 0 }
val inputGradleVersionInts = parseVersion(gradleVersion)
var maxJavaVersion: Int = presetVersionMap.first().first
for ((presetJavaVersion, presetGradleVersion) in presetVersionMap) {
val presetGradleVersionInts: List<Int> = parseVersion(presetGradleVersion)
for (i in presetGradleVersionInts.indices) {
when {
i > inputGradleVersionInts.lastIndex -> {
break
}
inputGradleVersionInts[i] > presetGradleVersionInts[i] -> {
maxJavaVersion = presetJavaVersion
break
}
inputGradleVersionInts[i] < presetGradleVersionInts[i] -> {
break
}
i == presetGradleVersionInts.lastIndex -> {
maxJavaVersion = presetJavaVersion
}
}
}
}
return maxJavaVersion
}
}
object Utils {

View File

@@ -6,26 +6,40 @@
# v6.6.3
###### 2025/05/02
###### 2025/05/13
* `新增` 版本历史功能, 可查看发行版本历史更新记录 (多语言) 与统计数据
* `新增` timers.keepAlive 方法 (已全局化), 用于保持脚本活跃状态
* `新增` engines.on('start/stop/error', callback) 等事件监听方法, 用于监听脚本引擎全局事件
* `新增` images.detectMultiColors 方法, 用于多点颜色校验 _[`issue #374`](http://issues.autojs6.com/374)_
* `修复` 主页文档标签显示在线文档时部分内容被系统导航栏遮挡的问题
* `修复` 部分设备代码编辑器空行显示方框字符的问题
* `修复` 主题色设置页面调色盘对话框可能无限叠加的问题
* `修复` 无障碍服务关闭时音量加键停止所有脚本功能失效的问题
* `修复` 定时任务页面编辑自定义广播内容时出现的输入法遮挡问题
* `修复` APK 文件类型信息对话框可能无法获取应用名称及 SDK 信息的问题
* `修复` Android 15 部分页面状态栏背景颜色可能无法动态跟随主题色的问题
* `修复` dialogs 模块无法正常使用 customView 属性的问题 _[`issue #364`](http://issues.autojs6.com/364)_
* `修复` 使用 JavaAdapter 时导致 ClassLoader 调用栈溢出的问题 _[`issue #376`](http://issues.autojs6.com/376)_
* `修复` console.setContentTextColor 方法导致日志字体颜色丢失默认值的问题 _[`issue #346`](http://issues.autojs6.com/346)_
* `修复` README.md 中部分语言日期格式不正确的问题
* `优化` 关于应用与开发者页面增加水平布局适配
* `优化` 主题色扩充适配范围并支持更多控件类型
* `优化` 主页抽屉在横向屏幕或超宽屏幕的宽度适应性
* `优化` 关于应用与开发者页面增加水平布局及小屏布局适配
* `优化` 设置页面对话框相关设置支持 "使用默认值" 菜单选项
* `优化` 文件管理器浮动按钮展开后点击其他区域可自动隐藏
* `优化` 打包单文件时自动读取并勾选已安装应用的声明权限 _[`issue #362`](http://issues.autojs6.com/362)_
* `优化` 已忽略更新记录及客户端模式连接地址记录支持清空操作
* `优化` 版本更新信息支持多语言显示 (与当前显示语言同步)
* `优化` 使用异步加载方式一定程度提升文件管理器列表滑动流畅性
* `优化` Gradle 构建脚本提升版本自适应能力 _[`discussion #369`](http://discussions.autojs6.com/369)_
* `依赖` 本地化 Material Dialogs 版本 0.9.6.0
* `依赖` 本地化 Material Date Time Picker 版本 4.2.3
* `依赖` 附加 Jsoup 版本 1.19.1
* `依赖` 附加 Material Progressbar 版本 1.4.2
* `依赖` 附加 Flexmark Java HTML to Markdown 版本 0.64.8
* `依赖` 升级 Gradle 版本 8.14-rc-1 -> 8.14-rc-2
* `依赖` 升级 Gradle 版本 8.14-rc-1 -> 8.14
* `依赖` 升级 Androidx Room 版本 2.7.0 -> 2.7.1
# v6.6.2

View File

@@ -6,26 +6,40 @@
# v6.6.3
###### 2025/05/02
###### 2025/05/13
* `新增` 版本历史功能, 可查看发行版本历史更新记录 (多语言) 与统计数据
* `新增` timers.keepAlive 方法 (已全局化), 用于保持脚本活跃状态
* `新增` engines.on('start/stop/error', callback) 等事件监听方法, 用于监听脚本引擎全局事件
* `新增` images.detectMultiColors 方法, 用于多点颜色校验 _[`issue #374`](http://issues.autojs6.com/374)_
* `修复` 主页文档标签显示在线文档时部分内容被系统导航栏遮挡的问题
* `修复` 部分设备代码编辑器空行显示方框字符的问题
* `修复` 主题色设置页面调色盘对话框可能无限叠加的问题
* `修复` 无障碍服务关闭时音量加键停止所有脚本功能失效的问题
* `修复` 定时任务页面编辑自定义广播内容时出现的输入法遮挡问题
* `修复` APK 文件类型信息对话框可能无法获取应用名称及 SDK 信息的问题
* `修复` Android 15 部分页面状态栏背景颜色可能无法动态跟随主题色的问题
* `修复` dialogs 模块无法正常使用 customView 属性的问题 _[`issue #364`](http://issues.autojs6.com/364)_
* `修复` 使用 JavaAdapter 时导致 ClassLoader 调用栈溢出的问题 _[`issue #376`](http://issues.autojs6.com/376)_
* `修复` console.setContentTextColor 方法导致日志字体颜色丢失默认值的问题 _[`issue #346`](http://issues.autojs6.com/346)_
* `修复` README.md 中部分语言日期格式不正确的问题
* `优化` 关于应用与开发者页面增加水平布局适配
* `优化` 主题色扩充适配范围并支持更多控件类型
* `优化` 主页抽屉在横向屏幕或超宽屏幕的宽度适应性
* `优化` 关于应用与开发者页面增加水平布局及小屏布局适配
* `优化` 设置页面对话框相关设置支持 "使用默认值" 菜单选项
* `优化` 文件管理器浮动按钮展开后点击其他区域可自动隐藏
* `优化` 打包单文件时自动读取并勾选已安装应用的声明权限 _[`issue #362`](http://issues.autojs6.com/362)_
* `优化` 已忽略更新记录及客户端模式连接地址记录支持清空操作
* `优化` 版本更新信息支持多语言显示 (与当前显示语言同步)
* `优化` 使用异步加载方式一定程度提升文件管理器列表滑动流畅性
* `优化` Gradle 构建脚本提升版本自适应能力 _[`discussion #369`](http://discussions.autojs6.com/369)_
* `依赖` 本地化 Material Dialogs 版本 0.9.6.0
* `依赖` 本地化 Material Date Time Picker 版本 4.2.3
* `依赖` 附加 Jsoup 版本 1.19.1
* `依赖` 附加 Material Progressbar 版本 1.4.2
* `依赖` 附加 Flexmark Java HTML to Markdown 版本 0.64.8
* `依赖` 升级 Gradle 版本 8.14-rc-1 -> 8.14-rc-2
* `依赖` 升级 Gradle 版本 8.14-rc-1 -> 8.14
* `依赖` 升级 Androidx Room 版本 2.7.0 -> 2.7.1
# v6.6.2