Skip to content

Instantly share code, notes, and snippets.

@kevupton
Last active February 24, 2025 04:23
Show Gist options
  • Save kevupton/fde6c7075c507c193615ca7fc913f4e1 to your computer and use it in GitHub Desktop.
Save kevupton/fde6c7075c507c193615ca7fc913f4e1 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Exit on error
set -e
echo "πŸš€ Setting up Linux environment for React Native development..."
# Update package lists
echo "πŸ“¦ Updating package lists..."
sudo apt-get update
# Install basic dependencies
echo "πŸ“š Installing basic dependencies..."
sudo apt-get install -y \
curl \
git \
wget \
unzip \
zip \
build-essential \
gcc \
g++ \
make \
python3 \
libtool \
autoconf \
pkg-config \
libssl-dev
# Install Node.js LTS
echo "🟒 Installing Node.js LTS..."
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
# Install pnpm
echo "πŸ“¦ Installing pnpm..."
curl -fsSL https://get.pnpm.io/install.sh | sh -
source ~/.bashrc
# Install OpenJDK 17
echo "β˜• Installing OpenJDK 17..."
sudo apt-get install -y openjdk-17-jdk
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
echo "export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" >> ~/.bashrc
# Install Android Studio dependencies
echo "πŸ€– Installing Android Studio dependencies..."
sudo apt-get install -y \
libc6:i386 \
libncurses5:i386 \
libstdc++6:i386 \
lib32z1 \
libbz2-1.0:i386
# Download and install Android Command Line Tools
echo "πŸ“± Installing Android Command Line Tools..."
ANDROID_HOME="/usr/local/android-sdk"
sudo mkdir -p $ANDROID_HOME
sudo chown $USER:$USER $ANDROID_HOME
CMDLINE_TOOLS_URL="https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip"
CMDLINE_TOOLS_ZIP="commandlinetools.zip"
wget -O $CMDLINE_TOOLS_ZIP $CMDLINE_TOOLS_URL
unzip -q $CMDLINE_TOOLS_ZIP -d $ANDROID_HOME
rm $CMDLINE_TOOLS_ZIP
# Rename and organize cmdline-tools directory structure as required by Android SDK
mkdir -p "$ANDROID_HOME/cmdline-tools/latest"
mv $ANDROID_HOME/cmdline-tools/* "$ANDROID_HOME/cmdline-tools/latest" 2>/dev/null || true
# Set up Android SDK environment variables
echo "πŸ”§ Setting up Android SDK environment variables..."
echo "export ANDROID_HOME=/usr/local/android-sdk" >> ~/.bashrc
echo "export PATH=\$PATH:\$ANDROID_HOME/cmdline-tools/latest/bin" >> ~/.bashrc
echo "export PATH=\$PATH:\$ANDROID_HOME/platform-tools" >> ~/.bashrc
# Source the updated environment
source ~/.bashrc
# Install Android SDK packages
echo "πŸ“² Installing Android SDK packages..."
yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses
$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-33" "build-tools;33.0.0"
# Install Watchman
echo "πŸ‘€ Installing Watchman..."
sudo apt-get install -y watchman
# Install React Native CLI globally using pnpm
echo "βš›οΈ Installing React Native CLI..."
pnpm add -g react-native-cli
echo "βœ… Setup completed successfully!"
echo "πŸŽ‰ Your Linux environment is now ready for React Native development!"
echo "
Please make sure to:
1. Restart your terminal or run 'source ~/.bashrc'
2. Install Android Studio manually if you need the IDE
3. Configure your device or emulator for testing
"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment