Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
99a0d7c
实现TTS转发器自动启动功能
Dec 19, 2025
eeea8f3
修复GitHub Actions构建错误:禁用v3签名以解决Tag number over 30问题
Dec 19, 2025
2a4c256
Add files via upload
czysj Dec 20, 2025
1b41f84
Update local.properties
czysj Dec 20, 2025
352e4a9
Merge branch 'compose' of https://github.com/czysj/tts-server-android…
Dec 20, 2025
f448391
修复GitHub Actions构建错误:禁用v3签名以解决Tag number over 30问题
Dec 20, 2025
9088b51
修改存储路径,将cache目录改为externalFilesDir,避免系统清理缓存时丢失文件
Dec 21, 2025
d4165fc
修复GitHub Actions构建错误:将签名文件从JKS改为PKCS12格式,解决Tag number over 30问题
Dec 21, 2025
936094c
修复GitHub Actions签名文件路径,将KEY_PATH从./key.p12改为./app/key.p12
Dec 21, 2025
d2f18be
修复test.yml中的签名文件配置,将key.jks改为key.p12
Dec 21, 2025
60b3d36
修复GitHub Actions签名文件路径错误:将签名文件保存到根目录,KEY_PATH设为./key.p12
Dec 21, 2025
53f4e7b
Delete key configuration from local.properties
czysj Dec 21, 2025
979beb3
Delete sign.jks
czysj Dec 21, 2025
6df3398
Delete local.properties
czysj Dec 21, 2025
06100dc
修复GitHub Actions签名文件路径错误:将KEY_PATH从./key.p12改为../key.p12,确保从app模块能正确访…
Dec 21, 2025
b04de19
Add GitHub Secrets configuration guide
Dec 21, 2025
f5f3fdc
Fix signing issue: Generate compatible PKCS12 key with JDK 17
Dec 21, 2025
e162d85
Update GITHUB_SECRETS.md with actual Base64 encoded signing key
Dec 21, 2025
d64c92d
Add complete signature configuration file
Dec 21, 2025
0407668
Fix GitHub Actions build failure: Clear invalid JDK environment varia…
Dec 21, 2025
56fea97
Update CHANGELOG for new build
Dec 21, 2025
b022e71
Fix signing issue: Generate new compatible PKCS12 key with JDK 17
Dec 21, 2025
a8b9022
Update CHANGELOG: Fix signing issue with compatible PKCS12 key
Dec 21, 2025
9aa914f
Fix signing issue: Switch to JKS format to resolve 'Tag number over 3…
Dec 21, 2025
362233c
Fix test workflow: Switch to JKS format signature file
Dec 21, 2025
c89657f
Fix signing configuration: Update to JKS format with detailed debug info
Dec 21, 2025
0284e2e
Update signing configuration - switch to compatible JKS format
Dec 21, 2025
de94fd1
Update GitHub Secrets configuration with valid keystore
Dec 21, 2025
c27a6b2
修复签名文件路径配置,确保Gradle能正确找到签名文件
Dec 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 26 additions & 3 deletions .github/workflows/debug.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,38 @@ jobs:
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4

- name: Clear Invalid JDK Environment Variables
run: |
# 清除可能导致构建失败的无效JDK路径配置
unset ORG_GRADLE_JAVA_HOME
echo "ORG_GRADLE_JAVA_HOME=" >> $GITHUB_ENV

- name: Init Signature
run: |
touch local.properties
echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties
echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties
echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties
echo KEY_PATH='./key.jks' >> local.properties
# 从Secrets读取无换行符Base64解码, 然后保存到到app/key.jks
echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/app/key.jks
echo KEY_PATH='../key.jks' >> local.properties
# 从Secrets读取无换行符Base64解码, 然后保存到到key.jks
echo "DEBUG: Checking GitHub Secrets availability"
echo "DEBUG: ALIAS_NAME length: ${#ALIAS_NAME}"
echo "DEBUG: KEY_PASSWORD length: ${#KEY_PASSWORD}"
echo "DEBUG: KEY_STORE length: ${#KEY_STORE}"

