How to run the Android emulator on the Jetson nano 4 GB using -gpu host

264 views
Skip to first unread message

Mario Marietto

unread,
Sep 13, 2024, 3:33:51 PM9/13/24
to angleproject
Hello to everyone.

I'm trying to run the Android emulator on the Jetson nano 4 GB where I have installed Ubuntu 22.04. This is the tutorial that I'm reading from :

https://android.googlesource.com/platform/external/angle/+/e867a62fc822d0bd152ab6ae34cd012eb4408324/doc/DevSetup.md

really I want to pass the parameter -gpu host :

/opt/android-sdk/emulator/emulator @MyAVD -cores 4 -lowram -memory 2048 -gpu host -ports 5554,5555 -skip-adb-auth -no-boot-anim -no-snapshot -no-metrics -qemu \
-machine gic-version=2

instead of the parameter -gpu swiftshader_indirect

/opt/android-sdk/emulator/emulator @MyAVD -cores 4 -lowram -memory 2048 -gpu swiftshader_indirect -ports 5554,5555 -skip-adb-auth -no-boot-anim -no-snapshot \
-no-metrics -qemu -machine gic-version=2

To achieve this goal I read that I should have libshadertranslator.so that I can have only building separately the ANGLE). So,this is what I tried to do,but some kind of error is preventing me to complete the task :


aresuser@jetson:/opt/android-sdk$ nano /home/aresuser/.bashrc


...
export ANDROID_SDK_ROOT=/opt/android-sdk
export ANDROID_HOME=/opt/android-sdk
export ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL=60
export PATH=/opt/android-sdk/emulator:/opt/android-sdk/depot_tools:/home/aresuser/.local/bin:/home/aresuser/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/opt/android-sdk/cmdline-tools/latest/bin


aresuser@jetson:/opt/android-sdk/depot_tools$ echo $PATH
/opt/android-sdk/depot_tools:/home/aresuser/.local/bin:/home/aresuser/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/opt/android-sdk/cmdline-tools/latest/bin


aresuser@jetson:/opt/android-sdk$ git clone https://chromium.googlesource.com/angle/angle


aresuser@jetson:/opt/android-sdk$ cd angle


aresuser@jetson:/opt/android-sdk/angle$ python scripts/bootstrap.py
created .gclient


aresuser@jetson:/opt/android-sdk/angle$ gclient sync --no-history

Syncing projects:  71% (149/209) third_party/flatbuffers/src                                                  
[0:01:46] Still working on:
[0:01:46]   third_party/SwiftShader
[0:01:46]   third_party/VK-GL-CTS/src
[0:01:46]   third_party/astc-encoder/src
[0:01:46]   third_party/catapult
[0:01:46]   third_party/dawn
[0:01:46]   third_party/glmark2/src
[0:01:46]   third_party/glslang/src
[0:01:46]   third_party/googletest

[0:01:56] Still working on:
[0:01:56]   third_party/SwiftShader
[0:01:56]   third_party/VK-GL-CTS/src
[0:01:56]   third_party/astc-encoder/src
[0:01:56]   third_party/catapult
[0:01:56]   third_party/dawn
[0:01:56]   third_party/glmark2/src
[0:01:56]   third_party/glslang/src
[0:01:56]   third_party/googletest

[0:01:56] Still working on:
[0:01:56]   third_party/SwiftShader
[0:01:56]   third_party/VK-GL-CTS/src
[0:01:56]   third_party/astc-encoder/src
[0:01:56]   third_party/catapult
[0:01:56]   third_party/dawn
[0:01:56]   third_party/glmark2/src
[0:01:56]   third_party/glslang/src
[0:01:56]   third_party/googletest
Syncing projects:  75% (159/211) third_party/jinja2                                          
[0:03:14] Still working on:
[0:03:14]   third_party/SwiftShader
[0:03:14]   third_party/VK-GL-CTS/src
[0:03:14]   third_party/catapult
[0:03:14]   third_party/dawn
[0:03:14]   third_party/libc++/src
[0:03:14]   third_party/libc++abi/src
[0:03:14]   third_party/libdrm
[0:03:14]   third_party/libjpeg_turbo

