Android - Android with FPCUPDeluxe/de
Android und Lazarus unter Linux Mint
Voraussetzungen
Ein eingerichtetes FPCUPDeluxe FPCUPDeluxe
Wer unter Linux mit Lazarus nach Android kompilieren möchte muss einiges an Einstellungen vornehmen. Ich habe es ausschließlich unter Linux Mint 19.3 Cinnamon 64bit getestet. Zuerst in einer Virtualbox Version.
Quellen:
- https://forum.lazarus.freepascal.org/index.php/topic,40750.msg281604.html#msg281604
- https://forum.lazarus.freepascal.org/index.php/topic,38777.msg264419.html#msg264419
- https://wiki.lazarus.freepascal.org/LAMW
- https://www.lazarusforum.de/viewtopic.php?f=55&t=13084&sid=acf2a30469fbf7adf21fce15edd5a3e5
- https://www.lazarusforum.de/viewtopic.php?f=13&t=13072&p=116113&hilit=android#p116113
- https://www.lazarusforum.de/viewtopic.php?f=3&t=12766&p=113313&hilit=android#p113313
Ich habe mich dazu entschieden das Modul LAMW zu verwenden, es läuft auch unter Linux und nimmt einem beim Einrichten der Lazarus IDE sehr viel Arbeit ab! Liste von Android Versionen:
Voraussetzungen:
Die in fpcupdeluxe derzeit verwendete LAMW (LazarusAndroidModulWizard) Version benötigt folgende Voraussetzungen:
# adb
sudo apt-get install adb
Pakete installieren:
sudo apt-get install 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 git subversion make build-essential gdb zip unzip unrar wget
Solten per default bei Mint installiert sein.
# Java Pakete
sudo apt-get install openjdk-8-jdk
# sudo apt-get install android-tools-adb ant
Ist nur nötig, wen man nicht openjdk als Standard hat.
# Open JDK aus Standard
sudo update-java-alternatives --set /usr/lib/jvm/java-1.8.0-openjdk-amd64
Einen Ordner anlegen, für die Android spezifischen Pakete. Keine Leerzeichen im Pfad verwenden, dies erspart Ärger.
mkdir -p ~/Programme/android
Folgende Programme downloaden und in den Ordner ~/Programme/android
entpacken:
- Verschiedene Versionen von Gradle findet man hier (ich nahm 4.4.1, sonst anpassen):
- Verschiedene Versionen von Gradle findet man hier (ich nahm 6.2.2, sonst anpassen):
- https://gradle.org/releases/ Dort binary only wählen.
Nachdem dem Entpackengradle-x.x.x
ingradle
umbennen
Wichtig, Pfade weiter unten müssen an die Version angepasst werden, zB. Export !
- https://gradle.org/releases/ Dort binary only wählen.
SDK-Manager downloaden und einrichten
- Android SDK downladen:
- http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz Den Inhalt nach ~/Programme/android entpacken.
Nachdem dem Entpackenandroid-sdk-linux
insdk
umbennen
- http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz Den Inhalt nach ~/Programme/android entpacken.
Android SDK-Manager starten:
~/Programme/android/android-sdk-linux/tools/android
Es ist die neuste Version Android 10 (API29) vorausgewählt.
Die 3 Hakchen SDK Tools, SDK Platform-tools und SDK Build-tools drin lassen.
Zusätzlich noch die Build-tools 27.0.3 anwählen (werden für 28 und 29 zusätzlich benötigt)
Folgendes installieren:
- "Tools" --> "Android SDK Build-tools - 27.0.3"
- "Extras" --> "Android Support Repository"
- "Extras" --> "Google Play service"
- "Extras" --> "Google Repository"
Folgendes entfernen:
- "Android R" --> [alles entfernen]
NDK einrichten
Bei Android 10 (API29) benötigt man nur die SDK Plattform. Die anderen Haken entfernen. Die Systemimages werden nur benötigt wenn man zum Testen einen Emulator anlegen möchte. Ich möchte erst mal auf einen alten Handy testen. [Wer eine ältere Version nehmen möchte muss die dem entsprechende SDK Plattform wählen bzw. die passenden Build-tools nehmen. Zum Beispiel SDK Plattform von API 25 mit SDK Buil-tools 25.0.3. Es muss dann aber auch die passende NDK Datei ausgesucht werden. Für API 25 funktionierte bei mir android-ndk-r10e-linux-x86_64. ]
das Aktuelle NDK downloaden:
Momentan ist es android-ndk-r21-linux-x86_64.
Den Inhalt nach ~/Programme/android entpacken. Den Ordner anschließend in ndk-bundle umbenennen.
Jetzt im Terminal folgende Links anlegen:
ln -sf ~/Programme/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin ~/Programme/android/ndk-toolchain
ln -sf ~/Programme/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9 ~/Programme/android/sdk/ndk-bundle/toolchains/mips64el-linux-android-4.9
ln -sf ~/Programme/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9 ~/Programme/android/sdk/ndk-bundle/toolchains/mipsel-linux-android-4.9
Am Ende bei
~/.bashrc
folgendes einfügen:
Wen nicht vorhanden, folgende Datei im Home-Ordner anlegen: ~/.profile
?????????
Die Datei editieren, und a, Ende folgendes einfügen:
export ANDROID_SDK_ROOT="${HOME}/Programme/android/sdk"
# export GRADLE_HOME="${HOME}/Programme/android/gradle-4.4.1"
# export GRADLE_HOME="${HOME}/Programme/android/gradle-6.2.2"
export PATH="${PATH}:${HOME}/Programme/android/ndk-toolchain"
export PATH="${PATH}:${GRADLE_HOME}/bin"
Anschliessend speichern und beenden.
PC neustarten !
FPC/Lazarus Crosscompiler bauen
Lazarus mit FPCUPDeluxe bauen
Zuerst eine Trunk mit FPCUPDeluxe bauen. Fur ARM und i386 kann man auch die stable verwenden. Siehe hier:
Nun fpcupdeluxe starten. Ich empfehle für den Android Crosscompiler zusätzlich ein eigenes Lazarus zu installieren. Nach der Installation von Lamw wurden bei mir die Einstellungen der Lazarus IDE durcheinander gewürfelt. Die Cross Compiler für arm und i386 lassen sich mit den stable Versionen installieren. Der Cross Compiler für aarch64 nur mit der trunk. Ich habe mich deshalb hier für die trunk Versionen entschieden. Achtung: das neue Lazarus in ein anderes Verzeichnis als das schon vorhandene installieren. Wen trunk nicht geht, kann man alternativ trunk.git probieren. Wen alles versagt, zu einem späteren Zeitpunkt probieren.
In Lazarus unter Tools, Options, General die Sprache auf deutsch umstellen. Lazarus neu starten.
Folgende Versionen wurden bei mir installiert:
LAMW mit fpcupdeluxe installieren
Als nächstes noch lamw (falls noch nicht vorhanden) installieren: LAMW Manager :"Ein Installationsprogramm zum Generieren der Lazarus IDE [und aller erforderlichen Komponenten!], angefertigt um für Android zu entwickeln! zu lamw:
- Weitere Infos: https://wiki.lazarus.freepascal.org/LAMW
In FPCUPDeluxe folgendes einstellen:
- Im Reiter Modules
- lamw anwählen
- Install module drücken, somit wird das Modul installiert.
Cross-Compiler bauen:
- Im Reiter Cross noch folgende CheckBoxen anwählen:
- Bei ARM:
- CPU: arm
- OS: android
- Bei ARM:
- Bei i386:
- CPU: i386
- OS: android
- Bei i386:
- Button Install compiler drücken, somit wird der Cross-Compiler gebaut.
Lazarus einrichten
Lazarus auf deutsch
- Lazarus mit dem neuen Desktop-Icon (Lazarus_fpcupdeluxe) starten.
- "Tools --> Options --> General --> Language" Lazarus auf deutsch stellen, mit Ok bestätigen und Lazarus neu starten.
Lazarus sollte jetzt deutsch sein.
LAMW einrichten
- "Werkzeuge --> [LAMW] Android Module Wizard --> Paths Settings [Jdk,Sdk,Ndk]"
- "Path to Java JDK" --> /usr/lib/jvm/java-11-openjdk-amd64
- "Path to Ant bin:" --> /home/tux/android/fpcupdeluxe/ccr/lamw-ant/apache-ant-1.10.8/bin
"Path to Ant bin:" --> /usr/bin"Path to Gradle" --> /home/tux/Programme/android/gradle-4.4.1"Path to Gradle" --> /home/tux/Programme/android/gradle-6.2.2- "Path to Gradle" --> /home/tux/fpcupdeluxe_android.alt/ccr/lamw-gradle/gradle-6.2.1
"Path to Android NDK" --> /home/tux/Programme/android/sdk/ndk-bundle- "Path to Android NDK" --> /home/tux/Programme/android/android-ndk-r21d
- "NDK Version" --> 11
"Path to Android SDK" --> /home/tux/Programme/android/sdk- "Path to Android SDK" --> /home/tux/Programme/android/android-sdk-linux
Erstes Project
Als nächstes
- "Datei --> Neu --> Project --> LAMW[GUI]Android Module"
- "Path to Workspace" --> /home/tux/android_test
- "Architekture/Instructions" --> ARMv7a+VFPv3
- "Apk Builder: --> "Gradle
Ok drücken
Projekt will sich speichern, mit "speichern" bestätigen.
Erster Start
- "Start" --> [LAMW] Build Android Apk and Run
Warnung mit "ja" bestätigen.
Das erste Kompilieren geht recht lange, da noch vieles für den Crosscompiler übersetzt werden muss.
Project Einstellungen ändern
Nachträglich Build ändern:
- Projekt --> Projekteinstellungen... --> [LAMW] Android Project Options --> Build