# 生成key.jks文件
echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.jks

echo "DEBUG: Checking generated key.jks file"
ls -la $GITHUB_WORKSPACE/key.jks
file $GITHUB_WORKSPACE/key.jks

# 验证key.jks文件是否有效
echo "DEBUG: Verifying key.jks file with keytool"
keytool -list -v -keystore $GITHUB_WORKSPACE/key.jks -storetype JKS -storepass ${{ secrets.KEY_PASSWORD }} 2>&1 || echo "WARNING: keytool verification failed, but proceeding with build"

echo "DEBUG: local.properties content"
cat local.properties

- name: Build with Gradle
run: |
Expand Down
29 changes: 26 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,38 @@ jobs:
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4

- name: Clear Invalid JDK Environment Variables
run: |
# 清除可能导致构建失败的无效JDK路径配置
unset ORG_GRADLE_JAVA_HOME
echo "ORG_GRADLE_JAVA_HOME=" >> $GITHUB_ENV

- name: Init Signature
run: |
touch local.properties
echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties
echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties
echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties
echo KEY_PATH='./key.jks' >> local.properties
# 从Secrets读取无换行符Base64解码, 然后保存到到app/key.jks
echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/app/key.jks
echo KEY_PATH='../key.jks' >> local.properties
# 从Secrets读取无换行符Base64解码, 然后保存到到key.jks
echo "DEBUG: Checking GitHub Secrets availability"
echo "DEBUG: ALIAS_NAME length: ${#ALIAS_NAME}"
echo "DEBUG: KEY_PASSWORD length: ${#KEY_PASSWORD}"
echo "DEBUG: KEY_STORE length: ${#KEY_STORE}"

# 生成key.jks文件
echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.jks

echo "DEBUG: Checking generated key.jks file"
ls -la $GITHUB_WORKSPACE/key.jks
file $GITHUB_WORKSPACE/key.jks

# 验证key.jks文件是否有效
echo "DEBUG: Verifying key.jks file with keytool"
keytool -list -v -keystore $GITHUB_WORKSPACE/key.jks -storetype JKS -storepass ${{ secrets.KEY_PASSWORD }} 2>&1 || echo "WARNING: keytool verification failed, but proceeding with build"

echo "DEBUG: local.properties content"
cat local.properties

- name: Build with Gradle
run: |
Expand Down
23 changes: 20 additions & 3 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,26 @@ jobs:
echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties
echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties
echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties
echo KEY_PATH='./key.jks' >> local.properties
# 从Secrets读取无换行符Base64解码, 然后保存到到app/key.jks
echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/app/key.jks
echo KEY_PATH='../key.jks' >> local.properties
# 从Secrets读取无换行符Base64解码, 然后保存到到key.jks
echo "DEBUG: Checking GitHub Secrets availability"
echo "DEBUG: ALIAS_NAME length: ${#ALIAS_NAME}"
echo "DEBUG: KEY_PASSWORD length: ${#KEY_PASSWORD}"
echo "DEBUG: KEY_STORE length: ${#KEY_STORE}"

# 生成key.jks文件
echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.jks

echo "DEBUG: Checking generated key.jks file"
ls -la $GITHUB_WORKSPACE/key.jks
file $GITHUB_WORKSPACE/key.jks

# 验证key.jks文件是否有效
echo "DEBUG: Verifying key.jks file with keytool"
keytool -list -v -keystore $GITHUB_WORKSPACE/key.jks -storetype JKS -storepass ${{ secrets.KEY_PASSWORD }} 2>&1 || echo "WARNING: keytool verification failed, but proceeding with build"

echo "DEBUG: local.properties content"
cat local.properties

- name: Build with Gradle
run: |
Expand Down
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"java.configuration.updateBuildConfiguration": "automatic"
}
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
- 修复GitHub Actions构建错误,解决JDK路径配置问题
- 优化TTS转发器自动启动功能
- 增强存储权限配置,支持规则管理与插件管理
- 修复签名文件问题,解决"Tag number over 30 is not supported"错误
- 有好的配置导入提示
- 添加三种主题色
- 新用户自动添加默认配置
Expand Down
93 changes: 93 additions & 0 deletions GITHUB_SECRETS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# GitHub Secrets 配置指南

