refine native bridge support section
This commit is contained in:
57
README.md
57
README.md
@@ -103,14 +103,12 @@ docker run -itd --rm --privileged \
|
|||||||
|
|
||||||
|
|
||||||
## Native Bridge Support
|
## Native Bridge Support
|
||||||
It's possible to run `arm` Apps in `x86` *ReDroid* instance via `libhoudini`, `libndk_translator` or `QEMU translator`.
|
It's possible to run `arm` Apps in `x86` *ReDroid* instance via `libhoudini`, `libndk_translation` or `QEMU translator`.
|
||||||
|
|
||||||
Take `libndk_translator` as an example:
|
Check [@zhouziyang/libndk_translation](https://github.com/zhouziyang/libndk_translation) for prebuilt `libndk_translation`.
|
||||||
|
Published `redroid` images (`redroid11` / `redroid12`) already get libndk_translation included.
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
# grab libndk_translator libs from Android 11 Emulator
|
|
||||||
find /system \( -name 'libndk_translation*' -o -name '*arm*' -o -name 'ndk_translation*' \) | tar -cf native-bridge.tar -T -
|
|
||||||
|
|
||||||
# example structure, be careful the file owner and mode
|
# example structure, be careful the file owner and mode
|
||||||
|
|
||||||
system/
|
system/
|
||||||
@@ -130,65 +128,22 @@ system/
|
|||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
# Dockerfile
|
# Dockerfile
|
||||||
FROM redroid/redroid:11.0.0-amd64
|
FROM redroid/redroid:11.0.0-latest
|
||||||
|
|
||||||
ADD native-bridge.tar /
|
ADD native-bridge.tar /
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# build docker image
|
# build docker image
|
||||||
docker build . -t redroid:11.0.0-amd64-nb
|
docker build . -t redroid:11.0.0-nb
|
||||||
|
|
||||||
# running
|
# running
|
||||||
docker run -itd --rm --privileged \
|
docker run -itd --rm --privileged \
|
||||||
-v ~/data11-nb:/data \
|
-v ~/data11-nb:/data \
|
||||||
-p 5555:5555 \
|
-p 5555:5555 \
|
||||||
redroid:11.0.0-amd64-nb \
|
redroid:11.0.0-nb \
|
||||||
ro.product.cpu.abilist=x86_64,arm64-v8a,x86,armeabi-v7a,armeabi \
|
|
||||||
ro.product.cpu.abilist64=x86_64,arm64-v8a \
|
|
||||||
ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi \
|
|
||||||
ro.dalvik.vm.isa.arm=x86 \
|
|
||||||
ro.dalvik.vm.isa.arm64=x86_64 \
|
|
||||||
ro.enable.native.bridge.exec=1 \
|
|
||||||
ro.dalvik.vm.native.bridge=libndk_translation.so \
|
|
||||||
ro.ndk_translation.version=0.2.2
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Take a look at https://gitlab.com/android-generic/android_vendor_google_emu-x86 to extract automatically libndk_translator from the Android 11 emulator images.
|
|
||||||
|
|
||||||
After following the guide on "Building" section, you will get native-bridge.tar under vendor/google/emu-x86/proprietary.
|
|
||||||
|
|
||||||
If you find errors in using libndk_translator, please try the following:
|
|
||||||
|
|
||||||
- YOU MUST HAVE binfmt_misc kernel module loaded for supporting other binaries formats! If you have not loaded it already:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo modprobe binfmt_misc
|
|
||||||
```
|
|
||||||
|
|
||||||
or add binfmt_misc to /etc/modules to autoload it at boot (for example in Ubuntu).
|
|
||||||
|
|
||||||
Check your specific distribution wiki/docs if you don't have binfmt_misc module and you want to install it, or how to autoload the module at boot.
|
|
||||||
|
|
||||||
- Extract the native bridge archive, preserving the permissions, set specific permissions for allowing init file to be executed and traverse of important dirs:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
mkdir native-bridge
|
|
||||||
cd native-bridge
|
|
||||||
sudo tar -xpf ../native-bridge.tar `#or path to your actual native bridge tarball`
|
|
||||||
sudo chmod 0644 system/etc/init/ndk_translation_arm64.rc
|
|
||||||
sudo chmod 0755 system/bin/arm
|
|
||||||
sudo chmod 0755 system/bin/arm64
|
|
||||||
sudo chmod 0755 system/lib/arm
|
|
||||||
sudo chmod 0755 system/lib64/arm64
|
|
||||||
sudo chmod 0644 system/etc/binfmt_misc/*
|
|
||||||
sudo tar -cpf native-bridge.tar system
|
|
||||||
```
|
|
||||||
|
|
||||||
Move or copy your new native-bridge.tar into the dir where you have written your Dockerfile, and rebuild again the new image with native bridge support.
|
|
||||||
|
|
||||||
You must use sudo or a root shell to preserve the permissions and owners of the files.
|
|
||||||
|
|
||||||
## GMS Support
|
## GMS Support
|
||||||
|
|
||||||
It's possible to add GMS (Google Mobile Service) support in *ReDroid* via [Open GApps](https://opengapps.org/), [MicroG](https://microg.org/) or [MindTheGapps](https://gitlab.com/MindTheGapps/vendor_gapps).
|
It's possible to add GMS (Google Mobile Service) support in *ReDroid* via [Open GApps](https://opengapps.org/), [MicroG](https://microg.org/) or [MindTheGapps](https://gitlab.com/MindTheGapps/vendor_gapps).
|
||||||
|
|||||||
Reference in New Issue
Block a user