修改签名脚本
Some checks failed
Android Build & Publish / build-android (push) Failing after 39m54s

This commit is contained in:
cheney 2026-08-08 08:28:49 +08:00
parent 05ad191913
commit d5a31e5366

View File

@ -56,8 +56,18 @@ import sys, re
path = sys.argv[1]
src = open(path, encoding='utf-8').read()
# Gradle Kotlin DSL 默认 import java.util.* (Properties 短名可用), 但没有 java.io.*
# 因此顶部需补 import java.io.FileInputStream, 注入块内全部用短名
if 'import java.io.FileInputStream' not in src:
# 在第一个 import 之后插入; 若无 import 则插到文件顶部
imp = re.search(r'^import .*$', src, flags=re.M)
new_import = 'import java.io.FileInputStream\n'
if imp:
src = src[:imp.end()] + '\n' + new_import + src[imp.end():]
else:
src = new_import + src
# 定位 android { 块内的 buildTypes { (注意 Kotlin 嵌套花括号)
# 简化: 找 "android {" 之后的第一个 "buildTypes {" 缩进位置
m = re.search(r'(\n[ \t]*)(buildTypes\s*\{)', src)
if not m:
print('[signing] 未找到 buildTypes 块, 中止', file=sys.stderr)
@ -70,14 +80,14 @@ signing_block = (
f'{inner_indent}signingConfigs {{\n'
f'{inner_indent} create("release") {{\n'
f'{inner_indent} val keystorePropertiesFile = rootProject.file("keystore.properties")\n'
f'{inner_indent} val keystoreProperties = java.util.Properties()\n'
f'{inner_indent} val keystoreProperties = Properties()\n'
f'{inner_indent} if (keystorePropertiesFile.exists()) {{\n'
f'{inner_indent} keystoreProperties.load(java.io.FileInputStream(keystorePropertiesFile))\n'
f'{inner_indent} keystoreProperties.load(FileInputStream(keystorePropertiesFile))\n'
f'{inner_indent} }}\n'
f'{inner_indent} keyAlias = keystoreProperties["keyAlias"] as String\n'
f'{inner_indent} keyPassword = keystoreProperties["password"] as String\n'
f'{inner_indent} storeFile = file(keystoreProperties["storeFile"] as String)\n'
f'{inner_indent} storePassword = keystoreProperties["password"] as String\n'
f'{inner_indent} keyAlias = keystoreProperties["keyAlias"] as? String ?: ""\n'
f'{inner_indent} keyPassword = keystoreProperties["password"] as? String ?: ""\n'
f'{inner_indent} storeFile = file(keystoreProperties["storeFile"] as? String ?: "")\n'
f'{inner_indent} storePassword = keystoreProperties["password"] as? String ?: ""\n'
f'{inner_indent} }}\n'
f'{inner_indent}}}\n'
)
@ -86,7 +96,6 @@ signing_block = (
src = src.replace(m.group(0), signing_block + m.group(0), 1)
# 让 buildTypes 里的 release 使用该 signingConfig
# 找到 "getByName(\"release\") {" 或 "release {" 并注入 signingConfig
rel = re.search(r'(\n[ \t]*)(getByName\("release"\)\s*\{)', src)
if not rel:
rel = re.search(r'(\n[ \t]*)(release\s*\{)', src)
@ -96,7 +105,7 @@ if rel:
src = src.replace(rel.group(0), rel.group(0) + inject, 1)
open(path, 'w', encoding='utf-8').write(src)
print('[signing] build.gradle.kts 已注入 signingConfigs + release signingConfig')
print('[signing] build.gradle.kts 已注入 import + signingConfigs + release signingConfig')
PYEOF
fi