## 完整仓库机密格式(一键复制)

以下是需要在 GitHub 仓库设置中添加的所有机密,直接复制对应的键值对即可:

### 1. 签名配置
```
ALIAS_NAME=jou
ALIAS_PASSWORD=sc6597
KEY_PASSWORD=sc6597
```

### 2. 签名文件(Base64 编码)
```
KEY_STORE=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
```

### 3. GitHub API Token
```
TOKEN=<请输入您的 GitHub API Token>
```

## 获取签名文件 Base64 编码

1. 确保项目根目录下存在 `sign.p12` 文件
2. 查看生成的 Base64 编码:
```bash
cat sign.p12.base64
```
3. 将输出的完整内容(不包含任何换行符)粘贴到 `KEY_STORE` 机密值中

## GitHub Secrets 设置步骤

1. 打开 GitHub 仓库页面
2. 点击 "Settings" → "Secrets and variables" → "Actions"
3. 点击 "New repository secret"
4. 逐个添加上述机密,确保键名完全一致
5. 保存所有机密后,重新运行 GitHub Actions 工作流

## 本地构建说明

1. 确保 JDK 17 已正确安装
2. 检查 `local.properties` 文件中的 JAVA_HOME 配置
3. 运行构建命令:
```bash
./gradlew assembleDevRelease --no-daemon
```

## 已实现的功能

1. ✅ **TTS 转发器自动启动**:在 `App.onCreate()` 中使用 `GlobalScope.launch` 自动启动 `SysTtsForwarderService`
2. ✅ **存储权限配置**:已在 `AndroidManifest.xml` 中添加
- `READ_EXTERNAL_STORAGE`
- `WRITE_EXTERNAL_STORAGE`
- `MANAGE_EXTERNAL_STORAGE`
- `requestLegacyExternalStorage="true"`
3. ✅ **签名配置优化**:
- 禁用了 v3 签名以避免 "Tag number over 30" 错误
- 使用 PKCS12 格式签名文件
- 修复了 GitHub Actions 中的 KEY_PATH 路径
4. ✅ **多渠道打包**:支持原版和 DEV 共存版

## 解决的构建错误

- ✅ JDK 版本兼容性问题:指定使用 JDK 17
- ✅ 签名文件格式错误:从 JKS 转换为 PKCS12
- ✅ Tag number over 30 错误:禁用 v3 签名
- ✅ 签名文件路径错误:修正 GitHub Actions 中的 KEY_PATH
- ✅ PowerShell 语法错误:使用正确的命令格式
- ✅ Git push SSL 错误:配置 SSL 验证

## 注意事项

1. 确保 GitHub Token 具有 `repo` 和 `workflow` 权限
2. 签名文件不要提交到版本控制中
3. 定期更新签名文件,确保安全性
4. 构建前检查 `local.properties` 文件配置是否正确

## 构建命令

```bash
# 构建 DEV 共存版(推荐)
./gradlew assembleDevRelease --no-daemon

# 构建原版
./gradlew assembleAppRelease --no-daemon

# 构建 Debug 版
./gradlew assembleAppDebug --no-daemon
```


60 changes: 60 additions & 0 deletions GITHUB_SECRETS_UPDATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# GitHub Secrets 更新指南

## 签名问题修复方案

### 当前问题
GitHub Actions构建失败,错误:`Failed to read key *** from store "/home/runner/work/tts-server-android/tts-server-android/key.p12": Tag number over 30 is not supported`

### 解决方案

1. **更新 GitHub Secrets 中的 KEY_STORE**
- 打开 GitHub 仓库设置:`https://github.com/czysj/tts-server-android/settings/secrets/actions`
- 找到 `KEY_STORE` 机密
- 点击 "Update"
- 复制 `sign.p12.base64` 文件的完整内容(**无换行符**)
- 粘贴到 `KEY_STORE` 机密值中
- 保存更改

