适配内网仓库模型分片
This commit is contained in:
@@ -1 +0,0 @@
|
|||||||
app/src/main/assets/face_models/*.csta filter=lfs diff=lfs merge=lfs -text
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
|
._codex_tmp/
|
||||||
.idea/
|
.idea/
|
||||||
.gradle/
|
.gradle/
|
||||||
*.iml
|
*.iml
|
||||||
@@ -9,3 +10,4 @@ sdk-demo/
|
|||||||
*.apk
|
*.apk
|
||||||
*.ap_
|
*.ap_
|
||||||
keystore/
|
keystore/
|
||||||
|
app/src/main/assets/face_models/face_recognizer.csta
|
||||||
|
|||||||
@@ -37,15 +37,24 @@ build.sh 无 Gradle 手动构建脚本
|
|||||||
- `platforms/android-28/android.jar`
|
- `platforms/android-28/android.jar`
|
||||||
- `build-tools/34.0.0`
|
- `build-tools/34.0.0`
|
||||||
- JDK 8 或兼容 `javac --release 8` 的 JDK
|
- JDK 8 或兼容 `javac --release 8` 的 JDK
|
||||||
- Git LFS(仓库中的 SeetaFace6 `.csta` 模型通过 LFS 管理)
|
|
||||||
- Android SDK platform-tools,用于 `adb install`
|
- Android SDK platform-tools,用于 `adb install`
|
||||||
|
|
||||||
|
内网仓库限制单文件最大 50MB,因此约 98MB 的
|
||||||
|
`face_recognizer.csta` 保存为 `model-parts/` 下的四个分片。
|
||||||
|
`build.sh` 会在编译前自动校验 SHA-256 并恢复完整模型,无需手动合并。
|
||||||
|
|
||||||
## 构建 APK
|
## 构建 APK
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
bash build.sh
|
bash build.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
如果只需要恢复或校验人脸模型,可单独执行:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
bash scripts/restore-face-models.sh
|
||||||
|
```
|
||||||
|
|
||||||
构建产物:
|
构建产物:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:3cefce29d2ceb6fd95153d67c11f24ce08746e1877478bacaa5ae5d333a0a670
|
|
||||||
size 102551956
|
|
||||||
@@ -42,6 +42,9 @@ echo "Platform: android-28"
|
|||||||
echo "Project: $PROJECT"
|
echo "Project: $PROJECT"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
# ---- 恢复超过 Git 单文件限制的人脸模型 ----
|
||||||
|
"$PROJECT/scripts/restore-face-models.sh"
|
||||||
|
|
||||||
# ---- Debug 签名证书 ----
|
# ---- Debug 签名证书 ----
|
||||||
if [ ! -f "$KEYSTORE" ]; then
|
if [ ! -f "$KEYSTORE" ]; then
|
||||||
echo "未找到 debug keystore,正在生成: $KEYSTORE"
|
echo "未找到 debug keystore,正在生成: $KEYSTORE"
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Executable
+51
@@ -0,0 +1,51 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# 将 Git 中的小于 50MB 分片恢复为 SeetaFace6 识别模型。
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
PROJECT_DIR=$(CDPATH= cd -- "$(dirname "$0")/.." && pwd)
|
||||||
|
MODEL_FILE="$PROJECT_DIR/app/src/main/assets/face_models/face_recognizer.csta"
|
||||||
|
PART_DIR="$PROJECT_DIR/model-parts"
|
||||||
|
PART_PATTERN="$PART_DIR/face_recognizer.csta.part-"
|
||||||
|
EXPECTED_SHA256="3cefce29d2ceb6fd95153d67c11f24ce08746e1877478bacaa5ae5d333a0a670"
|
||||||
|
|
||||||
|
sha256_file() {
|
||||||
|
if command -v sha256sum >/dev/null 2>&1; then
|
||||||
|
sha256sum "$1" | awk '{print $1}'
|
||||||
|
elif command -v shasum >/dev/null 2>&1; then
|
||||||
|
shasum -a 256 "$1" | awk '{print $1}'
|
||||||
|
else
|
||||||
|
echo "错误:系统缺少 sha256sum 或 shasum,无法校验模型。" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -f "$MODEL_FILE" ]; then
|
||||||
|
CURRENT_SHA256=$(sha256_file "$MODEL_FILE")
|
||||||
|
if [ "$CURRENT_SHA256" = "$EXPECTED_SHA256" ]; then
|
||||||
|
echo "人脸识别模型已存在且校验通过。"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "检测到损坏或版本不匹配的人脸识别模型,将从分片重新恢复。"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! ls "${PART_PATTERN}"* >/dev/null 2>&1; then
|
||||||
|
echo "错误:未找到人脸识别模型分片:${PART_PATTERN}*" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$(dirname "$MODEL_FILE")"
|
||||||
|
TEMP_FILE=$(mktemp "${MODEL_FILE}.tmp.XXXXXX")
|
||||||
|
trap 'rm -f "$TEMP_FILE"' EXIT HUP INT TERM
|
||||||
|
|
||||||
|
cat "${PART_PATTERN}"* > "$TEMP_FILE"
|
||||||
|
ACTUAL_SHA256=$(sha256_file "$TEMP_FILE")
|
||||||
|
if [ "$ACTUAL_SHA256" != "$EXPECTED_SHA256" ]; then
|
||||||
|
echo "错误:模型分片合并后的 SHA-256 校验失败。" >&2
|
||||||
|
echo "期望:$EXPECTED_SHA256" >&2
|
||||||
|
echo "实际:$ACTUAL_SHA256" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mv "$TEMP_FILE" "$MODEL_FILE"
|
||||||
|
trap - EXIT HUP INT TERM
|
||||||
|
echo "人脸识别模型恢复完成:$MODEL_FILE"
|
||||||
Reference in New Issue
Block a user