Houdini native bridge - is it needed? Getting "Unable to find native library main"

374 views
Skip to first unread message

Akash Verma

unread,
Jun 1, 2018, 4:42:09 AM6/1/18
to Android-x86
I have been able to run Dungeon Keeper and Don't Starve under Houdini; these games don't run without it. For them, I get messages like these in logcat:

06-01 00:57:47.154  8792  8816 D houdini : [8816] Added shared library /data/app/com.ea.game.dungeonkeeper_na-1/lib/arm/libAkSoundEngine_armeabi-v7a.so for ClassLoader by Native Bridge.

However, I get no such message for Hitman Sniper and Angry Birds 2. Angry Birds 2 launches fine (I guess it's an x86 binary?), but for Hitman Sniper:wWhether I enable the bridge or not, I get the following error message; I can't figure out if it needs Houdini, or is missing some other library. Thoughts on what I can try next?

06-01 00:58:03.096  1795  2053 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.squareenixmontreal.hitmansniperandroid/com.prime31.UnityPlayerNativeActivity bnds=[1684,54][2156,318] (has extras)} from uid 10057 on display 0
06-01 00:58:03.103  8909  8909 W art     : Unexpected CPU variant for X86 using defaults: x86_64
06-01 00:58:03.109  1795  2053 I ActivityManager: Start proc 8909:com.squareenixmontreal.hitmansniperandroid/u0a72 for activity com.squareenixmontreal.hitmansniperandroid/com.prime31.UnityPlayerNativeActivity
06-01 00:58:03.163  8909  8909 I MultiDex: VM with version 2.1.0 has multidex support
06-01 00:58:03.163  8909  8909 I MultiDex: Installing application
06-01 00:58:03.163  8909  8909 I MultiDex: VM has multidex support, MultiDex support library is disabled.
06-01 00:58:03.164  8909  8909 I FirebaseInitProvider: FirebaseApp initialization unsuccessful
06-01 00:58:03.181  8909  8909 D AndroidRuntime: Shutting down VM
06-01 00:58:03.182  8909  8909 E AndroidRuntime: FATAL EXCEPTION: main
06-01 00:58:03.182  8909  8909 E AndroidRuntime: Process: com.squareenixmontreal.hitmansniperandroid, PID: 8909
06-01 00:58:03.182  8909  8909 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.squareenixmontreal.hitmansniperandroid/com.prime31.UnityPlayerNativeActivity}: java.lang.IllegalArgumentException: Unable to find native library main using classloader: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.squareenixmontreal.hitmansniperandroid-1/base.apk"],nativeLibraryDirectories=[/data/app/com.squareenixmontreal.hitmansniperandroid-1/lib/x86_64, /data/app/com.squareenixmontreal.hitmansniperandroid-1/base.apk!/lib/x86_64, /system/lib64, /vendor/lib64]]]
06-01 00:58:03.182  8909  8909 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2666)
06-01 00:58:03.182  8909  8909 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
06-01 00:58:03.182  8909  8909 E AndroidRuntime: at android.app.ActivityThread.-wrap12(ActivityThread.java)
06-01 00:58:03.182  8909  8909 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
06-01 00:58:03.182  8909  8909 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
06-01 00:58:03.182  8909  8909 E AndroidRuntime: at android.os.Looper.loop(Looper.java:154)
06-01 00:58:03.182  8909  8909 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6121)
06-01 00:58:03.182  8909  8909 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
06-01 00:58:03.182  8909  8909 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:890)
06-01 00:58:03.182  8909  8909 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:780)
06-01 00:58:03.182  8909  8909 E AndroidRuntime: Caused by: java.lang.IllegalArgumentException: Unable to find native library main using classloader: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.squareenixmontreal.hitmansniperandroid-1/base.apk"],nativeLibraryDirectories=[/data/app/com.squareenixmontreal.hitmansniperandroid-1/lib/x86_64, /data/app/com.squareenixmontreal.hitmansniperandroid-1/base.apk!/lib/x86_64, /system/lib64, /vendor/lib64]]]
06-01 00:58:03.182  8909  8909 E AndroidRuntime: at android.app.NativeActivity.onCreate(NativeActivity.java:168)
06-01 00:58:03.182  8909  8909 E AndroidRuntime: at com.unity3d.player.UnityPlayerNativeActivity.onCreate(Unknown Source)
06-01 00:58:03.182  8909  8909 E AndroidRuntime: at com.prime31.UnityPlayerNativeActivity.onCreate(UnityPlayerNativeActivity.java:18)
06-01 00:58:03.182  8909  8909 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:6692)
06-01 00:58:03.182  8909  8909 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
06-01 00:58:03.182  8909  8909 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619)
06-01 00:58:03.182  8909  8909 E AndroidRuntime: ... 9 more
06-01 00:58:03.182  1795  2934 W ActivityManager:   Force finishing activity com.squareenixmontreal.hitmansniperandroid/com.prime31.UnityPlayerNativeActivity

