Android: SDL Error, dlopen failed.. libc.so not found

Thanks! New versions are now live, using r10e as the NDK on our build server, hopefully this should be set :slight_smile:

I’m on NDK r11 and I’m getting this error :confused:

<android target-sdk-version="23"/>
<android build-sdk-version="23"/>
java.lang.UnsatisfiedLinkError: dlopen failed: library "/home/joshua/Development/Android/android-ndk-r8b/platforms/android-9/arch-arm/usr/lib/libc.so" not found

edit: Should I rebuild lime?

I’ve updated lime to 2.9 and I think the error is gone.

I’m running into the exact same error, unfortunately.

Updated everything to the latest (except JDK, still using 6u45), but it did not solve the issue…

Android NDK r11c
Android SDK Tools 25.1.7
Android Platform Tools 23.1
Android Build Tools 23.0.3
Android SDK Platform 23 r3
Apache Ant 1.9.7

Haxe 3.3.0
Lime 2.9.1
OpenFL 3.6.1

Looks like the SimpleOpenGLView sample runs okay in the emulator.

My project also includes nape, extension-admob, and ganalytics. Not sure if one of those has anything to do with it…

Okay, I think I finally solved the issue I was having…

Through process of elimination, I figured out that ganalytics was the culprit. Turns out it just needed to be recompiled (makes sense), though using lime rebuild ganalytics android like it said to do in its readme didn’t do the trick – I had to haxelib run hxcpp Build.xml -Dandroid -DHXCPP_ARMV7 instead.

I also updated JDK to the latest (8u92) and everything built fine (including release signing). The builds are also much faster! Used to take 2.5-3 mins to build/deploy changes to my phone, and now it only takes 45 seconds!! (The total build time JDK reports right before deploying went from 1.5-2 mins, down to just 15 seconds!)

Maybe it’s time to update the Android setup instructions to finally stop using 6u45 and instead switch to the latest as one other user has also reported that JDK 8 works fine for building/signing.

Hello… I have an android apk running fine compiled with the following version:

openfl: 4.4.0
Lime: 3.4.1
hxcpp: 3.4.43

However when the client tried the apk on a Hawei mate9 it throwns an error DEtected problems with app native libraries. libApplicationMain.so Invalid DT_NEEDED entry d:\androidSDK\android-ndk-r8b …

I tried the following:

openfl setup android, and set the directory to d:\androidSDK\android-ndk-r13b
openfl clear android
openfl test android
(nothing changes, still compiles using d:\androidSDK\android-ndk-r8b)

Manually edit Users\myUser.lime\config.xml and set the ndk directory to d:\androidSDK\android-ndk-r13b

Same result… still compiles using d:\androidSDK\android-ndk-r8b

then I tried,
haxelib update

it downloads and installs
openfl: 4.9.1
Lime: 4.0.1
hxcpp: 3.4.64

openfl clear android
openfl test android
(compiles using d:\androidSDK\android-ndk-r8b) and application stops working.

If someone can give me a clue on how to proceed I would really appreciate. I come from flash world, so all this version and compiler options are a complete mess for me.

We have seen issues using newer Android devices, with the older Android NDK. In order for it to work properly, all binaries (Lime, HXCPP and your application) must be compiled with a newer NDK.

Perhaps this version of Lime is older than when we updated our toolchain to use a newer NDK for the official builds?

do you recomend to make a clean install of everything from scratch?

How can I create all binaries using new ndk?

as I said:

I tried the following:

openfl setup android, and set the directory to d:\androidSDK\android-ndk-r13b
openfl clear android
openfl test android
(nothing changes, still compiles using d:\androidSDK\android-ndk-r8b)

Manually edit Users\myUser.lime\config.xml and set the ndk directory to d:\androidSDK\android-ndk-r13b

Same result… still compiles using d:\androidSDK\android-ndk-r8b

Lime configures settings in “C:\Users<your user name>.lime\config.xml”, but it’s possible that HXCPP has a setting that is overriding your choice in Android NDK.

Check “C:\Users<your user name.hxcpp-config.xml” as well. You may be able to delete or update the Android NDK path set there

That might be enough, but if it is not, you will need to either update, or clone Lime from the source (at your same version) and rebuild it yourself.

Seems to be compiling with the right NDK!!!. Thanks.

Still not working if I change from openfl:4.4.0 to openfl:4.9.1 I will debug a little to check whats going on and If I can find the error.

Tks again
Luis

I added several “trace” commands to check the execution flow…

public function new() 
{
	super();
    trace('new');
  var bd:BitmapData = Assets.getBitmapData("img/splash.jpg");
  var bmp:Bitmap = new Bitmap(bd);
  bmp.name = 'splash';
  this.addChild(bmp);
  stage.scaleMode = StageScaleMode.SHOW_ALL;
  stage.addEventListener (Event.RESIZE, stage_resize);				
  bmp.width = stage.stageWidth  ;
  bmp.height = stage.stageHeight ;
  trace('fin new');

compile them with version 4.4.0 shows everything and app runs smooth. However when upgrade to 4.9.1 app compiles ok but blank screen showed and no traces in debug window.

Any clues?

Regards and thanks in advance.

If you’re testing the latest OpenFL, try and run the upgrade command again, there’s a new Lime release out that may work better for you

That works!!! THANKS

hxcpp: 3.4.64
Openfl: 4.9.1
Lime: 4.0.2

2 Likes

I updated openfl to 6.0.1 and lime to 5.3.0 and NDK to r13b then r15c my projects with hxcpp(which is 3.4.64) and sqlite(1.0.9) will encounter with this problem :
(target-sdk-23)

but projects without hxcpp and sqlite will run smoothly I guess this has something with hxcpp.
P.S: All of these projects compile and run with openfl(4.9.1) and lime(4.0.2) and NDK r10e with 22 target-sdk.

After updating your NDK, could you try doing openfl rebuild hxcpp android -clean? I believe our binaries in Lime should be a new enough version of the NDK to work properly with Android 6, but perhaps HXCPP is not.

Or perhaps the issue is with the sqlite library. I think openfl rebuild sqlite android -clean might do it

1 Like

thanks about the quick answer I did what you instructed but the same error still remains

Do you think you could comment out part of your project, so it will run without including the sqlite library? I believe the script for its native binaries is out-dated, and would result in not creating all the correct (needed) file names for Android or iOS native binaries.

I could fix this, but SQLite has been supported in core Haxe APIs for quite some time, so if you can test without using sqlite first, and that works, then perhaps using the Haxe SQLite API would make more sense:

http://old.haxe.org/doc/neko/sqlite

If you prefer the SQLite library instead (I forget if it uses a different API) then I could look at fixing this, but otherwise this may be solved :slight_smile:

1 Like

I removed sqlite from my project the app runs but its far worse in terms of performance (I used a lot of actuate) and the Sqlite operation crashes the app (but with openfl 4.9.1 and lime 4.0.2 and ndk r10e it runs smoothly and Sqlite commits) I think I’ll go with old version for a little longer.

Thank you for all your efforts anyway :kissing_heart:

I can resolve the issue with recompiling the older sqlite library, if you want.

What do you use in terms of performance? Are you using bitmaps, shape.graphics, Tilemap…?

Thanks :slight_smile:

1 Like