#!/bin/bash export DISPLAY=:99 export ANDROID_SDK_ROOT=/opt/android-sdk export ANDROID_HOME=/opt/android-sdk export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:/opt/android-studio/bin # Clean locks rm -f /tmp/.X99-lock /tmp/.X11-unix/X99 echo "Starting Xvfb..." Xvfb :99 -screen 0 1280x800x16 -ac & sleep 3 echo "Starting Openbox..." # Create a minimal menu file to avoid the warning mkdir -p /var/lib/openbox cat > /var/lib/openbox/debian-menu.xml << 'EOF' /opt/android-studio/bin/studio.sh xterm EOF openbox --replace & sleep 2 echo "Starting Android Studio..." /opt/android-studio/bin/studio.sh & sleep 5 echo "Starting VNC..." x11vnc -display :99 -nopw -forever -shared -rfbport 5900 -defer 10 -wait 10 -q & sleep 3 # Create a simple landing page that redirects to vnc.html cat > /usr/share/novnc/index.html << 'EOF' Redirecting to Android Studio VNC Redirecting to Android Studio VNC... EOF # Create a custom vnc.html that works with HF Spaces cat > /usr/share/novnc/vnc.html << 'EOF' Android Studio on Hugging Face
HF Space

🤖 Android Studio

Disconnected
Connecting to Android Studio...
EOF # Create diagnostic page cat > /usr/share/novnc/diagnostic.html << 'EOF' HF Space Diagnostic

🔧 Diagnostic Tool


    
    


EOF

echo "Starting noVNC with HF Spaces configuration..."
cd /usr/share/novnc

# Ensure vnc.js is available
if [ ! -f "vnc.js" ]; then
    ln -sf /usr/share/novnc/vnc.js . 2>/dev/null || true
fi

# Start websockify
websockify --web=/usr/share/novnc 0.0.0.0:7860 localhost:5900