[0:03:24] Still working on:
[0:03:24]   third_party/SwiftShader
[0:03:24]   third_party/VK-GL-CTS/src
[0:03:24]   third_party/catapult
[0:03:24]   third_party/dawn
[0:03:24]   third_party/libc++/src
[0:03:24]   third_party/libc++abi/src
[0:03:24]   third_party/libdrm
[0:03:24]   third_party/libjpeg_turbo

[0:03:34] Still working on:
[0:03:34]   third_party/SwiftShader
[0:03:34]   third_party/VK-GL-CTS/src
[0:03:34]   third_party/catapult
[0:03:34]   third_party/dawn
[0:03:34]   third_party/libc++/src
[0:03:34]   third_party/libc++abi/src
[0:03:34]   third_party/libdrm
[0:03:34]   third_party/libjpeg_turbo

[0:03:40] Still working on:
[0:03:40]   third_party/SwiftShader
[0:03:40]   third_party/VK-GL-CTS/src
[0:03:40]   third_party/catapult
[0:03:40]   third_party/dawn
[0:03:40]   third_party/libc++/src
[0:03:40]   third_party/libc++abi/src
[0:03:40]   third_party/libdrm
[0:03:40]   third_party/libjpeg_turbo
Syncing projects:  75% (165/219) third_party/libc++/src      
[0:05:04] Still working on:
[0:05:04]   third_party/SwiftShader
[0:05:04]   third_party/VK-GL-CTS/src
[0:05:04]   third_party/catapult
[0:05:04]   third_party/libpng/src
[0:05:04]   third_party/llvm/src
[0:05:04]   third_party/lunarg-vulkantools/src
[0:05:04]   third_party/markupsafe
[0:05:04]   third_party/nasm

[0:05:13] Still working on:
[0:05:13]   third_party/SwiftShader
[0:05:13]   third_party/VK-GL-CTS/src
[0:05:13]   third_party/catapult
[0:05:13]   third_party/libpng/src
[0:05:13]   third_party/llvm/src
[0:05:13]   third_party/lunarg-vulkantools/src
[0:05:13]   third_party/markupsafe
[0:05:13]   third_party/nasm
Syncing projects:  99% (217/219) third_party/dawn/third_party/dxc                                    
[0:13:04] Still working on:
[0:13:04]   third_party/llvm/src
[0:13:04]   third_party/dawn/third_party/khronos/OpenGL-Registry

[0:13:14] Still working on:
[0:13:14]   third_party/llvm/src
[0:13:14]   third_party/dawn/third_party/khronos/OpenGL-Registry

[0:13:24] Still working on:
[0:13:24]   third_party/llvm/src
[0:13:24]   third_party/dawn/third_party/khronos/OpenGL-Registry

[0:13:34] Still working on:
[0:13:34]   third_party/llvm/src
[0:13:34]   third_party/dawn/third_party/khronos/OpenGL-Registry

[0:13:44] Still working on:
[0:13:44]   third_party/llvm/src
[0:13:44]   third_party/dawn/third_party/khronos/OpenGL-Registry

