Files
waf-platform/HttpDNSSDK/sdk/build_packages.sh

176 lines
4.7 KiB
Bash

#!/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/../../EdgeHttpDNS/internal/const/const.go"
if [ ! -f "$VERSION_FILE" ]; then
VERSION_FILE="$ROOT/../EdgeHttpDNS/internal/const/const.go"
fi
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 "new--android-httpdns-v*.aar" | head -n 1)
if [ -z "$AAR_FILE" ]; then
AAR_FILE=$(find "$ROOT/android/httpdns-sdk/build/outputs/aar" -type f -name "*normal-release*.aar" | head -n 1)
fi
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/new--android-httpdns-v${VERSION}.aar"
CRASHDEFEND_JAR="$ROOT/android/local-maven/com/newsdk/ams/new-android-crashdefend/0.0.6/new-android-crashdefend-0.0.6.jar"
IPDETECTOR_AAR="$ROOT/android/local-maven/com/newsdk/ams/new-android-ipdetector/1.2.0/new-android-ipdetector-1.2.0.aar"
LOGGER_AAR="$ROOT/android/local-maven/com/newsdk/ams/new-android-logger/1.2.0/new-android-logger-1.2.0.aar"
if [ ! -f "$CRASHDEFEND_JAR" ]; then
echo "required file missing: $CRASHDEFEND_JAR"
exit 1
fi
if [ ! -f "$IPDETECTOR_AAR" ]; then
echo "required file missing: $IPDETECTOR_AAR"
exit 1
fi
if [ ! -f "$LOGGER_AAR" ]; then
echo "required file missing: $LOGGER_AAR"
exit 1
fi
cp "$CRASHDEFEND_JAR" "$PKG_DIR/new-android-crashdefend-0.0.6.jar"
cp "$IPDETECTOR_AAR" "$PKG_DIR/new-android-ipdetector-1.2.0.aar"
cp "$LOGGER_AAR" "$PKG_DIR/new-android-logger-1.2.0.aar"
zip_dir "$PKG_DIR" "$DIST_DIR/httpdns-sdk-android-v${VERSION}.zip"
rm -f "$DIST_DIR/new--android-httpdns-v${VERSION}.aar"
rm -f "$DIST_DIR/httpdns-sdk-android.zip"
rm -rf "$ROOT/android/httpdns-sdk/build/outputs"
}
function build_ios_sdk_package() {
echo "[sdk] packaging ios xcframework ..."
ensure_cmd zip
CANDIDATES=(
"$ROOT/ios/dist/NewHttpDNS.xcframework"
"$ROOT/ios/NewHttpDNS.xcframework"
"$ROOT/ios/Build/NewHttpDNS.xcframework"
"$ROOT/ios/dist/NewHTTPDNS.xcframework"
"$ROOT/ios/NewHTTPDNS.xcframework"
"$ROOT/ios/Build/NewHTTPDNS.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 NewHttpDNS.xcframework under HttpDNSSDK/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/NewHTTPDNS.podspec" ]; then
cp "$ROOT/ios/NewHTTPDNS.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/new_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/new_httpdns/example/.dart_tool" "$PKG_DIR/new_httpdns/example/build" "$PKG_DIR/new_httpdns/.dart_tool" "$PKG_DIR/new_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-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 "$@"