Installation du Roguelike Nethack sur Android

Distribution de travail : Lubuntu 22.04

Téléphone mobile : Motorola G34 5G
Android : Version 13

Liens : https://github.com/gurrhack/NetHack-Android/tree/master/sys/android

1/ Création du répertoire de travail.

util01@station40:~$ mkdir ANDROID
util01@station40:~$ cd ANDROID/
util01@station40:~/ANDROID$

2/ Installation des outils de développement.

util01@station40:~/ANDROID$ sudo apt-get install bison flex

3/ Téléchargement de Android Studio LadyBug.

Site de téléchargement :
https://developer.android.com/studio/index.html

Version : 2024.2.1.10-linux

util01@station40:~/ANDROID$ tar xvfz android-studio-2024.2.1.10-linux.tar.gz

4/ Installation du SDK et du Command-Line Tools.

util01@station40:~/ANDROID$ cd android-studio/bin/
util01@station40:~/ANDROID/android-studio/bin$ ./studio

Une fenêtre apparait pour valider le téléchargement du SDK Android.

Version : Android SDK Platform 34 (revision 3)

- [Tools][SDK Manager]
  • Dans l'onglet [SDK Platforms] :
Name : Android 14.0 ("UpsideDownCake")  
API Level : 34
Revision : 3
  • Dans l'onglet [SDK Tools] : Sélectionner :
    - NDK (Side by side)
    - Android SDK Command-line Tools (latest)
- [Apply]
- [OK]

Après quelques minutes :

- Version du NDK installé : v.28.0.12433566 rc1
- Version du Command Line Tools : 12266719 / v.16.0

5/ Exporter le répertoire du SDK.

util01@station40:~/ANDROID$ export ANDROID_SDK_ROOT=/home/util01/Android/Sdk/

6/ Installation de Java v15.

Cette version de Java 15 est compatible avec la version de Gradle version 6.7.1

https://www.tutorials24x7.com/java/how-to-install-openjdk-15-on-ubuntu-2004-lts
https://jdk.java.net/archive/

  • Téléchargement de OpenJDK :
util01@station40:~/ANDROID$ wget https://download.java.net/java/GA/jdk15.0.2/0d1cfde4252546c6931946de8db48ee2/7/GPL/openjdk-15.0.2_linux-x64_bin.tar.gz
  • Création du répertoire de travail :
util01@station40:~/ANDROID$ sudo mkdir -p /usr/java/openjdk
util01@station40:~/ANDROID$ cd /usr/java/openjdk/
  • Copier l'archive dans le répertoire de travail :
util01@station40:/usr/java/openjdk$ sudo cp /home/util01/ANDROID/openjdk-15.0.2_linux-x64_bin.tar.gz .
  • Décompression de l'archive :
util01@station40:/usr/java/openjdk$ sudo tar -xzvf openjdk-15.0.2_linux-x64_bin.tar.gz 
  • Exporter le répertoire de OpenJDK :
util01@station40:/usr/java/openjdk$ export JAVA_HOME=/usr/java/openjdk/jdk-15.0.2
util01@station40:/usr/java/openjdk$ export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
  • Configurer Java pour prendre en compte cette version :
util01@station40:/usr/java/openjdk$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/java/openjdk/jdk-15.0.2/bin/java" 1
util01@station40:/usr/java/openjdk$ sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/java/openjdk/jdk-15.0.2/bin/javac" 1
util01@station40:/usr/java/openjdk$ sudo update-alternatives --config java
util01@station40:/usr/java/openjdk$ sudo update-alternatives --config javac
  • Vérification :
util01@station40:/usr/java/openjdk$ java -version
openjdk version "15.0.2" 2021-01-19
OpenJDK Runtime Environment (build 15.0.2+7-27)
OpenJDK 64-Bit Server VM (build 15.0.2+7-27, mixed mode, sharing)
util01@station40:/usr/java/openjdk$ javac -version
javac 15.0.2

7/ Téléchargement du code source de Nethack pour Android.

util01@station40:~/ANDROID$ git clone https://github.com/gurrhack/NetHack-Android.git
util01@station40:~/ANDROID$ cd NetHack-Android/sys/android/
util01@station40:~/ANDROID/NetHack-Android/sys/android$ 

8/ Configuration de la compilation.

Ouvrir :

Makefile.src

Chercher :

NDK = /path/to/android-ndk-r19

Remplacer par :

NDK = /home/util01/Android/Sdk/ndk/28.0.12433566

Chercher:

CC_armeabi     = $(NDK_TOOLCHAIN)/armv7a-linux-androideabi16-clang
LD_armeabi     = $(NDK_TOOLCHAIN)/arm-linux-androideabi-ld
CC_armeabi-v7a = $(NDK_TOOLCHAIN)/armv7a-linux-androideabi16-clang
LD_armeabi-v7a = $(NDK_TOOLCHAIN)/arm-linux-androideabi-ld

Remplacer par :

CC_armeabi     = $(NDK_TOOLCHAIN)/armv7a-linux-androideabi35-clang
LD_armeabi     = $(NDK_TOOLCHAIN)/arm-linux-androideabi-ld
CC_armeabi-v7a = $(NDK_TOOLCHAIN)/armv7a-linux-androideabi35-clang
LD_armeabi-v7a = $(NDK_TOOLCHAIN)/arm-linux-androideabi-ld

8/ Configuration de la compilation.

util01@station40:~/ANDROID/NetHack-Android/sys/android$ sh ./setup.sh 
util01@station40:~/ANDROID/NetHack-Android/sys/android$ cd ../..
util01@station40:~/ANDROID/NetHack-Android$

9/ Compilation en C.

util01@station40:~/ANDROID/NetHack-Android$ make

10/ Configuration de l'installation.

util01@station40:~/ANDROID/NetHack-Android$ cp sys/android/defaults.nh sys/android/app/

11/ Installation.

util01@station40:~/ANDROID/NetHack-Android$ make install
util01@station40:~/ANDROID/NetHack-Android$ cd sys/android/
util01@station40:~/ANDROID/NetHack-Android/sys/android$ 

12/ Configuration de la compilation en Java.

util01@station40:~/ANDROID/NetHack-Android/sys/android$ chmod +x gradlew

13/ Compilation en Java.

util01@station40:~/ANDROID/NetHack-Android/sys/android$ ./gradlew --version
------------------------------------------------------------
Gradle 6.7.1
------------------------------------------------------------

Build time:   2020-11-16 17:09:24 UTC
Revision:     2972ff02f3210d2ceed2f1ea880f026acfbab5c0

Kotlin:       1.3.72
Groovy:       2.5.12
Ant:          Apache Ant(TM) version 1.10.8 compiled on May 10 2020
JVM:          15.0.2 (Oracle Corporation 15.0.2+7-27)
OS:           Linux 5.15.0-124-generic amd64
util01@station40:~/ANDROID/NetHack-Android/sys/android$ ./gradlew build

14/ Vérificaiton.

util01@station40:~/ANDROID/NetHack-Android/sys/android$ ls -l app/build/outputs/apk/debug/
total 8896
-rw-r--r-- 1 util01 www-data 9097378 oct.  27 22:15 app-debug.apk
-rw-r--r-- 1 util01 www-data     339 oct.  27 22:15 output-metadata.json

15/ Copier le fichier apk.

Copier le fichier 'app-debug.apk' vers le téléphone portable.

16/ Installer le fichier apk.

17/ Jouer maintenant à Nethack !!

nha.jpg