管理端全部功能跑通
This commit is contained in:
149
EdgeHttpDNS/sdk/build_packages.sh
Normal file
149
EdgeHttpDNS/sdk/build_packages.sh
Normal file
@@ -0,0 +1,149 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
ROOT=$(cd "$(dirname "$0")" && pwd)
|
||||
DIST_DIR="$ROOT/dist"
|
||||
TMP_DIR="$ROOT/.tmp_sdk_pkg"
|
||||
|
||||
function lookup_version() {
|
||||
VERSION_FILE="$ROOT/../internal/const/const.go"
|
||||
if [ ! -f "$VERSION_FILE" ]; then
|
||||
echo "0.0.0"
|
||||
return
|
||||
fi
|
||||
VERSION=$(grep -E 'Version[[:space:]]*=' "$VERSION_FILE" | head -n 1 | sed -E 's/.*"([0-9.]+)".*/\1/')
|
||||
if [ -z "$VERSION" ]; then
|
||||
echo "0.0.0"
|
||||
else
|
||||
echo "$VERSION"
|
||||
fi
|
||||
}
|
||||
|
||||
function ensure_cmd() {
|
||||
CMD=$1
|
||||
if ! command -v "$CMD" >/dev/null 2>&1; then
|
||||
echo "missing command: $CMD"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function zip_dir() {
|
||||
SRC_DIR=$1
|
||||
ZIP_FILE=$2
|
||||
(
|
||||
cd "$SRC_DIR" || exit 1
|
||||
zip -r -X -q "$ZIP_FILE" .
|
||||
)
|
||||
}
|
||||
|
||||
function build_android_sdk_package() {
|
||||
echo "[sdk] building android aar ..."
|
||||
ensure_cmd zip
|
||||
if [ ! -x "$ROOT/android/gradlew" ]; then
|
||||
echo "android gradlew not found: $ROOT/android/gradlew"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
(
|
||||
cd "$ROOT/android" || exit 1
|
||||
./gradlew :httpdns-sdk:clean :httpdns-sdk:assembleNormalRelease
|
||||
)
|
||||
|
||||
AAR_FILE=$(find "$ROOT/android/httpdns-sdk/build/outputs/aar" -type f -name "*normal-release*.aar" | head -n 1)
|
||||
if [ -z "$AAR_FILE" ]; then
|
||||
AAR_FILE=$(find "$ROOT/android/httpdns-sdk/build/outputs/aar" -type f -name "*release*.aar" | head -n 1)
|
||||
fi
|
||||
if [ -z "$AAR_FILE" ] || [ ! -f "$AAR_FILE" ]; then
|
||||
echo "android aar is not generated"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PKG_DIR="$TMP_DIR/android"
|
||||
rm -rf "$PKG_DIR"
|
||||
mkdir -p "$PKG_DIR"
|
||||
cp "$AAR_FILE" "$PKG_DIR/alicloud-android-httpdns.aar"
|
||||
if [ -f "$ROOT/android/README.md" ]; then
|
||||
cp "$ROOT/android/README.md" "$PKG_DIR/README.md"
|
||||
fi
|
||||
if [ -f "$ROOT/android/httpdns-sdk/proguard-rules.pro" ]; then
|
||||
cp "$ROOT/android/httpdns-sdk/proguard-rules.pro" "$PKG_DIR/proguard-rules.pro"
|
||||
fi
|
||||
|
||||
zip_dir "$PKG_DIR" "$DIST_DIR/httpdns-sdk-android.zip"
|
||||
}
|
||||
|
||||
function build_ios_sdk_package() {
|
||||
echo "[sdk] packaging ios xcframework ..."
|
||||
ensure_cmd zip
|
||||
|
||||
CANDIDATES=(
|
||||
"$ROOT/ios/dist/AlicloudHttpDNS.xcframework"
|
||||
"$ROOT/ios/AlicloudHttpDNS.xcframework"
|
||||
"$ROOT/ios/Build/AlicloudHttpDNS.xcframework"
|
||||
)
|
||||
|
||||
XCFRAMEWORK_DIR=""
|
||||
for path in "${CANDIDATES[@]}"; do
|
||||
if [ -d "$path" ]; then
|
||||
XCFRAMEWORK_DIR="$path"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$XCFRAMEWORK_DIR" ]; then
|
||||
echo "ios xcframework not found."
|
||||
echo "please build it on macOS first, then place AlicloudHttpDNS.xcframework under EdgeHttpDNS/sdk/ios/dist/"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PKG_DIR="$TMP_DIR/ios"
|
||||
rm -rf "$PKG_DIR"
|
||||
mkdir -p "$PKG_DIR"
|
||||
cp -R "$XCFRAMEWORK_DIR" "$PKG_DIR/"
|
||||
if [ -f "$ROOT/ios/AlicloudHTTPDNS.podspec" ]; then
|
||||
cp "$ROOT/ios/AlicloudHTTPDNS.podspec" "$PKG_DIR/"
|
||||
fi
|
||||
if [ -f "$ROOT/ios/README.md" ]; then
|
||||
cp "$ROOT/ios/README.md" "$PKG_DIR/README.md"
|
||||
fi
|
||||
|
||||
zip_dir "$PKG_DIR" "$DIST_DIR/httpdns-sdk-ios.zip"
|
||||
}
|
||||
|
||||
function build_flutter_sdk_package() {
|
||||
echo "[sdk] packaging flutter plugin ..."
|
||||
ensure_cmd zip
|
||||
PLUGIN_DIR="$ROOT/flutter/aliyun_httpdns"
|
||||
if [ ! -d "$PLUGIN_DIR" ]; then
|
||||
echo "flutter plugin directory not found: $PLUGIN_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PKG_DIR="$TMP_DIR/flutter"
|
||||
rm -rf "$PKG_DIR"
|
||||
mkdir -p "$PKG_DIR"
|
||||
cp -R "$PLUGIN_DIR" "$PKG_DIR/"
|
||||
rm -rf "$PKG_DIR/aliyun_httpdns/example/.dart_tool" "$PKG_DIR/aliyun_httpdns/example/build" "$PKG_DIR/aliyun_httpdns/.dart_tool" "$PKG_DIR/aliyun_httpdns/build"
|
||||
|
||||
zip_dir "$PKG_DIR" "$DIST_DIR/httpdns-sdk-flutter.zip"
|
||||
}
|
||||
|
||||
function main() {
|
||||
VERSION=$(lookup_version)
|
||||
rm -rf "$TMP_DIR"
|
||||
mkdir -p "$TMP_DIR" "$DIST_DIR"
|
||||
|
||||
build_android_sdk_package
|
||||
build_ios_sdk_package
|
||||
build_flutter_sdk_package
|
||||
|
||||
cp "$DIST_DIR/httpdns-sdk-android.zip" "$DIST_DIR/httpdns-sdk-android-v${VERSION}.zip"
|
||||
cp "$DIST_DIR/httpdns-sdk-ios.zip" "$DIST_DIR/httpdns-sdk-ios-v${VERSION}.zip"
|
||||
cp "$DIST_DIR/httpdns-sdk-flutter.zip" "$DIST_DIR/httpdns-sdk-flutter-v${VERSION}.zip"
|
||||
|
||||
rm -rf "$TMP_DIR"
|
||||
echo "[sdk] done. output: $DIST_DIR"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
Reference in New Issue
Block a user