[0:13:51] Still working on:
[0:13:51]   third_party/llvm/src
[0:13:51]   third_party/dawn/third_party/khronos/OpenGL-Registry
Syncing projects: 100% (219/219), done.                                              
Running hooks:  17% ( 7/39) clang        
________ running 'python3 tools/clang/scripts/update.py' in '/opt/android-sdk/angle/.'
Downloading https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64/clang-llvmorg-20-init-3847-g69c43468-17.tar.xz .......... Done.
Hook 'python3 tools/clang/scripts/update.py' took 25.71 secs
Running hooks:  20% ( 8/39) rust
________ running 'python3 tools/rust/update_rust.py' in '/opt/android-sdk/angle/.'
Downloading https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64/rust-toolchain-009e73825af0e59ad4fc603562e038b3dbd6593a-2-llvmorg-20-init-3847-g69c43468.tar.xz .......... Done.
Hook 'python3 tools/rust/update_rust.py' took 64.72 secs
Running hooks:  33% (13/39) linux_glslang_validator
________ running 'python3 third_party/depot_tools/download_from_google_storage.py --no_resume --platform=linux* --no_auth --bucket angle-glslang-validator -s tools/glslang/glslang_validator.sha1' in '/opt/android-sdk/angle/.'
0> Downloading tools/glslang/glslang_validator@de8679c3e2f15291ba4f5c32eebc954ce78bf39c...
Downloading 1 files took 25.990023 second(s)
Hook 'python3 third_party/depot_tools/download_from_google_storage.py --no_resume '--platform=linux*' --no_auth --bucket angle-glslang-validator -s tools/glslang/glslang_validator.sha1' took 26.34 secs
Running hooks:  38% (15/39) linux_flex_bison      
________ running 'python3 third_party/depot_tools/download_from_google_storage.py --no_resume --platform=linux* --no_auth --bucket angle-flex-bison -d tools/flex-bison/linux/' in '/opt/android-sdk/angle/.'
0> Downloading tools/flex-bison/linux/bison@36625019a2442ac8efc92c32e1d61bd3f450b7ab...
0> Downloading tools/flex-bison/linux/flex@3c9694c62a4ad0d1f95b45bb748855c3688c923e...
Downloading 2 files took 26.081814 second(s)
Hook 'python3 third_party/depot_tools/download_from_google_storage.py --no_resume '--platform=linux*' --no_auth --bucket angle-flex-bison -d tools/flex-bison/linux/' took 32.47 secs
Running hooks: 100% (39/39), done.                
       

aresuser@jetson:/opt/android-sdk/angle$ git checkout master
error: lo specificatore percorso 'master' non corrisponde ad alcun file noto a git
         

aresuser@jetson:/opt/android-sdk/angle/build$ ./install-build-deps.sh
Running as non-root user.
You might have to enter your password one or more times for 'sudo'.

Trovato:1 http://ports.ubuntu.com/ubuntu-ports jammy InRelease
Trovato:2 http://ports.ubuntu.com/ubuntu-ports jammy-updates InRelease                                
Trovato:3 http://ports.ubuntu.com/ubuntu-ports jammy-backports InRelease                                    
Trovato:4 http://ports.ubuntu.com/ubuntu-ports jammy-security InRelease                                      
Trovato:5 https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu jammy InRelease                            
Trovato:6 https://ppa.launchpadcontent.net/phd/chromium-browser/ubuntu jammy InRelease
Scaricamento di:7 https://apt.kitware.com/ubuntu jammy InRelease [15,5 kB]
Errore:7 https://apt.kitware.com/ubuntu jammy InRelease
  Le seguenti firme non sono state verificate perché la chiave pubblica non è disponibile: NO_PUBKEY 1A127079A92F09ED
Recuperati 15,5 kB in 3s (5.444 B/s)
Lettura elenco dei pacchetti... Fatto
W: Si è verificato un errore nel verificare la firma. Il repository non è aggiornato e verranno usati i file indice precedenti. Errore GPG: https://apt.kitware.com/ubuntu jammy InRelease: Le seguenti firme non sono state verificate perché la chiave pubblica non è disponibile: NO_PUBKEY 1A127079A92F09ED
W: Impossibile recuperare https://apt.kitware.com/ubuntu/dists/jammy/InRelease  Le seguenti firme non sono state verificate perché la chiave pubblica non è disponibile: NO_PUBKEY 1A127079A92F09ED
W: Impossibile scaricare alcuni file di indice: saranno ignorati o verranno usati quelli vecchi.
Finding missing packages...
Building apt package list.
Skipping debugging symbols.
Skipping 32-bit libraries.
Skipping ARM cross toolchain.
Skipping NaCl, NaCl toolchain, NaCl ports dependencies.
Skipping backwards compatible packages.
Packages required: binutils binutils-aarch64-linux-gnu binutils-arm-linux-gnueabihf binutils-mips64el-linux-gnuabi64 binutils-mipsel-linux-gnu bison bzip2 cdbs curl dbus-x11 devscripts dpkg-dev elfutils fakeroot flex git-core gperf libasound2 libasound2-dev libatk1.0-0 libatspi2.0-0 libatspi2.0-dev libbluetooth-dev libbrlapi-dev libbrlapi0.8 libbz2-1.0 libbz2-dev libc6 libc6-dev libcairo2 libcairo2-dev libcap-dev libcap2 libcgi-session-perl libcups2 libcups2-dev libcurl4-gnutls-dev libdrm-dev libdrm2 libegl1 libelf-dev libevdev-dev libevdev2 libexpat1 libffi-dev libffi8 libfontconfig1 libfreetype6 libfuse2 libgbm-dev libgbm1 libgl1 libglib2.0-0 libglib2.0-dev libglu1-mesa-dev libgtk-3-0 libgtk-3-dev libinput-dev libinput10 libjpeg-dev libkrb5-dev libncurses6 libnspr4 libnspr4-dev libnss3 libnss3-dev libpam0g libpam0g-dev libpango-1.0-0 libpangocairo-1.0-0 libpci-dev libpci3 libpcre3 libpixman-1-0 libpng16-16 libpulse-dev libpulse0 libsctp-dev libspeechd-dev libspeechd2 libsqlite3-0 libsqlite3-dev libssl-dev libstdc++6 libsystemd-dev libudev-dev libudev1 libuuid1 libva-dev libvulkan-dev libvulkan1 libwayland-egl1 libwayland-egl1-mesa libwww-perl libx11-6 libx11-xcb1 libxau6 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxi6 libxinerama1 libxkbcommon-dev libxrandr2 libxrender1 libxshmfence-dev libxslt1-dev libxss-dev libxt-dev libxtst-dev libxtst6 lighttpd locales mesa-common-dev openbox p7zip patch perl pkgconf rpm ruby subversion uuid-dev wdiff x11-utils x11-xserver-utils xcompmgr xz-utils zip zlib1g zstd
No missing packages, and the packages are up to date.
Skipping installation of Chrome OS fonts.
Installing locales.
Generating locales (this might take a while)...
  da_DK.UTF-8... done
  en_US.UTF-8... done
  es_ES.UTF-8... done
  fr_FR.UTF-8... done
  he_IL.UTF-8... done
  it_CH.UTF-8... done
  it_IT.UTF-8... done
  zh_TW.UTF-8... done
Generation complete.


aresuser@jetson:/opt/android-sdk/angle/build$ gn gen out/Debug


