# 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(本地安装路径,示例 ``) - Android SDK: `platforms;android-34`、`build-tools;34.0.0` - 构建期修复的问题:`proguard-rules.pro` 缺失导致 R8 配置告警(已补全 keep 规则)、 androidTest 的 `androidx.test.runner` 依赖补齐