Skip to Content

Intel Android image and SMP 2.x MBO with UltraLite

After reading my blog about how to improve the performance of the Android emulator I guess you are using this image successfully for your Cordova development. In case you want to use the Intel image also for SUP/SMP MBO based projects, you won`t be able to do so. The UltraLite library is for ARM architecture and not for 386.

Here is a simple explanation why you’ll have to use the Google Android images (ARM): after adding the libraries to the Android project, coding the MBO part, deploying the app to the emulator and running it, the log shows an error message like:

FATAL EXCEPTION: mainjava.lang.ExceptionInInitializerError
at com.ianywhere.ultralitejni16.DatabaseManager.connect(Unknown Source)
at com.sybase.afx.ulj.ConnectionUtil.createConnection(
at com.sybase.afx.ulj.ConnectionUtil.getConnection(
Caused by: java.lang.UnsatisfiedLinkError: Couldn't load ultralitej16: findLibrary returned null
at java.lang.Runtime.loadLibrary(
at java.lang.System.loadLibrary(

Keep in mind that the libraries for the UltraLite database used by MBOs is delivered as a binary library (.so). This library is already compiled and won`t be compiled again for your Android project. This library is for Android devices on ARM, as this is the primary architecture for Android smartphone / tablets is ARM. The folder that contains the files is named armeabi and the .so files make it clear that the library is not a Java object. While the jar for UltraLite included in the Android project allows communicating with the API, the libraries will fail to load on Intel emulator.

On the Intel image, a .so file is for Intel 80386 architecture:


While on the “original” emulator from Google the architecture is ARM:


Running the exact same app on the Google Android image will work. Just install the APK file on the right emulator.

Be the first to leave a comment
You must be Logged on to comment or reply to a post.