Really good
This commit is contained in:
@@ -211,6 +211,9 @@ fi
|
|||||||
cd "$(dirname "$PROJECT_DIR")"
|
cd "$(dirname "$PROJECT_DIR")"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
# Setup Android SDK (needed for deployment)
|
||||||
|
setup_android_sdk
|
||||||
|
|
||||||
# Create project
|
# Create project
|
||||||
echo ">>> Creating project..."
|
echo ">>> Creating project..."
|
||||||
create_project_structure "$PROJECT_DIR"
|
create_project_structure "$PROJECT_DIR"
|
||||||
|
|||||||
200
linux/lib.sh
200
linux/lib.sh
@@ -161,42 +161,63 @@ cd "$SDK_DIR" || exit 1
|
|||||||
# Check for Android SDK configuration
|
# Check for Android SDK configuration
|
||||||
if [ ! -f "local.properties" ] && [ -z "$ANDROID_HOME" ]; then
|
if [ ! -f "local.properties" ] && [ -z "$ANDROID_HOME" ]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "════════════════════════════════════════════════════════════════"
|
echo "Android SDK not found. Attempting auto-setup..."
|
||||||
echo " Error: Android SDK Not Configured"
|
|
||||||
echo "════════════════════════════════════════════════════════════════"
|
# Try to find common Android SDK locations
|
||||||
echo ""
|
FOUND_SDK=""
|
||||||
echo "The FTC SDK needs the Android SDK to build APKs."
|
for loc in "$HOME/Android/Sdk" "$HOME/.android-sdk" "$HOME/Library/Android/sdk"; do
|
||||||
echo ""
|
if [ -d "$loc" ] && [ -d "$loc/platforms" ]; then
|
||||||
echo "FIX OPTION 1: Set ANDROID_HOME (recommended)"
|
FOUND_SDK="$loc"
|
||||||
echo " export ANDROID_HOME=/path/to/android/sdk"
|
break
|
||||||
echo " echo 'export ANDROID_HOME=/path/to/android/sdk' >> ~/.bashrc"
|
fi
|
||||||
echo ""
|
done
|
||||||
echo "FIX OPTION 2: Create local.properties"
|
|
||||||
echo " echo 'sdk.dir=/path/to/android/sdk' > ~/ftc-sdk/local.properties"
|
if [ -n "$FOUND_SDK" ]; then
|
||||||
echo ""
|
echo "✓ Found Android SDK at $FOUND_SDK"
|
||||||
echo "════════════════════════════════════════════════════════════════"
|
echo "sdk.dir=$FOUND_SDK" > local.properties
|
||||||
echo " How to Install Android SDK"
|
export ANDROID_HOME="$FOUND_SDK"
|
||||||
echo "════════════════════════════════════════════════════════════════"
|
else
|
||||||
echo ""
|
echo ""
|
||||||
echo "1. Download Android Studio:"
|
echo "════════════════════════════════════════════════════════════════"
|
||||||
echo " https://developer.android.com/studio"
|
echo " Error: Android SDK Not Configured"
|
||||||
echo ""
|
echo "════════════════════════════════════════════════════════════════"
|
||||||
echo "2. Install and open Android Studio"
|
echo ""
|
||||||
echo ""
|
echo "The FTC SDK needs the Android SDK to build APKs."
|
||||||
echo "3. Go to: Tools → SDK Manager"
|
echo ""
|
||||||
echo ""
|
echo "FIX OPTION 1: Run setup automatically"
|
||||||
echo "4. Note the 'Android SDK Location' path shown"
|
echo " Create a new project with ftc-new-project (it will set up Android SDK)"
|
||||||
echo ""
|
echo ""
|
||||||
echo "5. Use that path in FIX OPTION 1 or 2 above"
|
echo "FIX OPTION 2: Set ANDROID_HOME manually"
|
||||||
echo ""
|
echo " export ANDROID_HOME=/path/to/android/sdk"
|
||||||
echo "Typical Android SDK locations:"
|
echo " echo 'export ANDROID_HOME=/path/to/android/sdk' >> ~/.bashrc"
|
||||||
echo " • Linux: ~/Android/Sdk"
|
echo ""
|
||||||
echo " • macOS: ~/Library/Android/sdk"
|
echo "FIX OPTION 3: Create local.properties"
|
||||||
echo " • Windows: C:\\Users\\YourName\\AppData\\Local\\Android\\Sdk"
|
echo " echo 'sdk.dir=/path/to/android/sdk' > ~/ftc-sdk/local.properties"
|
||||||
echo ""
|
echo ""
|
||||||
echo "════════════════════════════════════════════════════════════════"
|
echo "════════════════════════════════════════════════════════════════"
|
||||||
echo ""
|
echo " How to Install Android SDK"
|
||||||
exit 1
|
echo "════════════════════════════════════════════════════════════════"
|
||||||
|
echo ""
|
||||||
|
echo "1. Download Android Studio:"
|
||||||
|
echo " https://developer.android.com/studio"
|
||||||
|
echo ""
|
||||||
|
echo "2. Install and open Android Studio"
|
||||||
|
echo ""
|
||||||
|
echo "3. Go to: Tools → SDK Manager"
|
||||||
|
echo ""
|
||||||
|
echo "4. Note the 'Android SDK Location' path shown"
|
||||||
|
echo ""
|
||||||
|
echo "5. Use that path in FIX OPTION 2 or 3 above"
|
||||||
|
echo ""
|
||||||
|
echo "Typical Android SDK locations:"
|
||||||
|
echo " • Linux: ~/Android/Sdk"
|
||||||
|
echo " • macOS: ~/Library/Android/sdk"
|
||||||
|
echo " • Windows: C:\\Users\\YourName\\AppData\\Local\\Android\\Sdk"
|
||||||
|
echo ""
|
||||||
|
echo "════════════════════════════════════════════════════════════════"
|
||||||
|
echo ""
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! ./gradlew build; then
|
if ! ./gradlew build; then
|
||||||
@@ -492,4 +513,111 @@ check_prerequisites() {
|
|||||||
|
|
||||||
echo "✓ All prerequisites satisfied"
|
echo "✓ All prerequisites satisfied"
|
||||||
return 0
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Setup Android SDK automatically
|
||||||
|
setup_android_sdk() {
|
||||||
|
local android_sdk_dir="${ANDROID_SDK_DIR:-$HOME/.android-sdk}"
|
||||||
|
|
||||||
|
# Check if already configured
|
||||||
|
if [ -n "$ANDROID_HOME" ] && [ -d "$ANDROID_HOME" ]; then
|
||||||
|
echo "✓ Android SDK already configured at $ANDROID_HOME"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "$android_sdk_dir" ] && [ -f "$android_sdk_dir/cmdline-tools/latest/bin/sdkmanager" ]; then
|
||||||
|
echo "✓ Android SDK found at $android_sdk_dir"
|
||||||
|
export ANDROID_HOME="$android_sdk_dir"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo ">>> Setting up Android SDK..."
|
||||||
|
echo "This is needed to build APKs for the Control Hub."
|
||||||
|
echo "Download size: ~150MB"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Detect OS
|
||||||
|
local os_type=""
|
||||||
|
case "$(uname -s)" in
|
||||||
|
Linux*) os_type="linux" ;;
|
||||||
|
Darwin*) os_type="mac" ;;
|
||||||
|
*)
|
||||||
|
echo "Unsupported OS for auto-setup"
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Download command-line tools
|
||||||
|
local tools_url=""
|
||||||
|
if [ "$os_type" = "linux" ]; then
|
||||||
|
tools_url="https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip"
|
||||||
|
else
|
||||||
|
tools_url="https://dl.google.com/android/repository/commandlinetools-mac-11076708_latest.zip"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Downloading Android SDK command-line tools..."
|
||||||
|
local temp_zip=$(mktemp -d)/cmdline-tools.zip
|
||||||
|
|
||||||
|
if command -v curl &> /dev/null; then
|
||||||
|
curl -L "$tools_url" -o "$temp_zip" 2>/dev/null || {
|
||||||
|
echo "Error: Failed to download Android SDK tools"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
elif command -v wget &> /dev/null; then
|
||||||
|
wget -q "$tools_url" -O "$temp_zip" || {
|
||||||
|
echo "Error: Failed to download Android SDK tools"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
else
|
||||||
|
echo "Error: Need curl or wget to download"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Extract
|
||||||
|
echo "Installing to $android_sdk_dir..."
|
||||||
|
mkdir -p "$android_sdk_dir/cmdline-tools"
|
||||||
|
|
||||||
|
if ! command -v unzip &> /dev/null; then
|
||||||
|
echo "Error: unzip not found. Install with: sudo apt install unzip"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
unzip -q "$temp_zip" -d "$android_sdk_dir/cmdline-tools"
|
||||||
|
mv "$android_sdk_dir/cmdline-tools/cmdline-tools" "$android_sdk_dir/cmdline-tools/latest"
|
||||||
|
rm -rf "$(dirname "$temp_zip")"
|
||||||
|
|
||||||
|
export ANDROID_HOME="$android_sdk_dir"
|
||||||
|
export PATH="$PATH:$ANDROID_HOME/cmdline-tools/latest/bin"
|
||||||
|
|
||||||
|
# Accept licenses and install essentials
|
||||||
|
echo "Installing Android SDK components..."
|
||||||
|
yes | sdkmanager --licenses > /dev/null 2>&1 || true
|
||||||
|
sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0" > /dev/null 2>&1
|
||||||
|
|
||||||
|
# Add to shell RC files for persistence
|
||||||
|
local shell_rc=""
|
||||||
|
if [ -n "$BASH_VERSION" ]; then
|
||||||
|
shell_rc="$HOME/.bashrc"
|
||||||
|
elif [ -n "$ZSH_VERSION" ]; then
|
||||||
|
shell_rc="$HOME/.zshrc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$shell_rc" ] && [ -f "$shell_rc" ]; then
|
||||||
|
if ! grep -q "ANDROID_HOME.*android-sdk" "$shell_rc"; then
|
||||||
|
echo "" >> "$shell_rc"
|
||||||
|
echo "# Android SDK (added by FTC Project Generator)" >> "$shell_rc"
|
||||||
|
echo "export ANDROID_HOME=\"$android_sdk_dir\"" >> "$shell_rc"
|
||||||
|
echo "export PATH=\"\$PATH:\$ANDROID_HOME/cmdline-tools/latest/bin:\$ANDROID_HOME/platform-tools\"" >> "$shell_rc"
|
||||||
|
echo "Note: Added ANDROID_HOME to $shell_rc"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create local.properties in FTC SDK
|
||||||
|
if [ -n "$FTC_SDK_DIR" ] && [ -d "$FTC_SDK_DIR" ]; then
|
||||||
|
echo "sdk.dir=$android_sdk_dir" > "$FTC_SDK_DIR/local.properties"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "✓ Android SDK configured at $android_sdk_dir"
|
||||||
|
echo ""
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user