Difference between revisions of "Android - Android with FPCUPDeluxe/de"

From Lazarus wiki
Jump to navigationJump to search
 
(28 intermediate revisions by the same user not shown)
Line 14: Line 14:
 
* https://forum.lazarus.freepascal.org/index.php/topic,38777.msg264419.html#msg264419
 
* https://forum.lazarus.freepascal.org/index.php/topic,38777.msg264419.html#msg264419
 
* https://wiki.lazarus.freepascal.org/LAMW
 
* 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
 +
 +
* https://www.lazarusforum.de/download/file.php?id=5482
  
 
Ich habe mich dazu entschieden das Modul LAMW zu verwenden, es läuft auch unter Linux und
 
Ich habe mich dazu entschieden das Modul LAMW zu verwenden, es läuft auch unter Linux und
Line 22: Line 28:
 
=== Voraussetzungen: ===
 
=== Voraussetzungen: ===
 
Die in fpcupdeluxe derzeit verwendete LAMW (LazarusAndroidModulWizard) Version benötigt folgende Voraussetzungen:
 
Die in fpcupdeluxe derzeit verwendete LAMW (LazarusAndroidModulWizard) Version benötigt folgende Voraussetzungen:
 +
 +
<syntaxhighlight lang="bash">
 +
# adb
 +
sudo apt-get install adb
 +
</syntaxhighlight>
 +
  
 
<s>
 
<s>
Line 34: Line 46:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
# Java Pakete
 
# Java Pakete
sudo apt-get install openjdk-8-jdk android-tools-adb ant
+
sudo apt-get install openjdk-8-jdk  
 +
# sudo apt-get install android-tools-adb ant
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 58: Line 71:
 
== SDK-Manager downloaden und einrichten ==  
 
== SDK-Manager downloaden und einrichten ==  
 
*Android SDK downladen:
 
*Android SDK downladen:
** http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz <br><s>Nachdem dem Entpacken <code>android-sdk-linux</code> in <code>sdk</code> umbennen</s>
+
** http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz Den Inhalt nach '''~/Programme/android''' entpacken.<br><s>Nachdem dem Entpacken <code>android-sdk-linux</code> in <code>sdk</code> umbennen</s>
  
 
Android SDK-Manager starten:
 
Android SDK-Manager starten:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
~/Programme/android/sdk/tools/android
+
~/Programme/android/android-sdk-linux/tools/android
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Es ist die neuste Version Android 10 (API29) vorausgewählt.
 
Es ist die neuste Version Android 10 (API29) vorausgewählt.
Line 69: Line 82:
 
Zusätzlich noch die Build-tools 27.0.3 anwählen (werden für 28 und 29 zusätzlich benötigt)
 
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"
 
* "Tools" --> "Android SDK Build-tools - 27.0.3"
 
* "Extras" --> "Android Support Repository"
 
* "Extras" --> "Android Support Repository"
Line 74: Line 88:
 
* "Extras" --> "Google Repository"
 
* "Extras" --> "Google Repository"
  
Bei "Android R" alles entfernen ?????????????
+
Folgendes entfernen:
 +
* "Android R" --> [alles entfernen]
  
 
== NDK einrichten ==
 
== NDK einrichten ==
Line 121: Line 136:
 
== FPC/Lazarus Crosscompiler bauen ==
 
== FPC/Lazarus Crosscompiler bauen ==
 
=== Lazarus mit FPCUPDeluxe bauen ===
 
=== Lazarus mit FPCUPDeluxe bauen ===
 +
 +
Zuerst eine Trunk mit FPCUPDeluxe bauen. Fur ARM und i386 kann man auch die '''stable''' verwenden.
 +
Siehe hier:
 +
* [[fpcupdeluxe/de|FPCUPDeluxe]]
  
 
Nun fpcupdeluxe starten. Ich empfehle für den Android Crosscompiler zusätzlich ein eigenes
 
Nun fpcupdeluxe starten. Ich empfehle für den Android Crosscompiler zusätzlich ein eigenes
Line 129: Line 148:
 
entschieden. Achtung: das neue Lazarus in ein anderes Verzeichnis als das schon vorhandene
 
entschieden. Achtung: das neue Lazarus in ein anderes Verzeichnis als das schon vorhandene
 
installieren.
 
installieren.
Wen '''trunk''' nicht geht, kann man alternativ '''trunk.git''' nehmen.
+
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.
+
<s>In Lazarus unter Tools, Options, General die Sprache auf deutsch umstellen. Lazarus neu starten.
Folgende Versionen wurden bei mir installiert:
+
Folgende Versionen wurden bei mir installiert:</s>
  
 
=== LAMW mit fpcupdeluxe installieren ===
 
=== LAMW mit fpcupdeluxe installieren ===
Line 148: Line 168:
 
** {{keypress|Install module}} drücken, somit wird das Modul installiert.
 
** {{keypress|Install module}} drücken, somit wird das Modul installiert.
  
 +
=== Cross-Compiler bauen: ===
 
