Skip to content

Commit a4a7a34

Browse files
committed
2025.1220
1 parent 02bdc7a commit a4a7a34

File tree

1 file changed

+47
-4
lines changed

1 file changed

+47
-4
lines changed

.github/actions/build-android/action.yml

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,12 +116,55 @@ runs:
116116
- name: Install Android build tools
117117
shell: bash
118118
run: |
119+
set -euo pipefail
120+
121+
SDK_ROOT="${ANDROID_SDK_ROOT:-${ANDROID_HOME:-}}"
122+
if [ -z "${SDK_ROOT}" ]; then
123+
echo "错误:ANDROID_SDK_ROOT/ANDROID_HOME 未设置,无法安装 NDK。"
124+
exit 1
125+
fi
126+
127+
# 从项目配置读取 ndkVersion,避免 CI 与项目不一致导致找不到 clang
128+
NDK_VERSION="$(grep -E '^[[:space:]]*ndkVersion[[:space:]]*=' -m 1 android/app/build.gradle | sed -E 's/.*['\''"]([^'\''"]+)['\''"].*/\1/')"
129+
if [ -z "${NDK_VERSION}" ]; then
130+
echo "错误:未能从 android/app/build.gradle 解析 ndkVersion。"
131+
exit 1
132+
fi
133+
134+
echo "Installing Android SDK packages:"
135+
echo "- build-tools;29.0.3"
136+
echo "- ndk;${NDK_VERSION}"
137+
echo "- cmake;3.22.1"
138+
139+
# sdkmanager 在 pipefail 下可能因为 yes 的 SIGPIPE 导致误判失败,这里临时关闭 pipefail
119140
set +o pipefail
120-
# 与 android/app/build.gradle 中的 ndkVersion 保持一致
121-
yes | sdkmanager "build-tools;29.0.3" "ndk;27.0.12077973" "cmake;3.22.1"
141+
yes | sdkmanager --sdk_root="${SDK_ROOT}" "build-tools;29.0.3" "ndk;${NDK_VERSION}" "cmake;3.22.1"
122142
set -o pipefail
123-
echo "ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT" >> $GITHUB_ENV
124-
echo "ANDROID_HOME=$ANDROID_HOME" >> $GITHUB_ENV
143+
144+
NDK_DIR="${SDK_ROOT}/ndk/${NDK_VERSION}"
145+
if [ ! -d "${NDK_DIR}" ]; then
146+
echo "错误:NDK 目录不存在:${NDK_DIR}"
147+
echo "当前 ${SDK_ROOT}/ndk 目录:"
148+
ls -la "${SDK_ROOT}/ndk" || true
149+
exit 1
150+
fi
151+
152+
CLANG_PATH="$(find "${NDK_DIR}/toolchains/llvm/prebuilt" -maxdepth 3 -type f -name clang -print -quit 2>/dev/null || true)"
153+
if [ -z "${CLANG_PATH}" ]; then
154+
echo "错误:Android NDK clang 未找到(Flutter 需要它):${NDK_DIR}"
155+
echo "toolchains/llvm/prebuilt 目录:"
156+
ls -la "${NDK_DIR}/toolchains/llvm/prebuilt" || true
157+
exit 1
158+
fi
159+
echo "NDK clang: ${CLANG_PATH}"
160+
161+
{
162+
echo "ANDROID_SDK_ROOT=${SDK_ROOT}"
163+
echo "ANDROID_HOME=${SDK_ROOT}"
164+
echo "ANDROID_NDK_HOME=${NDK_DIR}"
165+
echo "ANDROID_NDK_ROOT=${NDK_DIR}"
166+
echo "NDK_HOME=${NDK_DIR}"
167+
} >> "$GITHUB_ENV"
125168
126169
- name: Build and Sign Android
127170
id: build

0 commit comments

Comments
 (0)