This commit is contained in:
oneao committed 2026-01-25 22:18:27 +08:00
1 parent 500fab7a80
commit 8f3f6982db
54 files changed
+2076 -1877

No files matched your search

@@ -0,0 +1,47 @@
// plugins/withAndroidSignature.js
const fs = require('node:fs')
const path = require('node:path')
const { withAppBuildGradle } = require('expo/config-plugins')
module.exports = function withAndroidSignature(config) {
return withAppBuildGradle(config, (config) => {
if (config.modResults.language === 'groovy') {
config.modResults.contents = setAndroidSignature(config.modResults.contents)
}
else {
throw new Error('如果不是 groovy,则无法在 app/build.gradle 中设置 signingConfigs')
}
return config
})
}
function setAndroidSignature(appBuildGradle) {
if (!fs.existsSync(path.resolve(__dirname, '../credentials/credentials.json'))) {
console.warn('警告:没有设置正式版本的 Android Keystore 文件,因为 credentials.json 不存在。')
return appBuildGradle
}
const info = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../credentials/credentials.json'), { encoding: 'utf8' }))
// 使用正则表达式插入签名信息
let output = appBuildGradle.replace(
/(signingConfigs\s*\{)/,
`$1
release {
storeFile file(${JSON.stringify(path.resolve(__dirname, '../credentials/oneao-android.keystore'))})
storePassword ${JSON.stringify(info.android.keystore.keystorePassword)}
keyAlias ${JSON.stringify(info.android.keystore.keyAlias)}
keyPassword ${JSON.stringify(info.android.keystore.keyPassword)}
}`,
)
// 使用正则表达式替换 signingConfig
output = output.replace(
/(release\s*\{)[^}]*?signingConfig\s+signingConfigs\.debug/,
`$1
signingConfig signingConfigs.release
`,
)
return output
}