# Setup Android Development Environment on Linux (FPCUPdeluxe / LAMW)
# Tested on Xubuntu 16.04 64-bit and Xubuntu 18.04 64-bit
# Target 32-bit ARM on Android
# Target 64-bit aarch64 on Android
# 2019-May-20 ver 1.3
# Install libraries and tools
sudo apt-get install -y libx11-dev libgtk2.0-dev libgdk-pixbuf2.0-dev libcairo2-dev libpango1.0-dev libxtst-dev libatk1.0-dev libghc-x11-dev freeglut3 freeglut3-dev
sudo apt-get install -y git subversion make build-essential gdb zip unzip unrar wget
sudo apt-get install -y openjdk-8-jdk android-tools-adb ant
#Note: Next line is not needed on Ubuntu 16.04
sudo update-java-alternatives --set /usr/lib/jvm/java-1.8.0-openjdk-amd64
mkdir -p "$HOME/android/sdk"
# download and extract Android SDK Command Line Tools for Linux
# from https://developer.android.com/studio/#downloads
cd "$HOME/android/sdk"
wget "https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip"
unzip "sdk-tools-linux-4333796.zip"
rm "sdk-tools-linux-4333796.zip"
#Install SDK packages and NDK (as of 2019-May-20 this pulls in NDK r19c)
cd "$HOME/android/sdk/tools/bin"
./sdkmanager "platforms;android-26" "build-tools;26.0.3" "tools" "ndk-bundle" "extras;android;m2repository"
# make symbolic link to NDK toolchain
ln -sf "$HOME/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin" "$HOME/android/ndk-toolchain"
# work around bug, NDK 18 removed MIPS toolchains, but gradle plugin 3.0.1 won't run unless they are present
ln -sf "$HOME/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9" "$HOME/android/sdk/ndk-bundle/toolchains/mips64el-linux-android-4.9"
ln -sf "$HOME/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9" "$HOME/android/sdk/ndk-bundle/toolchains/mipsel-linux-android-4.9"
# download and extract Gradle 4.10.3
# from https://gradle.org/releases/
cd "$HOME/android"
wget "https://services.gradle.org/distributions/gradle-4.10.3-bin.zip"
unzip "gradle-4.10.3-bin.zip"
rm "gradle-4.10.3-bin.zip"
# Use a text editor to open $HOME/.profile and add this text below:
# example: mousepad $HOME/.profile
export ANDROID_SDK_ROOT="${HOME}/android/sdk"
export GRADLE_HOME="${HOME}/android/gradle-4.10.3"
export PATH="${PATH}:${HOME}/android/ndk-toolchain"
export PATH="${PATH}:${GRADLE_HOME}/bin"
# Reboot (or logout of session and login)
# Download FPCUPdeluxe from https://github.com/newpascal/fpcupdeluxe/releases/latest
# (tested with version 1.6.2v)
mkdir "$HOME/fpcupdeluxe_app"
cd "$HOME/fpcupdeluxe_app"
wget "https://github.com/newpascal/fpcupdeluxe/releases/download/1.6.2v/fpcupdeluxe-x86_64-linux"
chmod +x fpcupdeluxe-x86_64-linux
./fpcupdeluxe-x86_64-linux
# Using FPCUPdeluxe install FPC/Lazarus, crosscompiler, and packages/modules:
# 1) On "Basic" tab, select FPC version "fixes3.2" & Lazarus version "fixes2.0" and click "Install/update FPC+Laz" button (if this fails, please see comments in next post)
# 2) On "Cross" tab, select CPU arm & OS android, "Install compiler" (select "yes" to missing tools message box)
# 3) On "Cross" tab, select CPU aarch64 & OS android, "Install compiler" (Ignore trunk warning, select "yes" to missing tools message box)
# 4) On Modules tab, select LAMW, Install module
# 5) (Optional but recommended) In module list: Select OPM, Install module (online package manager)
# Run Lazarus using the shortcut created by FPCUPdeluxe
# NOTE: DO NOT forget to replace references to [user] with your user name in 3 paths below
# Select Tools menu > [Lamw] Android Module Wizard > Paths Settings: [Jdk, Sdk, Ndk, ...]:
# Path to Java JDK: /usr/lib/jvm/java-8-openjdk-amd64
# Path to Ant bin: /usr/bin
# Path to Gradle: /home/[user]/android/gradle-4.10.3
# Path to Android NDK: /home/[user]/android/sdk/ndk-bundle
# NDK Version: >11
# Your Desktop System: linux-x86_64
# Path to Android SDK: /home/[user]/android/sdk
# For new LAMW projects, use Gradle for APK Builder and
# for 32-bit: ARMv7a + VFPv3 for Architecture/Instructions
# for 64-bit: Aarch64 for Architecture/Instructions