11 janvier 2019

Compiler la librairie ZGameEditor pour Android avec Free Pascal


Pour mettre à jour Omeganaut sur Google Play, il a fallu que je compile la librairie ZGameEditor pour API 29. Manque de bol, c'était pas facile. Mais après plusieurs jours de recherche, j'ai finalement trouvé la méthode. Alors j'en ai fait un tuto pour laisser une trace sur internet.


1 - JAVA


Installez la dernière version de Java SE 8 (la version 11 LTS n'est pas supportée par Android toolchain) :

Ajoutez la variable d'environnement Windows pointant vers le dossier de Java JDK (Variable système) :

JAVA_HOME C:\Program Files\Java\jdk1.8.0_191

2 - ANDROID


Installation d'Android SDK et Apache-Ant

Malheureusement, on ne peut plus télécharger Android SDK directement. Il est maintenant intégré dans le gargantuesque Android Developer Studio. Donc le moyen le plus simple de récupérer Android SDK et Apache-Ant est d'installer LazToApk :

Lors de l'installation, cochez seulement ces deux options :

01.) Download Android SDK
03.) Download apache-ant

Créez le dossier C:\Android

Puis copiez les deux dossiers suivants dans C:\Android

C:\laztoapk\downloads\android-sdk-windows
C:\laztoapk\downloads\apache-ant-1.10.3

Installation d'Android NDK

La version la plus récente d'Android NDK n'est pas incluse dans LazToApk.
Il faut donc télécharger Android NDK Stable Version r21e (C'est la dernière version NDK à inclure le dossier "platforms" nécessaire a la compilation de ZGE).

Et l'extraire dans le dossier C:\Android.

Maintenant vous devriez avoir :

C:\Android\android-ndk-r21e
C:\Android\android-sdk-windows
C:\Android\apache-ant-1.10.3

Vous pouvez maintenant désinstaller LazToApk.


Mettre à jour Android SDK

Lancez C:\Android\android-sdk-windows\SDK Manager.exe

Voici ce dont vous avez besoin :

Tools / Android SDK Platform-tools
Tools / Android SDK Build-tools
Android 10 (API 29) / SDK Platform
Extras / Google USB Drivers

3 - FREE PASCAL

C'est là que ça devient bizarre. Les fonctions nécessaires à la compilation de ZGameEditor ne sont présentes que dans la version en développement de Free Pascal. Et pour utiliser cette version, il faut la compiler avec un Free Pascal déjà installé. Je me demande comment ils ont fait pour compiler le tout premier Free Pascal !?

Installation de Free Pascal

Téléchargez la dernière version de Free Pascal Compiler :

Il s'est installé dans C:\FPC\3.0.4


Free Pascal Development Tree

Téléchargez Free Pascal Daily Source Snapshot of Development Tree (trunk) :

Extraire le zip dans C:\FPC


Compilation de Free Pascal trunk

Créez le dossier C:\FPC\trunk

Dans C:\FPC\fpc, créez le fichier make_i386.bat avec :

PATH=C:\FPC\3.0.4\bin\i386-win32;
SET FPC=C:\FPC\3.0.4\bin\i386-win32\fpc.exe
make.exe clean distclean
make.exe all OPT="-gw -godwarfset -O-1"
make.exe install INSTALL_PREFIX=C:\FPC\trunk COPYTREE=echo
pause

Lancez make_i386.bat et allez-vous faire un café, c'est très long.


Compilation de Free Pascal cross Android Trunk

Dans C:\FPC\fpc, créez le fichier make_android32.bat avec :

PATH=C:\FPC\3.0.4\bin\i386-win32;C:\Android\android-ndk-r21e\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin;
SET FPC=C:\FPC\3.0.4\bin\i386-win32\fpc.exe
make clean crossall crossinstall OS_TARGET=android CPU_TARGET=arm CROSSOPT="-dANDROID -CpARMv6 -CfVFPv2" INSTALL_PREFIX=C:\FPC\trunk
pause

Lancez make_android32.bat et sortez prendre l'air. Il fait beau et elle vous manque...

Pour compiler la version Android 64bits... Créez le fichier make_android64.bat avec :

PATH=C:\FPC\3.0.4\bin\i386-win32;C:\Android\android-ndk-r21e\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin;
SET FPC=C:\FPC\3.0.4\bin\i386-win32\fpc.exe
make clean crossall crossinstall OS_TARGET=android CPU_TARGET=aarch64 CROSSOPT="-dANDROID" INSTALL_PREFIX=C:\FPC\trunk
pause

Lancez make_android64.bat et faites le point sur votre vie.


4 - ZGAMEEDITOR

Téléchargez le code source de ZGameEditor :

Extraire le zip dans C:\zgameeditor

Créez C:\zgameeditor\Build\android\build_android32.bat avec les noms des dossiers créés dans ce tutoriel :

pushd "%~dp0"

if not exist "java\libs\armeabi\" mkdir java\libs\armeabi
if not exist "lib\arm-linux\" mkdir lib\arm-linux

PATH=C:\Android\android-ndk-r21e\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin;

C:\FPC\trunk\bin\i386-win32\ppcrossarm -B -MDelphi -Sghi -O3 -Tandroid -Parm -XXis -vw -Filib\arm-linux -FlC:\Android\android-ndk-r21e\platforms\android-29\arch-arm\usr\lib -Fu. -Fu..\.. -FUlib\arm-linux\ -FEjava\libs\armeabi\ -olibzgeandroid.so -dANDROID -dMINIMAL -Xd -CpARMV6 -CfVFPv2 -FuC:\FPC\trunk\units\arm-android\fcl-base -FuC:\FPC\trunk\units\arm-android\hash -FuC:\FPC\trunk\units\arm-android\rtl-objpas -FuC:\FPC\trunk\units\arm-android\paszlib zgeandroid.pas

popd
pause

Lancez le fichier build_android32.bat et si tout s'est bien déroulé, vous obtiendrez la librairie C:\zgameeditor\Build\android\java\libs\armeabi\libzgeandroid.so nécessaire au bon fonctionnement de ZGameEditor sur API 29.


🦊🦅🐸🐰

Sur ce, je vais enfin pouvoir mettre à jour Omeganaut sur Google Play :


Tags

Catégories

Archives