|
| 1 | +这次的错误是因为 Bash 变量名的限制:环境变量名中不能包含横杠 (-)。 |
| 2 | + |
| 3 | +在执行 export "CC_aarch64-linux-android=..." 时,Bash 认为这是一个非法的标识符。Rust 的 cc-rs 库实际上支持两种环境变量格式,而我们应该使用全大写且带下划线的标准格式(即 CC_AARCH64_LINUX_ANDROID)。 |
| 4 | + |
| 5 | +核心修复方案 |
| 6 | +移除带横杠的变量名:只保留符合 Shell 规范的 TARGET_UPPER 变量(全大写 + 下划线)。 |
| 7 | + |
| 8 | +修复矩阵引用:确保所有 export 语句都指向有效的标识符。 |
| 9 | + |
| 10 | +以下是修复后的最终完整 YAML: |
| 11 | + |
| 12 | +YAML |
1 | 13 | name: Build Rustic for Android |
2 | 14 |
|
3 | 15 | on: |
@@ -41,32 +53,34 @@ jobs: |
41 | 53 | run: | |
42 | 54 | set -euo pipefail |
43 | 55 |
|
44 | | - # 1. 定位 NDK 工具链路径 |
| 56 | + # 1. 定位 NDK 工具链 |
45 | 57 | NDK_DIR="${ANDROID_NDK_LATEST_HOME}" |
46 | 58 | TOOLCHAIN="$NDK_DIR/toolchains/llvm/prebuilt/linux-x86_64" |
47 | 59 | |
48 | | - # 2. 准备变量 |
| 60 | + # 2. 构造符合 Shell 规范的变量名 (aarch64-linux-android -> AARCH64_LINUX_ANDROID) |
| 61 | + # 这样可以绕过 "not a valid identifier" 的错误 |
49 | 62 | TARGET_UPPER=$(echo ${{ matrix.rust_target }} | tr '[:lower:]' '[:upper:]' | tr '-' '_') |
| 63 | + |
50 | 64 | CLANG_BIN="$TOOLCHAIN/bin/${{ matrix.ndk_target }}${ANDROID_API}-clang" |
51 | 65 | AR_BIN="$TOOLCHAIN/bin/llvm-ar" |
52 | 66 | |
| 67 | + echo "Building for: ${{ matrix.rust_target }}" |
53 | 68 | echo "Using Clang: $CLANG_BIN" |
54 | | - echo "Using AR: $AR_BIN" |
55 | 69 |
|
56 | | - # 3. 注入环境变量 (覆盖所有可能的编译器查找方式) |
57 | | - # 修复 ring 库找不到编译器的问题 |
58 | | - export "CC_${{ matrix.rust_target }}=$CLANG_BIN" |
| 70 | + # 3. 注入环境变量 |
| 71 | + # CC_<target> 和 AR_<target> 是 cc-rs 识别的标准格式 |
59 | 72 | export "CC_$TARGET_UPPER=$CLANG_BIN" |
60 | | - export "AR_${{ matrix.rust_target }}=$AR_BIN" |
61 | 73 | export "AR_$TARGET_UPPER=$AR_BIN" |
| 74 | + |
| 75 | + # Cargo 寻找链接器的标准格式 |
62 | 76 | export "CARGO_TARGET_${TARGET_UPPER}_LINKER=$CLANG_BIN" |
63 | 77 | |
64 | | - # 额外增加通用变量作为保底 |
| 78 | + # 备用全局变量 |
65 | 79 | export CC="$CLANG_BIN" |
66 | 80 | export AR="$AR_BIN" |
67 | 81 |
|
68 | 82 | # 4. 执行编译 |
69 | | - # 使用 --locked 确保依赖版本与原始项目一致 |
| 83 | + # --locked 确保依赖锁定,避免环境差异导致编译失败 |
70 | 84 | cargo build --release --target ${{ matrix.rust_target }} --bin rustic |
71 | 85 |
|
72 | 86 | # 5. 裁剪体积 |
|
0 commit comments