fix(android/kernel): 补 -checklinkname=0 ldflags + JDK 自动探测,构建出 40MB libbox.aar
对齐 sing-box build_libbox sharedFlags 的 -ldflags(含 -checklinkname=0 放行 badlinkname 的 //go:linkname;-trimpath/-buildvcs=false/版本戳); JDK 自动选 Android Studio JBR(macOS /usr/bin/javac 仅桩)。Task 2 完成: 三 ABI(arm64/armeabi-v7a/x86_64) libgojni.so 齐。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -84,6 +84,22 @@ else
|
|||||||
printf '⚠ 未设置 ANDROID_NDK_HOME / ANDROID_HOME,gomobile init 可能失败\n' >&2
|
printf '⚠ 未设置 ANDROID_NDK_HOME / ANDROID_HOME,gomobile init 可能失败\n' >&2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# ── JDK(gomobile bind 末段要 javac/jar 编译 Java 绑定)─────────────────────────
|
||||||
|
# macOS 的 /usr/bin/javac 仅为桩(无系统 JDK 时报 "Unable to locate a Java Runtime")。
|
||||||
|
# 若未显式设 JAVA_HOME,优先用 Android Studio 自带 JBR(OpenJDK 21)。
|
||||||
|
if [[ -z "${JAVA_HOME:-}" ]]; then
|
||||||
|
AS_JBR="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
|
||||||
|
if [[ -x "${AS_JBR}/bin/javac" ]]; then
|
||||||
|
export JAVA_HOME="${AS_JBR}"
|
||||||
|
export PATH="${JAVA_HOME}/bin:${PATH}"
|
||||||
|
printf ' JDK: %s(Android Studio JBR)\n' "${JAVA_HOME}"
|
||||||
|
else
|
||||||
|
printf '⚠ 未设 JAVA_HOME 且未找到 Android Studio JBR,gomobile bind 末段 javac 可能失败\n' >&2
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
printf ' JDK: %s(JAVA_HOME)\n' "${JAVA_HOME}"
|
||||||
|
fi
|
||||||
|
|
||||||
# ── 安装 gomobile(SagerNet fork,见 VERSION 注释)────────────────────────────
|
# ── 安装 gomobile(SagerNet fork,见 VERSION 注释)────────────────────────────
|
||||||
printf '==> 安装 %s/cmd/gomobile@%s…\n' "${GOMOBILE_MODULE}" "${GOMOBILE_VERSION}"
|
printf '==> 安装 %s/cmd/gomobile@%s…\n' "${GOMOBILE_MODULE}" "${GOMOBILE_VERSION}"
|
||||||
go install "${GOMOBILE_MODULE}/cmd/gomobile@${GOMOBILE_VERSION}"
|
go install "${GOMOBILE_MODULE}/cmd/gomobile@${GOMOBILE_VERSION}"
|
||||||
@@ -120,10 +136,22 @@ printf ' tags : %s\n' "${BUILD_TAGS}"
|
|||||||
|
|
||||||
mkdir -p "${DIST_DIR}"
|
mkdir -p "${DIST_DIR}"
|
||||||
|
|
||||||
|
# ldflags 对齐 sing-box cmd/internal/build_libbox 的 sharedFlags:
|
||||||
|
# -checklinkname=0 放行 badlinkname 的 //go:linkname(Go 1.23+ 默认 checklinkname=1
|
||||||
|
# 会拒 os.checkPidfdOnce 等内部符号引用,缺则链接失败)
|
||||||
|
# defaultGODEBUG=multipathtcp=0 关 MPTCP(与官方一致)
|
||||||
|
# -X ...constant.Version 版本戳
|
||||||
|
# -s -w -buildid= 裁剪符号表,产物更小
|
||||||
|
LDFLAGS="-X github.com/sagernet/sing-box/constant.Version=${SINGBOX_VERSION} -X internal/godebug.defaultGODEBUG=multipathtcp=0 -s -w -buildid= -checklinkname=0"
|
||||||
|
|
||||||
(
|
(
|
||||||
cd "${BUILD_SRC}"
|
cd "${BUILD_SRC}"
|
||||||
go mod download
|
go mod download
|
||||||
gomobile bind \
|
gomobile bind \
|
||||||
|
-v \
|
||||||
|
-trimpath \
|
||||||
|
-buildvcs=false \
|
||||||
|
-ldflags "${LDFLAGS}" \
|
||||||
-target android/arm64,android/arm,android/amd64 \
|
-target android/arm64,android/arm,android/amd64 \
|
||||||
-androidapi 21 \
|
-androidapi 21 \
|
||||||
-tags "${BUILD_TAGS}" \
|
-tags "${BUILD_TAGS}" \
|
||||||
|
|||||||
Reference in New Issue
Block a user