DDS Central

unread,
Jun 1, 2018, 4:53:20 AM6/1/18
to andro...@googlegroups.com
Some apps have x86 native binaries, some don't. Those which only have binaries for ARM use Houdini.

--
You received this message because you are subscribed to the Google Groups "Android-x86" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-x86...@googlegroups.com.
To post to this group, send email to andro...@googlegroups.com.
Visit this group at https://groups.google.com/group/android-x86.
For more options, visit https://groups.google.com/d/optout.

Akash Verma

unread,
Jun 1, 2018, 5:29:32 AM6/1/18
to Android-x86
Yes, this one seems to have x86 as well as ARM libraries. Thoughts on what can be done to run it? 

Antony Stone

unread,
Jun 1, 2018, 5:36:27 AM6/1/18
to andro...@googlegroups.com
On Friday 01 June 2018 at 10:42:09, Akash Verma wrote:

> I have been able to run Dungeon Keeper and Don't Starve under Houdini;
> these games don't run without it. For them, I get messages like these in
> logcat:
>
> 06-01 00:57:47.154 8792 8816 D houdini : [8816] Added shared library
> /data/app/com.ea.game.dungeonkeeper_na-1/lib/arm/libAkSoundEngine_armeabi-v
> 7a.so for ClassLoader by Native Bridge.
>
> However, I get no such message for Hitman Sniper and Angry Birds 2. Angry
> Birds 2 launches fine (I guess it's an x86 binary?), but for Hitman
> Sniper:wWhether I enable the bridge or not, I get the following error
> message; I can't figure out if it needs Houdini, or is missing some other
> library. Thoughts on what I can try next?
>
> 06-01 00:58:03.096 1795 2053 I ActivityManager: START u0
> {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]
> flg=0x10200000
> cmp=com.squareenixmontreal.hitmansniperandroid/com.prime31.UnityPlayerNativ
> eActivity bnds=[1684,54][2156,318] (has extras)} from uid 10057 on display
> 0 06-01 00:58:03.103 8909 8909 W art : Unexpected CPU variant for
> X86 using defaults: x86_64

That message "Unexpected CPU variant for X86" makes me think the application
has X86 binaries (and therefore doesn't need Houdini), but is getting
surprised at some detail of the CPU it's running on.

Exactly what CPU do you have in this machine?


Antony.

--
My life is going completely according to plan.

I do sometimes wish it had been *my* plan, though.

Please reply to the list;
please *don't* CC me.

Akash Verma

unread,
Jun 1, 2018, 11:56:48 AM6/1/18
to andro...@googlegroups.com
i7 4712HQ on a Dell Precision m3800.

Akash Verma

unread,
Jun 3, 2018, 11:23:26 PM6/3/18
to Android-x86
Is there a way to make the game install and run the ARM version rather than the x86 version?

Chih-Wei Huang

unread,
Jun 4, 2018, 2:11:33 AM6/4/18
to Android-x86
To see which abi this app installed, check its lib dir like:

ls -l /data/app/com.squareenixmontreal.hitmansniperandroid-1/lib

If you see arm or arm64, it needs houdini.

2018-06-04 11:23 GMT+08:00 Akash Verma <email...@gmail.com>:
> Is there a way to make the game install and run the ARM version rather than the x86 version?

Yes, some apps have x86 version but it's broken.
But its arm version could be run via houdini.
Such apps are common in PRC markets.

To install the arm version, it depends on how the apk is packed.
If the vendor ships separate x86 and arm apks (case 1),
just download the arm version (via an arm phone),
extract the apk and install it to android-x86.

If the vendor ships one apk containing both x86 and arm libs,
(case 2) it's more tricky to handle that.

To check which case it is, unzip the apk (an apk is just a zip file)
to see what libs it contains.
If it contains only x86 libs, it's case 1.
If it contains both x86 and arm libs, it's case 2.

For case 2, we have introduced so called "abipicker" feature
(made by Intel) since 7.1-r2. (only 7.1-r2 or later has this feature)
It will auto detect whether if the x86 libs are broken and
just install the arm version.
However, in case the auto detection not work,
you can manually add the package name to
/system/vendor/etc/misc/.OEMBlackList
to force it installed the arm version.

To check whether if it works, use pm dump to check
which abi is installed exactly:

pm dump com.squareenixmontreal.hitmansniperandroid | grep Abi


--
Chih-Wei
Android-x86 project
http://www.android-x86.org
Reply all
Reply to author
Forward
0 new messages