devarajabc
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.

      Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Explore these features while you wait
      Complete general settings
      Bookmark and like published notes
      Write a few more notes
      Complete general settings
      Write a few more notes
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.

    Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Explore these features while you wait
    Complete general settings
    Bookmark and like published notes
    Write a few more notes
    Complete general settings
    Write a few more notes
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    podman run -d -it --name local-ubuntu-dev -v /home/$USER:/home/$USER ubuntu podman exec -it local-ubuntu-dev /bin/bash ```shell # --userns=keep-id -e WAYLAND_DISPLAY podman run -d -it --userns=keep-id -e USER --net=host \ -e DISPLAY -e XDG_RUNTIME_DIR -e XAUTHORITY -v /tmp/.X11-unix:/tmp/.X11-unix -v $XDG_RUNTIME_DIR:$XDG_RUNTIME_DIR -v "$HOME/.Xauthority:/home/ubuntu/.Xauthority:ro" -p 6000:6000 \ -e PULSE_SERVER=unix:/run/user/$(id -u)/pulse/native --device /dev/snd:/dev/snd -v /run/user/$(id -u)/pulse:/run/user/$(id -u)/pulse \ -v /home/$USER:/home/$USER --name nb_qemu-build-install localhost/nb_qemu-build-install podman exec -it nb_qemu-build-install /bin/bash cd /home/chiu/android_project/atl_test_apks ATL_DIRECT_EGL=1 ANDROID_APP_DATA_DIR=. android-translation-layer sample_unity_app.apk ANDROID_APP_DATA_DIR=. android-translation-layer demo_app.apk NB_QEMU_SYSROOT=/usr/local/share/libnb-qemu-guest/ ATL_DIRECT_EGL=1 ANDROID_APP_DATA_DIR=. LD_LIBRARY_PATH=/usr/local/lib/art/ \ android-translation-layer com.rovio.angrybirds_8.0.3-22680302_minAPI16\(armeabi-v7a\,x86\)\(nodpi\)_apkmirror.com.apk \ -X '-Xforce-nb-testing' -X '-XX:NativeBridge=/usr/local/lib64/libnb-qemu.so' podman stop -t 1 nb_qemu-build-install && podman rm nb_qemu-build-install podman commit nb_qemu-build-install # wcp -r /usr/local/lib/x86_64-linux-gnu/java/dex/android_translation_layer /usr/local/lib/java/dex/ ``` #### `podman commit local-ubuntu-dev android_translation_layer-dependencies` ```bash sudo apt install -y build-essential libasound2-dev libavcodec-dev libcap-dev libdrm-dev libglib2.0-dev libgtk-4-dev libgudev-1.0-dev libopenxr-dev libportal-dev libsqlite3-dev libwebkitgtk-6.0-dev libvulkan-dev libavformat-dev libavutil-dev libswscale-dev libavfilter-dev libavdevice-dev libpostproc-dev ``` ``` git clone https://github.com/wolfSSL/wolfssl.git cd wolfssl git checkout v5.8.2-stable autoreconf -i ./configure --enable-shared --disable-opensslall --disable-opensslextra --enable-aescbc-length-checks --enable-curve25519 --enable-ed25519 --enable-ed25519-stream --enable-oldtls --enable-base64encode --enable-tlsx --enable-scrypt --disable-examples --enable-crl --with-rsa --enable-certs --enable-sessioncerts --enable-encrypted-keys --enable-cert-gen --enable-cert-ext --enable-clr-monitor --enable-jni make -j12 sudo make install git clone https://github.com/libunwind/libunwind.git cd libunwind autoreconf -i # Needed only for building from git. Depends on libtool. ./configure --prefix=/usr/local make -j12 sudo make install git clone https://gitlab.com/android_translation_layer/bionic_translation.git cd bionic_translation meson setup builddir cd builddir meson configure -Dlibdir=lib meson compile sudo meson install git clone https://gitlab.com/android_translation_layer/art_standalone.git cd art_standalone make -j12 ____LIBDIR=lib sudo make ____LIBDIR=lib install git clone https://gitlab.com/android_translation_layer/libopensles-standalone.git cd libopensles-standalone meson setup builddir cd builddir meson configure -Dlibdir=lib meson compile sudo meson install git clone https://gitlab.com/android_translation_layer/android_translation_layer.git cd android_translation_layer meson setup builddir cd builddir meson configure -Dlibdir=lib meson compile sudo meson install ``` #### `podman commit local-ubuntu-dev wolfssl-build-install` ```bash sudo apt install -y autoconf libtool git clone https://github.com/wolfSSL/wolfssl.git cd wolfssl git checkout v5.8.2-stable autoreconf -i ./configure --enable-shared --disable-opensslall --disable-opensslextra --enable-aescbc-length-checks --enable-curve25519 --enable-ed25519 --enable-ed25519-stream --enable-oldtls --enable-base64encode --enable-tlsx --enable-scrypt --disable-examples --enable-crl --enable-jni --enable-sessioncerts make -j12 sudo make install ``` #### `podman commit local-ubuntu-dev libunwind-build-install` ```bash git clone https://github.com/libunwind/libunwind.git cd libunwind autoreconf -i # Needed only for building from git. Depends on libtool. ./configure --prefix=/usr/local make -j12 sudo make install ``` Output: ``` libtool: install: /usr/bin/install -c .libs/test-proc-info /usr/local/libexec/libunwind/test-proc-info libtool: install: /usr/bin/install -c test-static-link /usr/local/libexec/libunwind/test-static-link libtool: install: /usr/bin/install -c .libs/test-strerror /usr/local/libexec/libunwind/test-strerror libtool: install: /usr/bin/install -c .libs/Gtest-bt /usr/local/libexec/libunwind/Gtest-bt libtool: install: /usr/bin/install -c .libs/Ltest-bt /usr/local/libexec/libunwind/Ltest-bt libtool: install: /usr/bin/install -c .libs/Gtest-init /usr/local/libexec/libunwind/Gtest-init libtool: install: /usr/bin/install -c .libs/Ltest-init /usr/local/libexec/libunwind/Ltest-init libtool: install: /usr/bin/install -c .libs/Gtest-concurrent /usr/local/libexec/libunwind/Gtest-concurrent libtool: install: /usr/bin/install -c .libs/Ltest-concurrent /usr/local/libexec/libunwind/Ltest-concurrent libtool: install: /usr/bin/install -c .libs/Gtest-sig-context /usr/local/libexec/libunwind/Gtest-sig-context libtool: install: /usr/bin/install -c .libs/Ltest-sig-context /usr/local/libexec/libunwind/Ltest-sig-context libtool: install: /usr/bin/install -c .libs/Gtest-trace /usr/local/libexec/libunwind/Gtest-trace libtool: install: /usr/bin/install -c .libs/Ltest-trace /usr/local/libexec/libunwind/Ltest-trace libtool: install: /usr/bin/install -c .libs/test-async-sig /usr/local/libexec/libunwind/test-async-sig libtool: install: /usr/bin/install -c .libs/test-flush-cache /usr/local/libexec/libunwind/test-flush-cache libtool: install: /usr/bin/install -c .libs/test-init-remote /usr/local/libexec/libunwind/test-init-remote libtool: install: /usr/bin/install -c .libs/test-mem /usr/local/libexec/libunwind/test-mem libtool: install: /usr/bin/install -c .libs/test-reg-state /usr/local/libexec/libunwind/test-reg-state libtool: install: /usr/bin/install -c .libs/Ltest-varargs /usr/local/libexec/libunwind/Ltest-varargs libtool: install: /usr/bin/install -c .libs/Ltest-nomalloc /usr/local/libexec/libunwind/Ltest-nomalloc libtool: install: /usr/bin/install -c .libs/Ltest-nocalloc /usr/local/libexec/libunwind/Ltest-nocalloc libtool: install: /usr/bin/install -c .libs/Lrs-race /usr/local/libexec/libunwind/Lrs-race libtool: install: /usr/bin/install -c .libs/Ltest-init-local-signal /usr/local/libexec/libunwind/Ltest-init-local-signal libtool: install: /usr/bin/install -c .libs/Gtest-exc /usr/local/libexec/libunwind/Gtest-exc libtool: install: /usr/bin/install -c .libs/Ltest-exc /usr/local/libexec/libunwind/Ltest-exc libtool: install: /usr/bin/install -c .libs/Gtest-resume-sig /usr/local/libexec/libunwind/Gtest-resume-sig libtool: install: /usr/bin/install -c .libs/Ltest-resume-sig /usr/local/libexec/libunwind/Ltest-resume-sig libtool: install: /usr/bin/install -c .libs/Gtest-resume-sig-rt /usr/local/libexec/libunwind/Gtest-resume-sig-rt libtool: install: /usr/bin/install -c .libs/Ltest-resume-sig-rt /usr/local/libexec/libunwind/Ltest-resume-sig-rt libtool: install: /usr/bin/install -c .libs/test-ptrace /usr/local/libexec/libunwind/test-ptrace libtool: install: /usr/bin/install -c .libs/test-setjmp /usr/local/libexec/libunwind/test-setjmp libtool: install: /usr/bin/install -c .libs/Gx64-test-dwarf-expressions /usr/local/libexec/libunwind/Gx64-test-dwarf-expressions libtool: install: /usr/bin/install -c .libs/Lx64-test-dwarf-expressions /usr/local/libexec/libunwind/Lx64-test-dwarf-expressions libtool: install: /usr/bin/install -c .libs/x64-unwind-badjmp-signal-frame /usr/local/libexec/libunwind/x64-unwind-badjmp-signal-frame libtool: install: /usr/bin/install -c forker /usr/local/libexec/libunwind/forker libtool: install: /usr/bin/install -c .libs/Gperf-simple /usr/local/libexec/libunwind/Gperf-simple libtool: install: /usr/bin/install -c .libs/Lperf-simple /usr/local/libexec/libunwind/Lperf-simple libtool: install: /usr/bin/install -c .libs/Gperf-trace /usr/local/libexec/libunwind/Gperf-trace libtool: install: /usr/bin/install -c .libs/Lperf-trace /usr/local/libexec/libunwind/Lperf-trace libtool: install: /usr/bin/install -c mapper /usr/local/libexec/libunwind/mapper libtool: install: /usr/bin/install -c test-ptrace-misc /usr/local/libexec/libunwind/test-ptrace-misc libtool: install: /usr/bin/install -c crasher /usr/local/libexec/libunwind/crasher libtool: install: /usr/bin/install -c .libs/test-coredump-unwind /usr/local/libexec/libunwind/test-coredump-unwind ``` #### `podman commit local-ubuntu-dev bionic_translation-build-install` ```bash # https://gitlab.com/android_translation_layer/bionic_translation/-/blob/master/.gitlab-ci.yml#L58 sudo apt install -y meson cmake pkg-config libegl-dev libelf-dev libbsd-dev bubblewrap tzdata git clone https://gitlab.com/android_translation_layer/bionic_translation.git cd bionic_translation meson setup builddir cd builddir meson configure -Dlibdir=lib meson compile sudo meson install ``` Output: ``` Installing libdl_bio.so.0.0.1 to /usr/local/lib Installing libpthread_bio.so.0 to /usr/local/lib Installing libc_bio.so.0 to /usr/local/lib Installing libstdc++_bio.so.0 to /usr/local/lib Installing /home/chiu/android_project/bionic_translation/cfg.d/bionic_translation.cfg to /usr/local/share/bionic_translation/cfg.d Installing symlink pointing to libdl_bio.so.0.0.1 to /usr/local/lib/libdl_bio.so.0 Installing symlink pointing to libdl_bio.so.0 to /usr/local/lib/libdl_bio.so Installing symlink pointing to libpthread_bio.so.0 to /usr/local/lib/libpthread_bio.so Installing symlink pointing to libc_bio.so.0 to /usr/local/lib/libc_bio.so Installing symlink pointing to libstdc++_bio.so.0 to /usr/local/lib/libstdc++_bio.so ``` ``` rm /usr/local/lib/libdl_bio.* rm /usr/local/lib/libpthread_bio.* rm /usr/local/lib/libc_bio.* rm /usr/local/lib/libstdc++_bio.* ``` #### `podman commit local-ubuntu-dev art_standalone-build-install` ```bash sudo apt install -y default-jdk python-is-python3 meson libegl-dev pkg-config libbsd-dev libelf-dev valgrind libicu-dev libssl-dev libexpat1-dev zip liblz4-dev liblzma-dev libcap-dev git clone https://gitlab.com/android_translation_layer/art_standalone.git cd art_standalone make -j12 ____LIBDIR=lib sudo make ____LIBDIR=lib install ``` Output: ``` install -Dt /usr/local/lib/java/dex/art/natives/ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libjavacore.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libnativehelper.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libopenjdk.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libopenjdkjvm.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libwolfssljni.so install -Dt /usr/local/lib/art/ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libandroidfw.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libart.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libart-compiler.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libart-dexlayout.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libartbase.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libartpalette.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libbacktrace.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libbase.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libcutils.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libdexfile.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/liblog.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libnativebridge.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libprofile.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libsigchain.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libunwind.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libutils.so \ /home/chiu/android_project/art_standalone//out/host/linux-x86/lib64/libziparchive.so test -f /home/chiu/android_project/art_standalone//out/host/linux-x86/bin/dalvikvm && install -Dt /usr/local/bin /home/chiu/android_project/art_standalone//out/host/linux-x86/bin/dalvikvm || true test -f /home/chiu/android_project/art_standalone//out/host/linux-x86/bin/dalvikvm64 && install -Dt /usr/local/bin /home/chiu/android_project/art_standalone//out/host/linux-x86/bin/dalvikvm64 || true install -Dt /usr/local/bin /home/chiu/android_project/art_standalone//out/host/linux-x86/bin/dex2oat install -Dt /usr/local/bin /home/chiu/android_project/art_standalone//out/host/linux-x86/bin/dx install -Dt /usr/local/lib/java/dex/art/ /home/chiu/android_project/art_standalone//out/host/linux-x86/framework/apachehttp-hostdex.jar \ /home/chiu/android_project/art_standalone//out/host/linux-x86/framework/apache-xml-hostdex.jar \ /home/chiu/android_project/art_standalone//out/host/linux-x86/framework/bouncycastle-hostdex.jar \ /home/chiu/android_project/art_standalone//out/host/linux-x86/framework/core-junit-hostdex.jar \ /home/chiu/android_project/art_standalone//out/host/linux-x86/framework/core-libart-hostdex.jar \ /home/chiu/android_project/art_standalone//out/host/linux-x86/framework/core-oj-hostdex.jar \ /home/chiu/android_project/art_standalone//out/host/linux-x86/framework/hamcrest-hostdex.jar \ /home/chiu/android_project/art_standalone//out/host/linux-x86/framework/junit-runner-hostdex.jar \ /home/chiu/android_project/art_standalone//out/host/linux-x86/framework/okhttp-hostdex.jar \ /home/chiu/android_project/art_standalone//out/host/linux-x86/framework/wolfssljni-hostdex.jar install -D /home/chiu/android_project/art_standalone//out/host/common/obj/JAVA_LIBRARIES/core-all-hostdex_intermediates/classes.jar /usr/local/lib/java/core-all_classes.jar install -D /home/chiu/android_project/art_standalone//out/host/common/obj/JAVA_LIBRARIES/core-junit-hostdex_intermediates/classes.jar /usr/local/lib/java/core-junit_classes.jar install -D /home/chiu/android_project/art_standalone//out/host/common/obj/JAVA_LIBRARIES/junit-runner-hostdex_intermediates/classes.jar /usr/local/lib/java/junit-runner_classes.jar install -Dt /usr/local/lib/java/ /home/chiu/android_project/art_standalone//out/host/linux-x86/framework/dx.jar install -Dt /usr/local/include/androidfw /home/chiu/android_project/art_standalone//libandroidfw/include/androidfw/androidfw_c_api.h # install pkg-config file mkdir -p /usr/local/lib/pkgconfig install -m644 art-standalone.pc /usr/local/lib/pkgconfig/ ``` #### `podman commit local-ubuntu-dev libopensles_standalone-build-install` ```bash sudo apt install -y meson cmake libsdl2-dev libsndfile1-dev git clone https://gitlab.com/android_translation_layer/libopensles-standalone.git cd libopensles-standalone meson setup builddir cd builddir meson configure -Dlibdir=lib meson compile sudo meson install ``` Output: ``` Installing libOpenSLES.so.1.0.1 to /usr/local/lib Installing symlink pointing to libOpenSLES.so.1.0.1 to /usr/local/lib/libOpenSLES.so.1 Installing symlink pointing to libOpenSLES.so.1 to /usr/local/lib/libOpenSLES.so ``` #### `podman commit local-ubuntu-dev android_translation_layer-build-install` ```bash sudo apt install -y ant git clone https://gitlab.com/android_translation_layer/android_translation_layer.git cd android_translation_layer meson setup builddir cd builddir meson configure -Dlibdir=lib meson compile sudo meson install ``` Output: ``` Installing libandroid.so.0 to /usr/local/lib Installing libtranslation_layer_main.so to /usr/local/lib/java/dex/android_translation_layer/natives Installing android-translation-layer to /usr/local/bin Installing api-impl.jar to /usr/local/lib/java/dex/android_translation_layer File 'test_runner.jar' not found, skipping Installing res/framework-res/framework-res.apk to /usr/local/lib/java/dex/android_translation_layer Installing /home/chiu/android_project/android_translation_layer/res/fonts.xml to /usr/local/share/atl Installing symlink pointing to libandroid.so.0 to /usr/local/lib/libandroid.so ``` --- #### `podman commit local-ubuntu-dev qemu-build-install` ```bash git clone https://gitlab.com/android_translation_layer/qemu-based-native-bridge/nb-qemu.git # clone qemu submodule (unles you used --recurse-submodules) git submodule update --init --recursive # compile qemu fork cd qemu mkdir _build && cd _build make clean ../configure --disable-werror --target-list="aarch64-linux-user aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu lm32-softmmu moxie-softmmu microblazeel-softmmu mips64el-softmmu m68k-softmmu ppc-softmmu riscv64-softmmu sparc-softmmu" --disable-system ../configure --disable-werror --target-list="aarch64-linux-user" --disable-system # compile the various native bridge parts make -j12 ATL_INC=/home/chiu/android_project/android_translation_layer/src/ sudo make -j12 install ``` Output: ``` install -d -m 0755 "/usr/local/share/qemu" install -d -m 0755 "/usr/local/include" BUNZIP2 pc-bios/edk2-aarch64-code.fd.bz2 BUNZIP2 pc-bios/edk2-arm-code.fd.bz2 BUNZIP2 pc-bios/edk2-arm-vars.fd.bz2 BUNZIP2 pc-bios/edk2-i386-code.fd.bz2 BUNZIP2 pc-bios/edk2-i386-secure-code.fd.bz2 BUNZIP2 pc-bios/edk2-i386-vars.fd.bz2 BUNZIP2 pc-bios/edk2-x86_64-code.fd.bz2 BUNZIP2 pc-bios/edk2-x86_64-secure-code.fd.bz2 set -e; for x in bios.bin bios-256k.bin bios-microvm.bin sgabios.bin vgabios.bin vgabios-cirrus.bin vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin vgabios-virtio.bin vgabios-ramfb.bin vgabios-bochs-display.bin vgabios-ati.bin openbios-sparc32 openbios-sparc64 openbios-ppc QEMU,tcx.bin QEMU,cgthree.bin pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom efi-e1000.rom efi-eepro100.rom efi-ne2k_pci.rom efi-pcnet.rom efi-rtl8139.rom efi-virtio.rom efi-e1000e.rom efi-vmxnet3.rom qemu-nsis.bmp bamboo.dtb canyonlands.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin pvh.bin s390-ccw.img s390-netboot.img slof.bin skiboot.lid palcode-clipper u-boot.e500 u-boot-sam460-20100605.bin qemu_vga.ndrv edk2-licenses.txt hppa-firmware.img opensbi-riscv32-sifive_u-fw_jump.bin opensbi-riscv32-virt-fw_jump.bin opensbi-riscv64-sifive_u-fw_jump.bin opensbi-riscv64-virt-fw_jump.bin; do \ install -c -m 0644 /home/chiu/android_project/nb-qemu/qemu/pc-bios/$x "/usr/local/share/qemu"; \ done set -e; for x in pc-bios/edk2-aarch64-code.fd pc-bios/edk2-arm-code.fd pc-bios/edk2-arm-vars.fd pc-bios/edk2-i386-code.fd pc-bios/edk2-i386-secure-code.fd pc-bios/edk2-i386-vars.fd pc-bios/edk2-x86_64-code.fd pc-bios/edk2-x86_64-secure-code.fd; do \ install -c -m 0644 $x "/usr/local/share/qemu"; \ done install -d -m 0755 "/usr/local/share/qemu/firmware" set -e; tmpf=$(mktemp); trap 'rm -f -- "$tmpf"' EXIT; \ for x in 50-edk2-i386-secure.json 50-edk2-x86_64-secure.json 60-edk2-aarch64.json 60-edk2-arm.json 60-edk2-i386.json 60-edk2-x86_64.json; do \ sed -e 's,@DATADIR@,/usr/local/share/qemu,' \ "/home/chiu/android_project/nb-qemu/qemu/pc-bios/descriptors/$x" > "$tmpf"; \ install -c -m 0644 "$tmpf" \ "/usr/local/share/qemu/firmware/$x"; \ done for s in 16x16 24x24 32x32 48x48 64x64 128x128 256x256 512x512; do \ mkdir -p "/usr/local/share/icons/hicolor/${s}/apps"; \ install -c -m 0644 /home/chiu/android_project/nb-qemu/qemu/ui/icons/qemu_${s}.png \ "/usr/local/share/icons/hicolor/${s}/apps/qemu.png"; \ done; \ mkdir -p "/usr/local/share/icons/hicolor/32x32/apps"; \ install -c -m 0644 /home/chiu/android_project/nb-qemu/qemu/ui/icons/qemu_32x32.bmp \ "/usr/local/share/icons/hicolor/32x32/apps/qemu.bmp"; \ mkdir -p "/usr/local/share/icons/hicolor/scalable/apps"; \ install -c -m 0644 /home/chiu/android_project/nb-qemu/qemu/ui/icons/qemu.svg \ "/usr/local/share/icons/hicolor/scalable/apps/qemu.svg" mkdir -p "/usr/local/share/applications" install -c -m 0644 /home/chiu/android_project/nb-qemu/qemu/ui/qemu.desktop \ "/usr/local/share/applications/qemu.desktop" install -d -m 0755 "/usr/local/share/qemu/keymaps" set -e; for x in da en-gb et fr fr-ch is lt no pt-br sv ar de en-us fi fr-be hr it lv nl pl ru th de-ch es fo fr-ca hu ja mk pt sl tr bepo cz; do \ install -c -m 0644 /home/chiu/android_project/nb-qemu/qemu/pc-bios/keymaps/$x "/usr/local/share/qemu/keymaps"; \ done install -c -m 0644 /home/chiu/android_project/nb-qemu/qemu/_build/trace-events-all "/usr/local/share/qemu/trace-events-all" ``` #### `podman commit local-ubuntu-dev nb_qemu-build-install` ```bash sudo apt install clang lld libgnutls28-dev libglib2.0-dev libcapstone-dev gcc-powerpc64-linux-gnu gcc-powerpc64le-linux-gnu gcc-arm-linux-gnueabi gcc-aarch64-linux-gnu cd nb-qemu # cd ../.. rm -r /usr/local/lib64/libnb-qemu-thunks/ rm -r /usr/local//share/libnb-qemu-guest/ make -j8 default ATL_INC=/home/chiu/android_project/android_translation_layer/src/ LIBDIR=lib make install ``` Output: ``` install -Dt /usr/local//lib64/ /home/chiu/android_project/nb-qemu//builddir/libnb-qemu/libnb-qemu.so install -Dt /usr/local//lib64/libnb-qemu-thunks/ /home/chiu/android_project/nb-qemu//builddir/libnb-qemu/libnb-qemu-android.so \ /home/chiu/android_project/nb-qemu//builddir/libnb-qemu/libnb-qemu-EGL.so \ /home/chiu/android_project/nb-qemu//builddir/libnb-qemu/libnb-qemu-GLESv1_CM.so \ /home/chiu/android_project/nb-qemu//builddir/libnb-qemu/libnb-qemu-GLESv2.so \ /home/chiu/android_project/nb-qemu//builddir/libnb-qemu/libnb-qemu-OpenSLES.so # install -Dt /usr/local//share/libnb-qemu-guest/ /home/chiu/android_project/nb-qemu//builddir/bionic/libc.so \ /home/chiu/android_project/nb-qemu//libnb-qemu-guest/bionic/prebuilts/libdl.so \ /home/chiu/android_project/nb-qemu//libnb-qemu-guest/bionic/prebuilts/libm.so \ /home/chiu/android_project/nb-qemu//libnb-qemu-guest/bionic/prebuilts/linker64 \ /home/chiu/android_project/nb-qemu//builddir/libnb-qemu-guest/libandroid.so \ /home/chiu/android_project/nb-qemu//builddir/libnb-qemu-guest/libEGL.so \ /home/chiu/android_project/nb-qemu//builddir/libnb-qemu-guest/libGLESv2.so \ /home/chiu/android_project/nb-qemu//builddir/libnb-qemu-guest/liblog.so \ /home/chiu/android_project/nb-qemu//builddir/libnb-qemu-guest/libnb-qemu-guest.so \ /home/chiu/android_project/nb-qemu//builddir/libnb-qemu-guest/libOpenSLES.so \ /home/chiu/android_project/nb-qemu//builddir/libnb-qemu-guest/libstdc++.so # ln -s libGLESv2.so /usr/local//share/libnb-qemu-guest//libGLESv3.so ``` ### Apk run command ```bash NB_QEMU_SYSROOT=/usr/local/share/libnb-qemu-guest/ ATL_DIRECT_EGL=1 ANDROID_APP_DATA_DIR=/home/chiu/android_project/atl_test_apks/ LD_LIBRARY_PATH=/usr/local/lib/art/ android-translation-layer /home/chiu/android_project/atl_test_apks/ -X '-XX:NativeBridge=/usr/local/lib64/libnb-qemu.so' NB_QEMU_SYSROOT=/usr/local/share/libnb-qemu-guest/ ATL_DIRECT_EGL=1 GDK_DEBUG=gl-egl ANDROID_APP_DATA_DIR=/home/chiu/android_project/atl_test_apks/ LD_LIBRARY_PATH=/usr/local/lib/art/ android-translation-layer /home/chiu/android_project/atl_test_apks/com.imangi.templerun_1.16.0-48_minAPI16\(arm64-v8a\)\(nodpi\)_apkmirror.com.apk -X '-XX:NativeBridge=/usr/local/lib64/libnb-qemu.so' -X '-Xusejit:false' NB_QEMU_SYSROOT=/usr/local/share/libnb-qemu-guest/ ATL_DIRECT_EGL=1 ANDROID_APP_DATA_DIR=/home/chiu/android_project/atl_test_apks/ LD_LIBRARY_PATH=/usr/local/lib/art/ android-translation-layer /home/chiu/android_project/atl_test_apks/com.rovio.angrybirds_6.0.6-12200606_minAPI9\(armeabi\,armeabi-v7a\)\(nodpi\)_apkmirror.com.apk -X '-XX:NativeBridge=/usr/local/lib64/libnb-qemu.so' NB_QEMU_SYSROOT=/usr/local/share/libnb-qemu-guest/ ATL_DIRECT_EGL=1 ANDROID_APP_DATA_DIR=/home/chiu/android_project/atl_test_apks/ LD_LIBRARY_PATH=/usr/local/lib/art/ android-translation-layer /home/chiu/android_project/atl_test_apks/com.rovio.angrybirds_8.0.3-22680302_minAPI16\(armeabi-v7a\,x86\)\(nodpi\)_apkmirror.com.apk -X '-XX:NativeBridge=/usr/local/lib64/libnb-qemu.so' NB_QEMU_SYSROOT=/usr/local/share/libnb-qemu-guest/ ATL_DIRECT_EGL=1 ANDROID_APP_DATA_DIR=/home/chiu/android_project/atl_test_apks/ LD_LIBRARY_PATH=/usr/local/lib/art/ android-translation-layer /home/chiu/android_project/atl_test_apks/com.rovio.baba_2.36.1-2360002_minAPI16\(arm64-v8a\,armeabi-v7a\,x86\)\(nodpi\)_apkmirror.com.apk -X '-XX:NativeBridge=/usr/local/lib64/libnb-qemu.so' NB_QEMU_SYSROOT=/usr/local/share/libnb-qemu-guest/ ATL_DIRECT_EGL=1 ANDROID_APP_DATA_DIR=/home/chiu/android_project/atl_test_apks/ LD_LIBRARY_PATH=/usr/local/lib/art/ android-translation-layer /home/chiu/android_project/atl_test_apks/com.os.airforce_11.58-1160_minAPI21_x86_64_nodpi.apk -X '-XX:NativeBridge=/usr/local/lib64/libnb-qemu.so' ATL_DIRECT_EGL=1 ANDROID_APP_DATA_DIR=/home/chiu/android_project/atl_test_apks/ android-translation-layer /home/chiu/android_project/atl_test_apks/sample_unity_app.apk # -X '-Xforce-nb-testing' ``` ### dex2oat compile error ``` LD_LIBRARY_PATH=/usr/local/lib/art/ dex2oat --dex-file="/home/chiu/android_project/atl_test_apks/com.imangi.templerun_1.16.0-48_minAPI16(arm64-v8a)(nodpi)_apkmirror.com.apk_/files/audience_network.dex" --oat-file="/root/.cache/art/x86_64/home@chiu@android_project@atl_test_apks@com.imangi.templerun_1.16.0-48_minAPI16(arm64-v8a)(nodpi)_apkmirror.com.apk_@files@audience_network.dex" --instruction-set=x86_64 --instruction-set-features=-ssse3,-sse4.1,-sse4.2,-avx,-avx2,-popcnt --host --boot-image=/usr/local/lib/art/../java/dex/art/oat/boot.art LD_LIBRARY_PATH=/usr/local/lib/art/ gdb --args dex2oat \ --dex-file="/home/chiu/android_project/atl_test_apks/com.imangi.templerun_1.16.0-48_minAPI16(arm64-v8a)(nodpi)_apkmirror.com.apk_/files/audience_network.dex" \ --oat-file="/root/.cache/art/x86_64/home@chiu@android_project@atl_test_apks@com.imangi.templerun_1.16.0-48_minAPI16(arm64-v8a)(nodpi)_apkmirror.com.apk_@files@audience_network.dex" \ --instruction-set=x86_64 \ --instruction-set-features=-ssse3,-sse4.1,-sse4.2,-avx,-avx2,-popcnt \ --host \ --boot-image=/usr/local/lib/art/../java/dex/art/oat/boot.art ``` # 錯誤紀錄 ## System ```bash wavjaby@LAPTOP-IDM185VR:~/android_project/android_translation_layer$ cat /etc/os-release PRETTY_NAME="Ubuntu 24.04.3 LTS" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04.3 LTS (Noble Numbat)" VERSION_CODENAME=noble ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=noble LOGO=ubuntu-logo wavjaby@LAPTOP-IDM185VR:~/android_project/android_translation_layer$ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 39 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 16 On-line CPU(s) list: 0-15 Vendor ID: GenuineIntel Model name: 12th Gen Intel(R) Core(TM) i5-12500H CPU family: 6 Model: 154 Thread(s) per core: 2 Core(s) per socket: 8 Socket(s): 1 Stepping: 3 BogoMIPS: 6220.82 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_sin gle ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xget bv1 xsaves avx_vnni umip waitpkg gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize flush_l1d arch_capabilities Caches (sum of all): L1d: 384 KiB (8 instances) L1i: 256 KiB (8 instances) L2: 10 MiB (8 instances) L3: 18 MiB (1 instance) Vulnerabilities: Gather data sampling: Not affected Itlb multihit: Not affected L1tf: Not affected Mds: Not affected Meltdown: Not affected Mmio stale data: Not affected Reg file data sampling: Vulnerable: No microcode Retbleed: Mitigation; Enhanced IBRS Spec rstack overflow: Not affected Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Spectre v2: Mitigation; Enhanced / Automatic IBRS; IBPB conditional; RSB filling; PBRSB-eIBRS SW sequence; BHI BHI_DIS_S Srbds: Not affected Tsx async abort: Not affected wavjaby@LAPTOP-IDM185VR:~/android_project/android_translation_layer$ uname -r 5.15.167.4-microsoft-standard-WSL2 ``` ## Issue 1 (10/31 再次討論) build lib dir wrong ```bash wavjaby@LAPTOP-IDM185VR:/$ ls /usr/local/lib libc_bio.so libpthread_bio.so.0 libunwind-coredump.so.0 libunwind-ptrace.so libunwind-setjmp.so.0 libunwind-x86_64.so.8.2.0 libwolfssl.la x86_64-linux-gnu libc_bio.so.0 libstdc++_bio.so libunwind-coredump.so.0.0.0 libunwind-ptrace.so.0 libunwind-setjmp.so.0.0.0 libunwind.a libwolfssl.so libdl_bio.so libstdc++_bio.so.0 libunwind-generic.a libunwind-ptrace.so.0.0.0 libunwind-x86_64.a libunwind.la libwolfssl.so.44 libdl_bio.so.0 libunwind-coredump.a libunwind-generic.so libunwind-setjmp.a libunwind-x86_64.la libunwind.so libwolfssl.so.44.0.0 libdl_bio.so.0.0.1 libunwind-coredump.la libunwind-ptrace.a libunwind-setjmp.la libunwind-x86_64.so libunwind.so.8 pkgconfig libpthread_bio.so libunwind-coredump.so libunwind-ptrace.la libunwind-setjmp.so libunwind-x86_64.so.8 libunwind.so.8.2.0 python3.12 wavjaby@LAPTOP-IDM185VR:/$ ls /usr/local/lib/x86_64-linux-gnu/ art java libOpenSLES.so libOpenSLES.so.1 libOpenSLES.so.1.0.1 libandroid.so libandroid.so.0 pkgconfig wavjaby@LAPTOP-IDM185VR:/$ android-translation-layer android-translation-layer: error while loading shared libraries: libandroid.so.0: cannot open shared object file: No such file or directory ``` Cause by atl install script: ```bash wavjaby@LAPTOP-IDM185VR:~/android_project/android_translation_layer/builddir$ sudo meson install Dropping privileges to 'wavjaby' before running ninja... ninja: Entering directory `/home/wavjaby/android_project/android_translation_layer/builddir' ninja: no work to do. Installing libandroid.so.0 to /usr/local/lib/x86_64-linux-gnu Installing libtranslation_layer_main.so to /usr/local/lib/x86_64-linux-gnu/java/dex/android_translation_layer/natives Installing android-translation-layer to /usr/local/bin Installing api-impl.jar to /usr/local/lib/x86_64-linux-gnu/java/dex/android_translation_layer File 'test_runner.jar' not found, skipping Installing res/framework-res/framework-res.apk to /usr/local/lib/x86_64-linux-gnu/java/dex/android_translation_layer Installing /home/wavjaby/android_project/android_translation_layer/res/fonts.xml to /usr/local/share/atl Installing symlink pointing to libandroid.so.0 to /usr/local/lib/x86_64-linux-gnu/libandroid.so ``` Change build libdir config: `meson configure -Dlibdir=lib` ```bash wavjaby@LAPTOP-IDM185VR:~/android_project/android_translation_layer/builddir$ sudo meson install Dropping privileges to 'wavjaby' before running ninja... ninja: Entering directory `/home/wavjaby/android_project/android_translation_layer/builddir' [0/1] Regenerating build files. The Meson build system Version: 1.3.2 Source dir: /home/wavjaby/android_project/android_translation_layer Build dir: /home/wavjaby/android_project/android_translation_layer/builddir Build type: native build Project name: android_translation_layer Project version: undefined C compiler for the host machine: cc (gcc 13.3.0 "cc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0") C linker for the host machine: cc ld.bfd 2.42 Java compiler for the host machine: javac (unknown 21.0.8) Host machine cpu family: x86_64 Host machine cpu: x86_64 Dependency art-standalone found: YES 0.0.0 (cached) Library dl_bio found: YES Library c_bio found: YES Found pkg-config: YES (/usr/bin/pkg-config) 1.8.1 Dependency glib-2.0 found: YES 2.80.0 (cached) Program /usr/bin/glib-genmarshal found: YES (/usr/bin/glib-genmarshal) Dependency gio-2.0 found: YES 2.80.0 (cached) Program /usr/bin/gdbus-codegen found: YES (/usr/bin/gdbus-codegen) Dependency gio-2.0 found: YES 2.80.0 (cached) Program /usr/bin/gdbus-codegen found: YES (/usr/bin/gdbus-codegen) Dependency gio-2.0 found: YES 2.80.0 (cached) Program /usr/bin/gdbus-codegen found: YES (/usr/bin/gdbus-codegen) Dependency gio-2.0 found: YES 2.80.0 (cached) Program /usr/bin/gdbus-codegen found: YES (/usr/bin/gdbus-codegen) Found CMake: /usr/bin/cmake (3.28.3) Run-time dependency gtk4-layer-shell-0 found: NO (tried pkgconfig and cmake) Dependency gtk4 found: YES 4.14.5 (cached) Dependency jni found: YES 21.0.8 (cached) Dependency vulkan found: YES 1.3.275 (cached) Dependency openxr found: YES 1.0 (cached) Dependency wayland-protocols found: YES 1.38 (cached) Program wayland-scanner found: YES (/usr/bin/wayland-scanner) Dependency gtk4 found: YES 4.14.5 (cached) Dependency gl found: YES 1.2 (cached) Dependency egl found: YES 1.5 (cached) Dependency wayland-client found: YES 1.22.0 (cached) Dependency jni found: YES 21.0.8 (cached) Dependency libportal found: YES 0.7.1 (cached) Dependency sqlite3 found: YES 3.45.1 (cached) Dependency libavcodec found: YES 60.31.102 (cached) Dependency libdrm found: YES 2.4.122 (cached) Dependency gudev-1.0 found: YES 238 (cached) Dependency libswscale found: YES 7.5.100 (cached) Dependency webkitgtk-6.0 found: YES 2.48.7 (cached) Dependency gio-2.0 found: YES 2.80.0 (cached) Program /usr/bin/glib-compile-resources found: YES (/usr/bin/glib-compile-resources) Dependency gtk4 found: YES 4.14.5 (cached) Dependency jni found: YES 21.0.8 (cached) Dependency dl found: YES unknown (cached) Dependency libportal found: YES 0.7.1 (cached) Dependency fontconfig found: YES 2.15.0 (cached) Program ant found: NO Program ant found: NO Program aapt found: NO Build targets in project: 24 android_translation_layer undefined User defined options libdir: lib Found ninja-1.11.1 at /usr/bin/ninja Cleaning... 0 files. [3/3] Linking target android-translation-layer Installing libandroid.so.0 to /usr/local/lib Installing libtranslation_layer_main.so to /usr/local/lib/java/dex/android_translation_layer/natives Installing android-translation-layer to /usr/local/bin Installing api-impl.jar to /usr/local/lib/java/dex/android_translation_layer File 'test_runner.jar' not found, skipping Installing res/framework-res/framework-res.apk to /usr/local/lib/java/dex/android_translation_layer Installing /home/wavjaby/android_project/android_translation_layer/res/fonts.xml to /usr/local/share/atl Installing symlink pointing to libandroid.so.0 to /usr/local/lib/libandroid.so ``` Alread have ld config in ubuntu container ``` wavjaby@LAPTOP-IDM185VR:~/android_project$ podman run -d -it --userns=keep-id -e USER --net=host \ -e DISPLAY -e XDG_RUNTIME_DIR -e WAYLAND_DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v $XDG_RUNTIME_DIR:$XDG_RUNTIME_DIR -p 6000:6000 \ -v /home/$USER:/home/$USER --name ubuntu ubuntu Port mappings have been discarded as one of the Host, Container, Pod, and None network modes are in use 6d106f874830f05de812d2456c1f631eda8c4f50364bb470eb9593943aa17fb1 wavjaby@LAPTOP-IDM185VR:~/android_project$ podman exec -it ubuntu /bin/bash wavjaby@LAPTOP-IDM185VR:/$ ls /etc/ld.so.conf.d/ libc.conf x86_64-linux-gnu.conf wavjaby@LAPTOP-IDM185VR:/$ cat /etc/ld.so.conf.d/x86_64-linux-gnu.conf # Multiarch support /usr/local/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu wavjaby@LAPTOP-IDM185VR:~/android_project$ echo "$(ld --verbose | grep SEARCH_DIR | grep -oE "/usr/lib([^\"]*)" || echo /usr/lib)" | head -n 1 | cut -c 6- lib/x86_64-linux-gnu ``` ------ # 六大罪!!! ## Issue 1-2(連帶於 1-1 一起解決 PR could be solved) art-standalone.pc not update when change `____LIBDIR` in make command ```bash wavjaby@LAPTOP-IDM185VR:~/android_project/art_standalone$ make ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=6.0.1 TARGET_PRODUCT=full TARGET_BUILD_VARIANT=eng TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm TARGET_ARCH_VARIANT=armv7-a TARGET_CPU_VARIANT=generic TARGET_2ND_ARCH= TARGET_2ND_ARCH_VARIANT= TARGET_2ND_CPU_VARIANT= HOST_ARCH=x86_64 HOST_OS=linux HOST_OS_EXTRA=Linux-5.15.167.4-microsoft-standard-WSL2-x86_64-with-glibc2.39 HOST_BUILD_TYPE=release BUILD_ID=MOB30M OUT_DIR=out ============================================ BUILD_LOGS ... wavjaby@LAPTOP-IDM185VR:~/android_project/art_standalone$ cat art-standalone.pc prefix=/usr/local exec_prefix=${prefix} libdir=${prefix}/lib/x86_64-linux-gnu includedir=${prefix}/include Name: art-standalone Description: Android ART runtime (standalone build, minimal ATL deps) Version: 0.0.0 Libs: -L${libdir}/art -lart -lnativebridge -landroidfw Cflags: -I${includedir} -I${includedir}/androidfw wavjaby@LAPTOP-IDM185VR:~/android_project/art_standalone$ make ____LIBDIR=lib ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=6.0.1 TARGET_PRODUCT=full TARGET_BUILD_VARIANT=eng TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm TARGET_ARCH_VARIANT=armv7-a TARGET_CPU_VARIANT=generic TARGET_2ND_ARCH= TARGET_2ND_ARCH_VARIANT= TARGET_2ND_CPU_VARIANT= HOST_ARCH=x86_64 HOST_OS=linux HOST_OS_EXTRA=Linux-5.15.167.4-microsoft-standard-WSL2-x86_64-with-glibc2.39 HOST_BUILD_TYPE=release BUILD_ID=MOB30M OUT_DIR=out ============================================ BUILD_LOGS ... wavjaby@LAPTOP-IDM185VR:~/android_project/art_standalone$ cat art-standalone.pc prefix=/usr/local exec_prefix=${prefix} libdir=${prefix}/lib/x86_64-linux-gnu includedir=${prefix}/include Name: art-standalone Description: Android ART runtime (standalone build, minimal ATL deps) Version: 0.0.0 Libs: -L${libdir}/art -lart -lnativebridge -landroidfw Cflags: -I${includedir} -I${includedir}/androidfw ``` `libdir` in art-standalone.pc does not update after `____LIBDIR` set to `lib`. art_standalone should add `.PHONY` to update art-standalone.pc ```diff diff --git a/Makefile b/Makefile index 3383a64b..0d4474c4 100644 --- a/Makefile +++ b/Makefile @@ -52,4 +52,6 @@ WITHOUT_CLANG := true WITHOUT_LIBCOMPILER_RT := true +.PHONY: art-standalone.pc + default: ____art_all ``` Then the issue solved ```bash wavjaby@LAPTOP-IDM185VR:~/android_project/art_standalone$ sudo make ____LIBDIR=lib ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=6.0.1 TARGET_PRODUCT=full TARGET_BUILD_VARIANT=eng TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm TARGET_ARCH_VARIANT=armv7-a TARGET_CPU_VARIANT=generic TARGET_2ND_ARCH= TARGET_2ND_ARCH_VARIANT= TARGET_2ND_CPU_VARIANT= HOST_ARCH=x86_64 HOST_OS=linux HOST_OS_EXTRA=Linux-5.15.167.4-microsoft-standard-WSL2-x86_64-with-glibc2.39 HOST_BUILD_TYPE=release BUILD_ID=MOB30M OUT_DIR=out ============================================ BUILD_LOGS... wavjaby@LAPTOP-IDM185VR:~/android_project/art_standalone$ cat art-standalone.pc prefix=/usr/local exec_prefix=${prefix} libdir=${prefix}/lib includedir=${prefix}/include Name: art-standalone Description: Android ART runtime (standalone build, minimal ATL deps) Version: 0.0.0 Libs: -L${libdir}/art -lart -lnativebridge -landroidfw Cflags: -I${includedir} -I${includedir}/androidfw ``` ### 解決方法 ``` bash echo "/usr/local/lib/art" | sudo tee /etc/ld.so.conf.d/art.conf sudo ldconfig ``` 可以以此檢查 ```bash ldconfig -p | grep libart ``` ## Issue 2(solve [PR 105] (https://gitlab.com/android_translation_layer/android_translation_layer/-/merge_requests/189/diffs?commit_id=63b47466b80b69f0bf79b6c50e7a32e930e32ebd )) [CookieManager.java#ValueCallback](https://gitlab.com/android_translation_layer/android_translation_layer/-/commit/fa3292dcb58f4c82122110cc6267ebcf36885890#533edf1e780267578e95fa392c5d2f79c1e7b260_0_5) [WebView.java#evaluateJavascript](https://gitlab.com/android_translation_layer/android_translation_layer/-/commit/e58d8d206536125bb6058ae3b52eb3e09ab483fd#51c927a2ea036e720560efcbc7e592d356a8f892_99_99) ValueCallback is in CookieManager.java and not set to public(even outside the class), causeing class not found ```bash wavjaby@LAPTOP-IDM185VR:~/android_project/android_translation_layer/builddir$ meson compile INFO: autodetecting backend as ninja INFO: calculating backend command to run: /usr/bin/ninja [4/6] Compiling Java object ../src/api-impl/android/webkit/WebView.java FAILED: src/api-impl/hax.jar.p/android/webkit/WebView.class javac -g -bootclasspath /usr/local/lib/x86_64-linux-gnu/java/core-all_classes.jar:/usr/local/lib/x86_64-linux-gnu/java/core-junit_classes.jar:/usr/local/lib/x86_64-linux-gnu/java/junit-runner_classes.jar -source 1.8 -target 1.8 -encoding UTF-8 -Xlint:-deprecation -h /home/wavjaby/android_project/android_translation_layer/src/api-impl-jni/generated_headers -d src/api-impl/hax.jar.p -s src/api-impl/hax.jar.p -sourcepath /home/wavjaby/android_project/android_translation_layer/src/api-impl:/home/wavjaby/android_project/android_translation_layer/builddir/src/api-impl:/home/wavjaby/android_project/android_translation_layer/builddir ../src/api-impl/android/webkit/WebView.java warning: [options] source value 8 is obsolete and will be removed in a future release warning: [options] target value 8 is obsolete and will be removed in a future release warning: [options] To suppress warnings about obsolete options, use -Xlint:-options. ../src/api-impl/android/webkit/WebView.java:99: error: cannot find symbol public void evaluateJavascript(String script, ValueCallback resultCallback) {} ^ symbol: class ValueCallback location: class WebView Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: Some input files use unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 1 error 3 warnings ninja: build stopped: subcommand failed. ``` By adding files ```diff wavjaby@LAPTOP-IDM185VR:~/android_project/android_translation_layer$ git diff -U2 diff --git a/src/api-impl/android/webkit/CookieManager.java b/src/api-impl/android/webkit/CookieManager.java index 1e418efe..42c2effa 100644 --- a/src/api-impl/android/webkit/CookieManager.java +++ b/src/api-impl/android/webkit/CookieManager.java @@ -3,6 +3,4 @@ package android.webkit; import android.content.Context; -class ValueCallback {} - public class CookieManager { diff --git a/src/api-impl/android/webkit/ValueCallback.java b/src/api-impl/android/webkit/ValueCallback.java new file mode 100644 index 00000000..fa1e99db --- /dev/null +++ b/src/api-impl/android/webkit/ValueCallback.java @@ -0,0 +1,3 @@ +package android.webkit; + +public class ValueCallback {} ``` Solve the issue ```bash wavjaby@LAPTOP-IDM185VR:~/android_project/android_translation_layer/builddir$ meson compile INFO: autodetecting backend as ninja INFO: calculating backend command to run: /usr/bin/ninja [1/4] Compiling Java object ../src/api-impl/android/webkit/CookieManager.java warning: [options] source value 8 is obsolete and will be removed in a future release warning: [options] target value 8 is obsolete and will be removed in a future release warning: [options] To suppress warnings about obsolete options, use -Xlint:-options. Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: Some input files use unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 3 warnings [2/4] Compiling Java object ../src/api-impl/android/webkit/WebView.java warning: [options] source value 8 is obsolete and will be removed in a future release warning: [options] target value 8 is obsolete and will be removed in a future release warning: [options] To suppress warnings about obsolete options, use -Xlint:-options. Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: Some input files use unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 3 warnings [4/4] Generating api-impl.jar with a custom command Result compacted from 5629.1KiB to 2831.3KiB to save 2797.8KiB Merged dex #1 (750 defs/1865.2KiB) Merged dex #2 (1405 defs/2720.3KiB) Result is 1405 defs/2831.3KiB. Took 0.4s ``` ## ISSUE 3 ```bash -------------------------------- Running: sudo make ____LIBDIR=lib install -------------------------------- ============================================ cc: error: unrecognized command-line option ‘-std=gnu23’; did you mean ‘-std=gnu2x’? [10/40] Compiling C object libopensles/libopensles_util.a.p/OpenSLESUT.c.o ninja: build stopped: subcommand failed. ``` should be modified with libopensles/meason_builds https://gitlab.com/android_translation_layer/libopensles-standalone/-/blob/known_working_desktop_build/meson.build?ref_type=heads#L49 ``` '-Wno-unused-parameter', '-std=gnu2x' ``` ### Issue: [Build]: Build fails with `-std=gnu23` on GCC 13 and earlier version #### Description While building the **libOpenSLES-standalone** on Ubuntu 24.04 as part of the ATL build process, the compilation fails with the following error: ```bash sudo make ____LIBDIR=lib install cc: error: unrecognized command-line option ‘-std=gnu23’; did you mean ‘-std=gnu2x’? ``` Ubuntu 24.04 ships with **GCC 13**, which does not yet support `-std=gnu23`. Replacing the flag with `-std=gnu2x` resolves the build error: ```diff - '-std=gnu23' + '-std=gnu2x', ``` Reference: [meson.build](https://gitlab.com/android_translation_layer/libopensles-standalone/-/blob/known_working_desktop_build/meson.build) --- #### Root Cause `-std=gnu23` is only supported in **GCC 14+**. On GCC 13 and earlier, the equivalent flag is **`-std=gnu2x`**, which still enables the C23 features supported by the compiler. Since many users are building on LTS distributions (like Ubuntu 24.04), this flag breaks builds on a common configuration. --- #### Proposal Update the Meson build to use the more compatible `-std=gnu2x`, or alternatively consider adopting Meson's `c_std=gnu2x` default option for better portability. Happy to send a PR if this change is acceptable ## ISSUE 4 libunwind version art will not compile on ubuntu 24, using default libunwind version is 1.6.2 ```bash sudo apt install libunwind-dev ``` art compile error ``` host SharedLib: libart (out/host/linux-x86/obj/lib/libart.so) Host Jar: core-all-hostdex (out/host/common/obj/JAVA_LIBRARIES/core-all-hostdex_intermediates/javalib.jar) host Java: core-oj-hostdex (out/host/common/obj/JAVA_LIBRARIES/core-oj-hostdex_intermediates/classes) warning: [options] source value 8 is obsolete and will be removed in a future release warning: [options] target value 8 is obsolete and will be removed in a future release warning: [options] To suppress warnings about obsolete options, use -Xlint:-options. Install: out/host/linux-x86/lib64/libart.so host SharedLib: libart-compiler (out/host/linux-x86/obj/lib/libart-compiler.so) host SharedLib: libopenjdkjvm (out/host/linux-x86/obj/lib/libopenjdkjvm.so) host SharedLib: libopenjdk (out/host/linux-x86/obj/lib/libopenjdk.so) Install: out/host/linux-x86/lib64/libopenjdkjvm.so Install: out/host/linux-x86/lib64/libopenjdk.so Install: out/host/linux-x86/lib64/libart-compiler.so host StaticLib: libart-dex2oat (out/host/linux-x86/obj/STATIC_LIBRARIES/libart-dex2oat_intermediates/libart-dex2oat.a) host Executable: dex2oat (out/host/linux-x86/obj/EXECUTABLES/dex2oat_intermediates/dex2oat) /usr/bin/ld: /usr/local/lib/libdl_bio.so.0: undefined reference to `unw_set_iterate_phdr_function' collect2: error: ld returned 1 exit status make: *** [build/core/host_executable_internal.mk:34: out/host/linux-x86/obj/EXECUTABLES/dex2oat_intermediates/dex2oat] Error 1 make: *** Waiting for unfinished jobs.... Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: Some input files use unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 3 warnings ``` The version of default libunwind is 1.6.2 ```bash wavjaby@LAPTOP-IDM185VR:~/android_project$ apt search libunwind-dev Sorting... Done Full Text Search... Done android-libunwind-dev/noble 10.0.0+r36-4 amd64 libunwind for Android - Development files libunwind-dev/noble-updates,now 1.6.2-3build1.1 amd64 [installed] library to determine the call-chain of a program - development wavjaby@LAPTOP-IDM185VR:~/android_project$ pkg-config --modversion libunwind 1.6.2 ``` The unw_set_iterate_phdr_function is add after [libunwind 1.8 release](https://github.com/libunwind/libunwind/releases/tag/v1.8.0) ### issue message: [Build] fails on Ubuntu 24.04 (libunwind 1.6.2) with undefined reference to `unw_set_iterate_phdr_function` #### Problem Description When attempting to build the art-standalone project on a standard Ubuntu 24.04 system, the compilation fails. And the error message are below. ``` host Executable: dex2oat (out/host/linux-x86/obj/EXECUTABLES/dex2oat_intermediates/dex2oat) /usr/bin/ld: /usr/local/lib/libdl_bio.so.0: undefined reference to `unw_set_iterate_phdr_function' collect2: error: ld returned 1 exit status make: *** [build/core/host_executable_internal.mk:34: out/host/linux-x86/obj/EXECUTABLES/dex2oat_intermediates/dex2oat] Error 1 ``` #### insight The reason is that although we follow the build.md ```bach sudo apt install libasound2-dev libavcodec-dev libcap-dev libdrm-dev libglib2.0-dev libgtk-4-dev libgudev-1.0-dev libopenxr-dev libportal-dev libsqlite3-dev libwebkitgtk-6.0-dev ``` the version of libunwind provided by the default Ubuntu 24.04 repositories is too old. Ubuntu 24.04 ships with libunwind version 1.6.2. And the symbol `unw_set_iterate_phdr_function` was added in 1.8.0 version. Thus, I think we can add this info into the to let people can know this prerequisite ## ISSUE 5 找出少的套件幫他們加上去比對 CI 內容以及蛇哥 install_dependentcy.sh ## ISSUE 6 (optional) 要問一下為什麼不使用 ant 編譯 java, 因為編譯時間可以大幅降低,如果有說法我們可以在 install 文件加上 install ant 套件 ### issue message ## ISSUE art on RPI ```bash jkchiu@jkchiu-desktop:~/android_project$ nm -D -C /usr/local/lib/libunwind-aarch64.so | grep _Uaarch64_set_iterate_phdr_function 0000000000004a90 T _Uaarch64_set_iterate_phdr_function ``` ## ISSUE 7 WolfSSLKeyX509.getPrivateKey Crash error ```bash EGL::: native_window->egl_window: 281471421646736 EGL::: eglGetError: 12288 EGL::: ret: 0xffff2c6f90a0 __system_property_find: >ro.revision< not handled yet XRUN. __system_property_find: >ro.revision< not handled yet __system_property_find: >ro.revision< not handled yeE/CRASH (422003): Build fingerprint: 'unknown' E/CRASH (422003): Revision: 'unknown' E/CRASH (422003): ABI: 'arm64' E/CRASH (422003): Timestamp: 2025-11-03 21:14:10.050217375+0800 E/CRASH (422003): pid: 422003, tid: 422248, name: Google consent >>> android-translation-layer <<< E/CRASH (422003): uid: 1000 E/CRASH (422003): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr -------- E/CRASH (422003): Cause: null pointer dereference E/CRASH (422003): x0 0000000000000000 x1 0000000000000000 x2 0000000000000000 x3 0000000000000000 E/CRASH (422003): x4 0000000012c274c0 x5 00000000134cc329 x6 000000001385b6a0 x7 0000ffff5c1c44ec E/CRASH (422003): x8 0000000060f1a118 x9 0000000060f70000 x10 0000000060f75fc0 x11 000000000000004f E/CRASH (422003): x12 00000000b44e36a4 x13 0000000000000000 x14 0000000000000001 x15 00000000000045c9 E/CRASH (422003): x16 0000000000000000 x17 000000000004e1aa x18 00000000174ff44c x19 0000ffff2eaa9840 E/CRASH (422003): x20 0000000000000000 x21 0000000000000000 x22 0000000000000000 x23 0000000012fc0de0 E/CRASH (422003): x24 00000000134cc318 x25 000000006114d630 x26 0000000013625948 x27 0000000060f49900 E/CRASH (422003): x28 0000000000000001 x29 00000000000001bb E/CRASH (422003): lr 0000000063413488 sp 0000ffff5c1c4590 pc 000000006341349c pst 0000000020001000 E/CRASH (422003): E/CRASH (422003): backtrace: E/CRASH (422003): #00 pc 000000000003449c /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-wolfssljni-hostdex.oat (java.security.PrivateKey com.wolfssl.provider.jsse.WolfSSLKeyX509.getPrivateKey(java.lang.String)+252) E/CRASH (422003): #01 pc 0000000000020418 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-wolfssljni-hostdex.oat (void com.wolfssl.provider.jsse.WolfSSLContext.LoadClientKeyAndCertChain()+664) E/CRASH (422003): #02 pc 0000000000021794 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-wolfssljni-hostdex.oat (void com.wolfssl.provider.jsse.WolfSSLContext.createCtx()+1380) E/CRASH (422003): #03 pc 00000000000226d8 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-wolfssljni-hostdex.oat (void com.wolfssl.provider.jsse.WolfSSLContext.engineInit(javax.net.ssl.KeyManager[], javax.net.ssl.TrustManager[], java.security.SecureRandom)+632) E/CRASH (422003): #04 pc 0000000000022980 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-wolfssljni-hostdex.oat (void com.wolfssl.provider.jsse.WolfSSLContext$DEFAULT_Context.<init>()+224) E/CRASH (422003): #05 pc 00000000000421ec /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-wolfssljni-hostdex.oat (void com.wolfssl.provider.jsse.WolfSSLSocketFactory.initDefaultContext()+172) E/CRASH (422003): #06 pc 0000000000043294 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-wolfssljni-hostdex.oat (java.net.Socket com.wolfssl.provider.jsse.WolfSSLSocketFactory.createSocket(java.net.Socket, java.lang.String, int, boolean)+468) E/CRASH (422003): #07 pc 000000000003b2b0 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-okhttp-hostdex.oat (void com.android.okhttp.Connection.connectTls(int, int, com.android.okhttp.Request, com.android.okhttp.internal.ConnectionSpecSelector)+336) E/CRASH (422003): #08 pc 000000000003adb8 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-okhttp-hostdex.oat (void com.android.okhttp.Connection.connectSocket(int, int, int, com.android.okhttp.Request, com.android.okhttp.internal.ConnectionSpecSelector)+216) E/CRASH (422003): #09 pc 000000000003cfa4 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-okhttp-hostdex.oat (void com.android.okhttp.Connection.connect(int, int, int, com.android.okhttp.Request, java.util.List, boolean)+836) E/CRASH (422003): #10 pc 000000000003d324 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-okhttp-hostdex.oat (void com.android.okhttp.Connection.connectAndSetOwner(com.android.okhttp.OkHttpClient, java.lang.Object, com.android.okhttp.Request)+228) E/CRASH (422003): #11 pc 0000000000052d8c /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-okhttp-hostdex.oat (void com.android.okhttp.OkHttpClient$1.connectAndSetOwner(com.android.okhttp.OkHttpClient, com.android.okhttp.Connection, com.android.okhttp.internal.http.HttpEngine, com.android.okhttp.Request)+76) E/CRASH (422003): #12 pc 000000000008ba34 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-okhttp-hostdex.oat (void com.android.okhttp.internal.http.HttpEngine.connect()+484) E/CRASH (422003): #13 pc 00000000000905a0 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-okhttp-hostdex.oat (void com.android.okhttp.internal.http.HttpEngine.sendRequest()+720) E/CRASH (422003): #14 pc 0000000000099030 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-okhttp-hostdex.oat (boolean com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(boolean)+208) E/CRASH (422003): #15 pc 000000000009b838 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-okhttp-hostdex.oat (java.io.OutputStream com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream()+72) E/CRASH (422003): #16 pc 000000000009def4 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot-okhttp-hostdex.oat (java.io.OutputStream com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream()+52) E/CRASH (422003): #17 pc 0000000002d05a34 /home/jkchiu/.cache/art/arm64/home@jkchiu@android_project@atl_test_apks@com.imangi.templerun_1.27.0-82_minAPI22(arm64-v8a,armeabi-v7a)(nodpi)_apkmirror.com.apk@classes.dex (com.google.android.gms.internal.consent_sdk.zzck com.google.android.gms.internal.consent_sdk.zzu.zzd(com.google.android.gms.internal.consent_sdk.zzci)+564) E/CRASH (422003): #18 pc 0000000002d07278 /home/jkchiu/.cache/art/arm64/home@jkchiu@android_project@atl_test_apks@com.imangi.templerun_1.27.0-82_minAPI22(arm64-v8a,armeabi-v7a)(nodpi)_apkmirror.com.apk@classes.dex (void com.google.android.gms.internal.consent_sdk.zzu.zzb(android.app.Activity, com.google.android.ump.ConsentRequestParameters, com.google.android.ump.ConsentInformation$OnConsentInfoUpdateSuccessListener, com.google.android.ump.ConsentInformation$OnConsentInfoUpdateFailureListener)+408) E/CRASH (422003): #19 pc 0000000002d056cc /home/jkchiu/.cache/art/arm64/home@jkchiu@android_project@atl_test_apks@com.imangi.templerun_1.27.0-82_minAPI22(arm64-v8a,armeabi-v7a)(nodpi)_apkmirror.com.apk@classes.dex (void com.google.android.gms.internal.consent_sdk.zzq.run()+92) E/CRASH (422003): #20 pc 00000000007e0354 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot.oat (void java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker)+996) E/CRASH (422003): #21 pc 00000000007ed128 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot.oat (void java.util.concurrent.ThreadPoolExecutor$Worker.run()+56) E/CRASH (422003): #22 pc 0000000000289460 /home/jkchiu/.cache/art/arm64/usr@local@lib@aarch64-linux-gnu@art@..@java@dex@art@oat@boot.oat (void java.lang.Thread.run()+64) E/CRASH (422003): #23 pc 000000000014ab50 /usr/local/lib/aarch64-linux-gnu/art/libart.so (art_quick_invoke_stub+544) (BuildId: 4dbf5fe734995afdea43ffbc146f85f4dd5389b3) E/CRASH (422003): #24 pc 000000000017675c /usr/local/lib/aarch64-linux-gnu/art/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+220) (BuildId: 4dbf5fe734995afdea43ffbc146f85f4dd5389b3) E/CRASH (422003): #25 pc 00000000005172b4 /usr/local/lib/aarch64-linux-gnu/art/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+304) (BuildId: 4dbf5fe734995afdea43ffbc146f85f4dd5389b3) E/CRASH (422003): #26 pc 000000000055e84c /usr/local/lib/aarch64-linux-gnu/art/libart.so (art::Thread::CreateCallback(void*)+780) (BuildId: 4dbf5fe734995afdea43ffbc146f85f4dd5389b3) E/CRASH (422003): #27 pc 0000000000085958 /usr/lib/aarch64-linux-gnu/libc.so.6 (BuildId: d6c205bda1b6e91815f8fef45bdf56bc2239c37e) E/CRASH (422003): #28 pc 00000000000ebb08 /usr/lib/aarch64-linux-gnu/libc.so.6 (BuildId: d6c205bda1b6e91815f8fef45bdf56bc2239c37e) E/CRASH (422003): Forwarding signal 11 ```

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password
    or
    Sign in via Google Sign in via Facebook Sign in via X(Twitter) Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    By signing in, you agree to our terms of service.

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully