How to install libhoudini on a custom Android x86 rig
Asked Answered
K

3

16

I'm currently making a custom built Android Marshmallow x86 64 on a mini PC. I've successfully installed the Android and now I'm trying to install libhoudini on the rig so that it can play ARM apps and games (porting the apps to x86 is not possible since they are 3rd party apps). How do I install and use it? When I go to its Github repo, it only has links with .sfs files in it. And also there is no documentation or tutorial whatsoever about how to install and use it.

Knighterrantry answered 3/4, 2018 at 16:18 Comment(1)
Okay, I've extracted the houdini.sfs file and it contains the files that are supposed to be in the /lib/ (or /lib/arm/ , I can't tell) folder. I tried to google for the installation tutorial but they are either dead (buildroid.com) or outdated (since they are from 2012 and when I looked at them, the steps are not exactly correct anymore like for instance there is no libdvm_houdini.so in the newest libhoudini repo).Knighterrantry
K
32

So I've actually managed to find a pretty new tutorial about this and I've successfully installed and used libhoudini on my rig.

The newest Android-x86 isos from http://www.android-x86.org actually have a bash script executable that will help us install libhoudini. So these are the steps:

  • Enable this option: Settings>Apps Compatibility>Enable Native Bridge
  • Go to the Android console (Alt-F1 or install a terminal emulator)
  • Login as super user / root
  • Run /system/bin/enable_nativebridge

NOTE: If you look at the script itself, you will see that the script will try to download the needed file if your device doesn't have one. But there's a chance that the server of the file will be down and the wget will loop indefinitely. If that's the case, this is what you have to do:

  • Download the appropriate houdini.sfs from https://github.com/rrrfff/libhoudini
  • Move / copy houdini.sfs to /system/etc
  • Go to the Android console (Alt-F1 or install a terminal emulator)
  • Run /system/bin/uname, if it says x86-64, rename houdini.sfs to houdini64.sfs
  • Run /system/bin/enable_nativebridge

I hope it helps anyone who wants to run ARM apps on an Android-x86 using libhoudini. Cheers.

Knighterrantry answered 6/4, 2018 at 3:31 Comment(11)
Do you mind tell me where the Settings>Apps Compatibility>Enable Native Bridge is? I don't see the Apps Compatibility in my android phone settings. @Bawenang Rukmoko Pardian PutraAlterable
Could you link the tutorial you used?Clari
@Alterable Sorry it took a long while to reply. I'm not working on the same project now and I switched to iOS dev. But I've tried googling for it again and found the tutorial again: blog.csdn.net/Roland_Sun/article/details/49735601 I hope it helps.Knighterrantry
@Clari I'll try to look it up for you again. blog.csdn.net/Roland_Sun/article/details/49735601 modaco.com/forums/topic/… Those are the ones I can find. Sorry if they are not recent enough.Knighterrantry
@BawenangRukmokoPardianPutra Thanks, I ended up using genymotion instead.Clari
I have two Question about it... 1; Link says 7_x 7_y 7_y what these alphabet represent & which one to download? 2; When I try to move houdini.sfs to /system/etc it dowsn't allow me to do that although I am root user I tried different explorers & also tried Terminal Emulator to do that. How to solve this issue?Shenitashenk
@ShehrozKhan it is written on the GitHub link "y and z are 64-bit version; z contains houdini64 for AArch64 translation", so if you are using a 32-bit Android x86, use x otherwise use both y (32-bit ARM) and z (64-bit ARM). If you are using adb, you should first adb push the files to a folder like /data/local/tmp/ and then use adb shell followed by the su command before using mv to move the files to /system/etc/. It looks like there is an error in the answer, if you are using Android 7, the files should be called houdini7_y.sfs or houdini7_z.sfs, not houdini.sfs or houdini64.sfs.Dorsiventral
When I test libhoudini with Android x86 on VirtualBox by installing and starting Firefox Mobile ARM version, I can see the error message "Sorry! This Firefox won't work on this device (x86_64, 25). Please download the correct version.", do you know why? I can see that libhoudini was installed correctly by using adb logcat, the messages houdini enabled and houdini64 enabled are logged. If I use libhoudini with Anbox instead of Android x86, I can start Firefox ARM version and browse a few web pages (but it crashes after a few seconds).Dorsiventral
How you can: Move / copy houdini.sfs to /system/etc ? The /system/etc is a readonly directory in AndroidX86 system.Benign
Unable to copy houdini.sfs to /system/etc by any method - root file explorer or terminal. No method works. Pls suggest.Truculent
How to remount /system with rw permission, if you are on arch and using the rpm package for qemu as available from AUR then this comment would help. For other set up , you may have to tweak around with the initrd , which I am not sure how to. Anyways, here's the link to the AUR commenr, may be you get some idea : aur.archlinux.org/packages/qemu-android-x86/#comment-806749Knapp
A
7

The first answer from @Bawenang is very helpful, but unfortunately the http://goo.gl links in the enable_nativebridge script are now forwarded to HTTPS by Google.

wget on android-x86 does not understand SSL, therefore the download fails.

A workaround is to edit the script and insert a proper link, e.g. the ones from this page are quite easy to type:

https://github.com/Rprop/libhoudini

In the script you only have to replace one of the URLs, e.g. for x86, replace the one that is preceded by v=7x or v=8x.

Adiell answered 13/9, 2019 at 11:23 Comment(2)
See Alex Ramos' post: "Type in system/bin/su to grant you root privileges then type in system/bin/enable_nativebridge." As root you can also change the file permissionsAdiell
When installing the rpm package using alien on Ubuntu 20.04, even with system/bin/su it is not possible to remount the system partition rw, thus making it impossible to even edit enable_nativebridge since it is mounted ro. I realise that all the methods discussed herein use the native iso or qemu + iso method. Hence I am next going to try thisTruculent
N
6

For android x86 64 bit Oreo, I first downloaded houdini.sfs( [http://dl.android-x86.org/houdini.php?v=9_y][1] or any other link you trust) version 9y for 64 then enabled native bridge in androidx86 settings. Afterwards I downloaded a root browser to move houdini.sfs file to system/etc/ but before moving it, I renamed it to houdini9_y.sfs. When the file is moved to system/etc/ then you can go to the command line (ALT+F1 to go to your system console ALT+F6/7 to go back to the android interface.) Type in system/bin/su to grant you root privileges then type in system/bin/enable_nativebridge. You should be done after that and apps should work that require libhoudini on it. This worked for me on a lenovo x carbon 1 running android-x86_64-9.0-r2.iso installtion.

Normalize answered 12/10, 2020 at 14:15 Comment(4)
which root browser worked for you? I have tried Root Browser, ES File Manager, RS File Manager.Truculent
@Truculent root browser worked for me if u get an error stating that /system is read only then you must reinstall android 86 with a read an write /system.check thisWorn
@Thulashitharan thanks for guiding to the comprehensive qemu compile and Android install method. I had been trying with the rpm via alien on Ubuntu 20.04 which does not offer the rw option. Shall attempt that next.Truculent
Thanks for this answer. You don't even need root browser. Instead, in console (Alt+F1), do su -, cd system/etc, wget http://dl.android-x86.org/houdini.php?v=9_y, mv houdini.php?v=9_y houdini9_y.sfs.Kempf

© 2022 - 2024 — McMap. All rights reserved.