ERROR at //build/config/sysroot.gni:63:7: Assertion failed.
      assert(
      ^-----
Missing sysroot (//build/linux/debian_bullseye_arm64-sysroot). To fix, run: build/linux/sysroot_scripts/install-sysroot.py --arch=arm64
See //build/config/sysroot.gni:64:11:
          exec_script("//build/dir_exists.py",
          ^-----------------------------------
This is where it was set.
See //build/config/linux/pkg_config.gni:5:1: whence it was imported.
import("//build/config/sysroot.gni")
^----------------------------------
See //BUILD.gn:18:3: whence it was imported.
  import("//build/config/linux/pkg_config.gni")
  ^-------------------------------------------


aresuser@jetson:/opt/android-sdk/angle/build$ ./linux/sysroot_scripts/install-sysroot.py --arch=arm64


Installing Debian bullseye arm64 root image: /opt/android-sdk/angle/build/linux/debian_bullseye_arm64-sysroot
Downloading https://commondatastorage.googleapis.com/chrome-linux-sysroot/308e23faba3174bd01accfe358467b8a40fad4db4c49ef629da30219f65a275f


aresuser@jetson:/opt/android-sdk/angle/build$ gn args out/Debug


target_cpu = "arm64"
is_debug = false


aresuser@jetson:/opt/android-sdk/angle/build$ gn gen out/Debug
Done. Made 921 targets from 298 files in 8351ms


aresuser@jetson:/opt/android-sdk/emulator$ sudo find / -name libvulkan.so


/usr/lib/aarch64-linux-gnu/libvulkan.so
/opt/android-sdk/angle/third_party/android_sdk/public/emulator/lib64/vulkan/libvulkan.so
/opt/android-sdk/emulator/lib64/vulkan/libvulkan.so


aresuser@jetson:/opt/android-sdk/emulator$ sudo find / -name libshadertranslator.so


./lib64/libshadertranslator.so
/opt/android-sdk/angle/third_party/android_sdk/public/emulator/lib64/libshadertranslator.so


aresuser@jetson:/opt/android-sdk/emulator$ cp /opt/android-sdk/angle/third_party/android_sdk/public/emulator/lib64/libshadertranslator.so /opt/android-sdk/emulator/lib64

aresuser@jetson:/opt/android-sdk/emulator$ mkdir -p /opt/android-sdk/emulator/lib64/vulkan

aresuser@jetson:/opt/android-sdk/emulator$ cp /opt/android-sdk/angle/third_party/android_sdk/public/emulator/lib64/vulkan/libvulkan.so /opt/android-sdk/emulator/lib64/vulkan

aresuser@jetson:/opt/android-sdk/emulator$ emulator @MyAVD -cores 2 -lowram -memory 2048 -gpu host -ports 5554,5555 -skip-adb-auth -no-boot-anim -no-snapshot -no-metrics -qemu -machine gic-version=2


INFO         | Android emulator version 35.3.2.0 (build_id 12364726) (CL:N/A)
INFO         | Graphics backend: gfxstream
INFO         | Android emulator version 35.3.2.0 (build_id 12364726) (CL:N/A)
INFO         | Graphics backend: gfxstream
INFO         | Found systemPath /opt/android-sdk/system-images/android-35/google_apis/arm64-v8a/
INFO         | Duplicate loglines will be removed, if you wish to see each individual line launch with the -log-nofilter flag.
INFO         | Warning: QMetaObject::connectSlotsByName: No matching signal for on_new_posture_requested(int) ((null):0, (null))

INFO         | Warning: QMetaObject::connectSlotsByName: No matching signal for on_dismiss_posture_selection_dialog() ((null):0, (null))

INFO         | Warning: QMetaObject::connectSlotsByName: No matching signal for on_new_resizable_requested(PresetEmulatorSizeType) ((null):0, (null))

INFO         | Warning: QMetaObject::connectSlotsByName: No matching signal for on_dismiss_resizable_dialog() ((null):0, (null))

INFO         | Warning: QMetaObject::connectSlotsByName: No matching signal for on_sleep_timer_done() ((null):0, (null))

INFO         | Warning: QMetaObject::connectSlotsByName: No matching signal for on_unfold_timer_done() ((null):0, (null))

INFO         | Storing crashdata in: /tmp/android-aresuser/emu-crash-35.3.2.db, detection is enabled for process: 21368 library_mode host gpu mode host

WARNING      | emuglConfig_get_vulkan_hardware_gpu: failed to open /opt/android-sdk/emulator/lib64/vulkan/libvulkan.so
WARNING      | emuglConfig_get_vulkan_hardware_gpu: failed to open /opt/android-sdk/emulator/lib64/vulkan/libvulkan.so
WARNING      | Could not detect GPU properly for Vulkan emulation. Please try updating your GPU Drivers.
INFO         | Initializing hardware OpenGLES emulation support

android_startOpenglesRenderer: gpu infoI0913 19:22:19.147699   21368 FrameBuffer.cpp:260] Raised nofile soft limit to 4096.

I0913 19:22:19.147956   21368 HealthMonitor.cpp:279] HealthMonitor disabled.
E0913 19:22:19.333234   21368 ANGLEShaderParser.cpp:52] LazyLoadedSTDispatch:
Could not open shader translator library libshadertranslator.so [libshadertranslator.so: cannot open shared object file: No such file or directory]

./start-android: riga 3: 21368 Segmentation Error emulator @MyAVD -cores 2 -lowram -memory 2048 -gpu host -ports 5554,5555 -skip-adb-auth -no-boot-anim -no-snapshot \
-no-metrics -qemu -machine gic-version=2


aresuser@jetson:/opt/android-sdk/angle/third_party/android_sdk/public/emulator$ ./emulator @MyAVD -cores 2 -lowram -memory 2048 -gpu host -ports 5554,5555 -skip-adb-auth -no-boot-anim -no-snapshot -no-metrics -qemu -machine gic-version=2
x86_64-binfmt-P: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory
Reply all
Reply to author
Forward
0 new messages