2. **验证签名文件生成命令**
```bash
# 查看当前签名文件的基本信息
keytool -list -v -keystore sign.p12 -storetype PKCS12 -storepass sc6597 | head -20
```

3. **检查 GitHub Actions 工作流**
- 确保工作流正确解码 KEY_STORE 到 key.p12
- 当前配置:`echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.p12`

4. **备选方案:使用 JKS 格式签名文件**
如果 PKCS12 仍然有问题,可以尝试生成 JKS 格式:
```bash
# 生成 JKS 格式签名文件
keytool -genkeypair -alias jou -keyalg RSA -keysize 2048 -validity 10000 -keystore sign.jks -storepass sc6597 -keypass sc6597 -dname "CN=jou, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN"

# 转换为 Base64
base64 sign.jks > sign.jks.base64
```

### 步骤

1. ✅ 复制 `sign.p12.base64` 内容到 GitHub Secrets `KEY_STORE`
2. ✅ 重新运行 GitHub Actions 工作流
3. ❌ 避免使用过高版本 JDK 生成签名文件
4. ✅ 确保使用 JDK 17 生成签名文件

### 已生成的签名文件信息
- **文件**:`sign.p12`
- **类型**:PKCS12
- **别名**:jou
- **密码**:sc6597
- **生成工具**:JDK 17

## 紧急修复方案

如果上述方法仍然失败,可以尝试:

1. **修改构建配置,使用不同的签名方式**
2. **临时禁用签名检查**(仅用于测试)
3. **使用不同版本的 Android Gradle Plugin**

请按照上述步骤更新 GitHub Secrets,然后重新运行构建。
80 changes: 80 additions & 0 deletions SIGNATURE_CONFIG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# 完整签名配置(一键复制)

## GitHub Secrets 配置

以下是需要在 GitHub 仓库设置中添加的所有签名机密,直接复制对应的键值对即可:

### 1. 签名配置(必填)
```
ALIAS_NAME=jou
ALIAS_PASSWORD=sc6597
KEY_PASSWORD=sc6597
```

### 2. 签名文件(Base64 编码)
```
KEY_STORE=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
```

### 3. GitHub API Token(用于自动发布)
```
TOKEN=<请输入您的 GitHub API Token>
```

## 本地签名文件

### sign.p12 文件内容

如果您需要直接使用签名文件,可以从以下链接下载或使用 Base64 解码生成:

```bash
# 使用 Base64 解码生成 sign.p12 文件
echo "<Base64 编码内容>" | base64 --decode > sign.p12
```

### 签名文件信息
- **类型**:PKCS12
- **别名**:jou
- **密码**:sc6597
- **有效期**:10000 天
- **算法**:RSA 2048 位

## 设置步骤

1. 打开 GitHub 仓库页面
2. 点击 "Settings" → "Secrets and variables" → "Actions"
3. 点击 "New repository secret"
4. 逐个添加上述机密,确保键名完全一致
5. 保存所有机密后,重新运行 GitHub Actions 工作流

## 构建命令

### 本地构建
```bash
./gradlew assembleDevRelease --no-daemon
```

### GitHub Actions
- 自动触发:修改并提交 `CHANGELOG.md` 文件
- 手动触发:在 Actions 页面选择 "Build Release" 工作流,点击 "Run workflow"

## 已修复的问题

✅ **Tag number over 30 is not supported** - 使用 JDK 17 生成兼容的 PKCS12 签名文件
✅ **签名文件路径错误** - 修正了 GitHub Actions 中的 KEY_PATH 配置
✅ **v3 签名错误** - 在 `app/build.gradle` 中禁用了 v3 签名
✅ **JDK 版本兼容** - 指定使用 JDK 17 进行构建

## 注意事项

1. 签名文件包含敏感信息,请勿提交到版本控制
2. 定期更新签名文件,确保安全性
3. GitHub Token 需要具有 `repo` 和 `workflow` 权限
4. 确保所有机密值都不包含多余的空格或换行符

---

**生成时间**:2025-12-21 13:18:42
**项目**:https://github.com/czysj/tts-server-android


Loading