mirror of
https://github.com/selfxyz/self.git
synced 2026-04-27 03:01:15 -04:00
* push code for wv-02 and 03 * save wip * fixes * pr feedback fix pipelines * save spec * address feedback * pr feedbacak * fixes * format * fix pipelines * fix * fix * fixes
123 lines
4.8 KiB
Bash
Executable File
123 lines
4.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# SPDX-FileCopyrightText: 2025 Social Connect Labs, Inc.
|
|
# SPDX-License-Identifier: BUSL-1.1
|
|
# NOTE: Converts to Apache-2.0 on 2029-06-11 per LICENSE.
|
|
|
|
# Build Android AAR from source using the app's Gradle wrapper
|
|
|
|
set -e
|
|
|
|
echo "🤖 Building Android AAR for mobile-sdk-alpha..."
|
|
|
|
# Navigate to SDK directory
|
|
SDK_DIR="$(dirname "$0")/.."
|
|
cd "$SDK_DIR"
|
|
|
|
# Ensure dist/android directory exists
|
|
mkdir -p dist/android
|
|
|
|
# Check if native modules source is available
|
|
MOBILE_SDK_NATIVE="mobile-sdk-native"
|
|
|
|
echo "🔍 Checking for Android build options..."
|
|
|
|
if [ -d "$MOBILE_SDK_NATIVE" ]; then
|
|
echo "✅ Native modules source submodule found, building from source..."
|
|
|
|
# Check if Java is actually available (required for Gradle build)
|
|
# Note: macOS has a /usr/bin/java stub that passes `command -v` but fails at runtime
|
|
if ! java -version 2>/dev/null 1>/dev/null; then
|
|
echo "⚠️ Java not available — skipping Android AAR build"
|
|
if [ -f "dist/android/mobile-sdk-alpha-release.aar" ]; then
|
|
echo "📦 Using existing prebuilt AAR: dist/android/mobile-sdk-alpha-release.aar"
|
|
else
|
|
echo "⚠️ No prebuilt AAR available. Android native modules will not be included."
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
# Check if we already have a valid AAR file
|
|
if [ -f "dist/android/mobile-sdk-alpha-release.aar" ]; then
|
|
echo "🔍 AAR file found, validating contents..."
|
|
|
|
# Check file size first (should be at least 100KB for a valid AAR)
|
|
AAR_SIZE=$(stat -f%z "dist/android/mobile-sdk-alpha-release.aar" 2>/dev/null || stat -c%s "dist/android/mobile-sdk-alpha-release.aar" 2>/dev/null)
|
|
|
|
if [ "$AAR_SIZE" -gt 100000 ]; then
|
|
# Extract classes.jar to temp file and check for required classes
|
|
TEMP_JAR=$(mktemp)
|
|
if unzip -p "dist/android/mobile-sdk-alpha-release.aar" classes.jar > "$TEMP_JAR" 2>/dev/null && \
|
|
jar tf "$TEMP_JAR" 2>/dev/null | grep -q "com/selfxyz/selfSDK/RNSelfPassportReaderModule.class"; then
|
|
rm -f "$TEMP_JAR"
|
|
echo "✅ AAR is valid ($(numfmt --to=iec-i --suffix=B $AAR_SIZE 2>/dev/null || echo "${AAR_SIZE} bytes")), skipping build"
|
|
echo "📦 Using existing AAR: dist/android/mobile-sdk-alpha-release.aar"
|
|
exit 0
|
|
else
|
|
rm -f "$TEMP_JAR"
|
|
echo "⚠️ AAR is missing required classes (RNSelfPassportReaderModule)"
|
|
fi
|
|
else
|
|
echo "⚠️ AAR file is too small (${AAR_SIZE} bytes), likely incomplete"
|
|
fi
|
|
|
|
echo "🔄 Removing invalid AAR and rebuilding..."
|
|
rm -f "dist/android/mobile-sdk-alpha-release.aar"
|
|
fi
|
|
|
|
# Setup and update submodule using the setup script
|
|
echo "🔄 Setting up and updating submodule..."
|
|
node scripts/setup-native-source.cjs
|
|
|
|
# Navigate to android directory
|
|
cd android
|
|
|
|
# Check if we're in a monorepo and can use the app's gradlew
|
|
APP_GRADLEW="../../../app/android/gradlew"
|
|
|
|
if [ -f "$APP_GRADLEW" ]; then
|
|
echo "✅ Using app's Gradle wrapper"
|
|
|
|
# Copy source from submodule if available
|
|
if [ -d "../$MOBILE_SDK_NATIVE/src" ]; then
|
|
echo "📝 Copying source from submodule to android directory..."
|
|
rm -rf src
|
|
cp -r "../$MOBILE_SDK_NATIVE/src" .
|
|
fi
|
|
|
|
if [ -d "../$MOBILE_SDK_NATIVE/libs" ]; then
|
|
echo "📝 Copying libs from submodule to android directory..."
|
|
rm -rf libs
|
|
cp -r "../$MOBILE_SDK_NATIVE/libs" .
|
|
fi
|
|
|
|
# Build using app's gradlew from the app's android directory
|
|
# This ensures React Native and other dependencies are available
|
|
cd ../../../app/android
|
|
./gradlew :mobile-sdk-alpha:assembleRelease
|
|
|
|
echo "✅ Android AAR built successfully from submodule source"
|
|
echo "📦 AAR location: packages/mobile-sdk-alpha/dist/android/"
|
|
echo "💡 Changes in mobile-sdk-native/ are tracked with git history"
|
|
else
|
|
echo "❌ Error: Could not find app's Gradle wrapper at $APP_GRADLEW"
|
|
echo "Please ensure you're running this from the monorepo root or that the app is set up."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "⚠️ Private source not found, checking for prebuilt AAR..."
|
|
|
|
# Check if prebuilt AAR already exists
|
|
if [ -f "dist/android/mobile-sdk-alpha-release.aar" ]; then
|
|
echo "✅ Prebuilt AAR found: dist/android/mobile-sdk-alpha-release.aar"
|
|
echo "📦 Using existing prebuilt AAR"
|
|
else
|
|
echo "❌ No prebuilt AAR found at dist/android/mobile-sdk-alpha-release.aar"
|
|
echo "💡 To build from source, clone the mobile-sdk-native repository:"
|
|
echo " node scripts/setup-native-source.cjs"
|
|
echo " yarn build:android"
|
|
echo ""
|
|
echo "⚠️ Package may not work without AAR file!"
|
|
exit 1
|
|
fi
|
|
fi
|