* Im Reiter '''Cross''' noch folgende CheckBoxen anwählen:
 
* Im Reiter '''Cross''' noch folgende CheckBoxen anwählen:
** CPU: '''arm'''
+
** Bei ARM:
** OS: '''android'''
+
*** CPU: '''arm'''
 +
*** OS: '''android'''
 +
 
 +
** Bei i386:
 +
*** CPU: '''i386'''
 +
*** OS: '''android'''
 +
 
 
* Button {{keypress|Install compiler}} drücken, somit wird der Cross-Compiler gebaut.
 
* Button {{keypress|Install compiler}} drücken, somit wird der Cross-Compiler gebaut.
  
<s>
+
== Lazarus einrichten ==
* "Cross --> i386" Hacken    ???? arm
+
 
* "Cross --> arm" Hacken
+
=== Lazarus auf deutsch ===
* "Cross --> android" Hacken
 
* "Install compiler"
 
</s>
 
  
Fehler mit "Ja" bestätigen.
+
* Lazarus mit dem neuen Desktop-Icon (Lazarus_fpcupdeluxe) starten.
 +
* ''"Tools --> Options --> General --> Language"''  Lazarus auf deutsch stellen, mit {{keypress|Ok}} bestätigen und Lazarus neu starten.  
  
== Lazarus einrichten ==
+
Lazarus sollte jetzt deutsch sein.
  
In Lazarus folgendes einstellen:
+
=== LAMW einrichten ===
  
 
* "Werkzeuge --> [LAMW] Android Module Wizard --> Paths Settings [Jdk,Sdk,Ndk]"
 
* "Werkzeuge --> [LAMW] Android Module Wizard --> Paths Settings [Jdk,Sdk,Ndk]"
 
** "Path to Java JDK" -->  /usr/lib/jvm/java-11-openjdk-amd64
 
** "Path to Java JDK" -->  /usr/lib/jvm/java-11-openjdk-amd64
** "Path to Ant bin:" -->  /usr/bin
+
** "Path to Ant bin:" -->  /home/tux/android/fpcupdeluxe/ccr/lamw-ant/apache-ant-1.10.8/bin
 +
** <s>"Path to Ant bin:" -->  /usr/bin</s>
 
** <s>"Path to Gradle" -->  /home/tux/Programme/android/gradle-4.4.1
 
** <s>"Path to Gradle" -->  /home/tux/Programme/android/gradle-4.4.1
 
** "Path to Gradle" -->  /home/tux/Programme/android/gradle-6.2.2</s>
 
** "Path to Gradle" -->  /home/tux/Programme/android/gradle-6.2.2</s>
 
** "Path to Gradle" -->  /home/tux/fpcupdeluxe_android.alt/ccr/lamw-gradle/gradle-6.2.1  
 
** "Path to Gradle" -->  /home/tux/fpcupdeluxe_android.alt/ccr/lamw-gradle/gradle-6.2.1  
 
** <s>"Path to Android NDK" --> /home/tux/Programme/android/sdk/ndk-bundle</s>
 
** <s>"Path to Android NDK" --> /home/tux/Programme/android/sdk/ndk-bundle</s>
** "Path to Android NDK" --> /home/tux/Programme/android/android-ndk-r21
+
** "Path to Android NDK" --> /home/tux/Programme/android/android-ndk-r21d
 
** "NDK Version" --> 11
 
** "NDK Version" --> 11
 
** <s>"Path to Android SDK" --> /home/tux/Programme/android/sdk</s>
 
** <s>"Path to Android SDK" --> /home/tux/Programme/android/sdk</s>
Line 182: Line 208:
 
Als nächstes  
 
Als nächstes  
 
* "Datei --> Neu --> Project --> LAMW[GUI]Android Module"
 
* "Datei --> Neu --> Project --> LAMW[GUI]Android Module"
"Ok"
+
** "Path to Workspace" --> /home/tux/android_test
 +
** "Architekture/Instructions" --> ARMv7a+VFPv3
 +
** "Apk Builder: --> "Gradle
 +
{{keypress|Ok}} drücken
 +
 
 +
Projekt will sich speichern, mit "speichern" bestätigen.
 +
 
 +
=== Erster Start ===
 +
* "Start" --> [LAMW] Build Android Apk and Run<br>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
  
"Path to Workspace" --> /home/tux/android_test
 
<s>"Architekture/Instructions" --> x86  ?????</s>
 
"Architekture/Instructions" --> ARMv7a+VFPv3
 
  
 
[[Category:Code Snippets]]
 
[[Category:Code Snippets]]
 
[[Category:Code Snippets/Multiplatform]]
 
[[Category:Code Snippets/Multiplatform]]

Latest revision as of 12:19, 24 August 2020

Warning-icon.png

Warnung: , der Artikel ist Beta

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:

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 Entpacken gradle-x.x.x in gradle umbennen

      Wichtig, Pfade weiter unten müssen an die Version angepasst werden, zB. Export !

SDK-Manager downloaden und einrichten

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:

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 i386:
      • CPU: i386
      • OS: android
  • 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