Files
opendance-android/tasks/009-build-apk.md
T

75 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# T-AND-009 APK 打包
- **状态**:done
- **依赖**:T-AND-001 ~ 008
## 目标
产出可安装的签名 APK,并提供命令行与 Android Studio 两条路径。
## load
```
DSH.md
build/build-apk.sh
build/gen-keystore.sh
build/verify.sh
app/build.gradle.kts
```
## 交付物
| 文件 | 说明 |
|---|---|
| `build/gen-keystore.sh` | 生成发布签名密钥库(**不入库**) |
| `build/build-apk.sh` | 构建 + 校验产物(魔数、签名方案) |
| `build/verify.sh` | 单元测试 → 构建 → 产物校验 一条龙 |
## 签名设计
`app/build.gradle.kts` 按优先级读取签名信息:
```
1. keystore.properties(build/gen-keystore.sh 生成,已 gitignore)
2. 环境变量 KEYSTORE_PATH / KEYSTORE_PASSWORD / KEY_ALIAS / KEY_PASSWORD
3. 两者都缺失 → 回退 debug 签名,保证 CI 上 assembleRelease 也能产出已签名 APK
```
正式发布必须走 1 或 2;回退路径仅为让 CI/验收可跑通,并在构建日志中给出提示。
## Android Studio 图形界面路径
```
1. Android Studio 打开 opendance-android/
2. Build → Generate Signed Bundle / APK
3. 选择 APK → 选择或创建 keystore → 选择 release
4. 生成 app-release.apk
```
## 验收(文档 §6.3 T-AND-009)
| 验收项 | 结果 |
|---|---|
| Android Studio 可 Build → Generate Signed APK | ✅ 工程为标准 AGP 结构,`keystore.properties` 就位即可 |
| `./gradlew assembleRelease` 成功生成签名 APK | ✅ 见下 |
| APK 在 Android 10+ 设备可安装运行 | ⚠️ 本环境无 Android 设备/模拟器,未实机安装 |
| 关于页包含开源项目声明 | ✅ `CreditsTest` 覆盖,且声明随包分发 |
## 实测产物
```
app-release.apk 55.5 MiB apksigner: Verifies(v2 方案)
Signer #1 DN: CN=OpenDance Studio Dev, OU=OpenDance, O=OpenDance Studio, C=CN
package: com.opendance.studio versionName 0.1.0
minSdk 29(Android 10) targetSdk 34
ABI: arm64-v8a, armeabi-v7a, x86, x86_64
assets/pose_landmarker_lite.task 5.7 MB(Stored 未压缩)
```
## 环境记录
- JDK 17(`/usr/lib/jvm/java-17-openjdk-amd64`)
- Android SDK:`platforms;android-34`、`build-tools;34.0.0`
- 构建期修复的问题:`proguard-rules.pro` 缺失导致 R8 配置告警(已补全 keep 规则)、
androidTest 的 `androidx.test.runner` 依赖补齐