This commit is contained in:
parent
05ad191913
commit
d5a31e5366
@ -56,8 +56,18 @@ import sys, re
|
|||||||
path = sys.argv[1]
|
path = sys.argv[1]
|
||||||
src = open(path, encoding='utf-8').read()
|
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 { (注意 Kotlin 嵌套花括号)
|
||||||
# 简化: 找 "android {" 之后的第一个 "buildTypes {" 缩进位置
|
|
||||||
m = re.search(r'(\n[ \t]*)(buildTypes\s*\{)', src)
|
m = re.search(r'(\n[ \t]*)(buildTypes\s*\{)', src)
|
||||||
if not m:
|
if not m:
|
||||||
print('[signing] 未找到 buildTypes 块, 中止', file=sys.stderr)
|
print('[signing] 未找到 buildTypes 块, 中止', file=sys.stderr)
|
||||||
@ -70,14 +80,14 @@ signing_block = (
|
|||||||
f'{inner_indent}signingConfigs {{\n'
|
f'{inner_indent}signingConfigs {{\n'
|
||||||
f'{inner_indent} create("release") {{\n'
|
f'{inner_indent} create("release") {{\n'
|
||||||
f'{inner_indent} val keystorePropertiesFile = rootProject.file("keystore.properties")\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} 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} }}\n'
|
||||||
f'{inner_indent} keyAlias = keystoreProperties["keyAlias"] as String\n'
|
f'{inner_indent} keyAlias = keystoreProperties["keyAlias"] as? String ?: ""\n'
|
||||||
f'{inner_indent} keyPassword = keystoreProperties["password"] 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} storeFile = file(keystoreProperties["storeFile"] as? String ?: "")\n'
|
||||||
f'{inner_indent} storePassword = keystoreProperties["password"] as String\n'
|
f'{inner_indent} storePassword = keystoreProperties["password"] as? String ?: ""\n'
|
||||||
f'{inner_indent} }}\n'
|
f'{inner_indent} }}\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)
|
src = src.replace(m.group(0), signing_block + m.group(0), 1)
|
||||||
|
|
||||||
# 让 buildTypes 里的 release 使用该 signingConfig
|
# 让 buildTypes 里的 release 使用该 signingConfig
|
||||||
# 找到 "getByName(\"release\") {" 或 "release {" 并注入 signingConfig
|
|
||||||
rel = re.search(r'(\n[ \t]*)(getByName\("release"\)\s*\{)', src)
|
rel = re.search(r'(\n[ \t]*)(getByName\("release"\)\s*\{)', src)
|
||||||
if not rel:
|
if not rel:
|
||||||
rel = re.search(r'(\n[ \t]*)(release\s*\{)', src)
|
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)
|
src = src.replace(rel.group(0), rel.group(0) + inject, 1)
|
||||||
|
|
||||||
open(path, 'w', encoding='utf-8').write(src)
|
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
|
PYEOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user