Intel Android image and SMP 2.x MBO with UltraLite

Let the world know ...Tweet about this on TwitterShare on Google+0Share on Facebook0Email this to someoneShare on LinkedIn0

Note: this blog was also published on SAP Community Network: http://scn.sap.com/community/mobile/blog/2014/10/15/intel-android-image-and-smp-2x-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: main

java.lang.ExceptionInInitializerError

at com.ianywhere.ultralitejni16.DatabaseManager.connect(Unknown Source)

at com.sybase.afx.ulj.ConnectionUtil.createConnection(ConnectionUtil.java:199)

at com.sybase.afx.ulj.ConnectionUtil.getConnection(ConnectionUtil.java:176)

[…]

Caused by: java.lang.UnsatisfiedLinkError: Couldn’t load ultralitej16: findLibrary returned null

at java.lang.Runtime.loadLibrary(Runtime.java:365)

at java.lang.System.loadLibrary(System.java:535)

 

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.

Let the world know ...Tweet about this on TwitterShare on Google+0Share on Facebook0Email this to someoneShare on LinkedIn0

Leave a Reply

Your email address will not be published. Required fields are marked *