Skip to Content
Author's profile photo Tobias Hofmann

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.

Assigned Tags

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