62 lines
1.9 KiB
Bash
62 lines
1.9 KiB
Bash
#!/bin/bash
|
||
# AuthCenter 编译脚本(Termux专属适配)
|
||
# 目录:脚本放AuthCenterConsoleApp根目录,同目录含src/、libs/、runtime/
|
||
# 解决Termux下jar包classpath拼接报错问题
|
||
|
||
# 锚定AuthCenterConsoleApp根目录(脚本所在目录)
|
||
BASE_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
|
||
SRC_DIR="${BASE_DIR}/src"
|
||
LIB_DIR="${BASE_DIR}/libs"
|
||
OUT_DIR="${BASE_DIR}/runtime"
|
||
|
||
# 前置校验:必须有src目录
|
||
if [ ! -d "${SRC_DIR}" ]; then
|
||
echo "❌ 错误:根目录[${BASE_DIR}]下无src目录,请核对结构"
|
||
exit 1
|
||
fi
|
||
|
||
# 查找所有Java源文件
|
||
JAVA_FILES=$(find "${SRC_DIR}" -name "*.java")
|
||
if [ -z "${JAVA_FILES}" ]; then
|
||
echo "❌ 错误:src目录下无.java文件"
|
||
exit 1
|
||
fi
|
||
|
||
# 核心修正:Termux兼容的classpath拼接(用循环拼接,避免空格/路径解析问题)
|
||
CP_PARAM=""
|
||
if [ -d "${LIB_DIR}" ]; then
|
||
JAR_LIST=("${LIB_DIR}"/*.jar)
|
||
# 排除目录本身(无jar时不拼接)
|
||
if [ -f "${JAR_LIST[0]}" ]; then
|
||
CP=$(IFS=:; echo "${JAR_LIST[*]}")
|
||
CP_PARAM="-cp ${CP}"
|
||
else
|
||
echo "ℹ️ 提示:libs目录无jar包,无依赖编译"
|
||
fi
|
||
else
|
||
echo "ℹ️ 提示:无libs目录,无依赖编译"
|
||
fi
|
||
|
||
# 创建输出目录
|
||
mkdir -p "${OUT_DIR}"
|
||
|
||
# 打印目录信息
|
||
echo "📌 编译目录信息"
|
||
echo " 根目录 :${BASE_DIR}"
|
||
echo " 源码目录:${SRC_DIR}($(echo "${JAVA_FILES}" | wc -l | tr -d ' ')个文件)"
|
||
echo " 输出目录:${OUT_DIR}"
|
||
echo "------------------------------------------------------------------------"
|
||
|
||
# 执行编译(Java7标准+UTF-8,适配Termux)
|
||
echo "开始编译(适配Termux+Java7)..."
|
||
javac -encoding UTF-8 -source 1.7 -target 1.7 ${CP_PARAM} -d "${OUT_DIR}" ${JAVA_FILES}
|
||
|
||
# 结果校验
|
||
if [ $? -eq 0 ]; then
|
||
echo -e "\n✅ 编译成功!class文件在 runtime 目录"
|
||
else
|
||
echo -e "\n❌ 编译失败!排查方向:1.JDK≥1.7 2.源码语法 3.jar包是否有效"
|
||
exit 1
|
||
fi
|
||
|