I'm trying to run hello world app using Rho Studio (just New -> Project -> Finish) on various supported platforms. I managed to run it on win32. I'm curious about windows mobile deployment, but I'm holding out now, since it requires paid subscription. The app also runs on all platforms on simulator, however I failed to run it on android using either run configuration -> Android -> Device) and RhoMobile -> Production Build -> Android, Local.
I've installed Android SDK, and NDK. I run keytool.exe
manually since cert generation requires keyboard input and it blocked rake script. Generally builds are ok, and I have RhoMobileApplication1-debug.apk or RhoMobileApplication1-signed.apk.
Then I deploy it to the device
adb install *.apk
And when I run the app it almost immediately crashes with standard android messagebox when something goes really wrong. So i did adb logcat
to file and figure out that possibly cause is that when loading librhodes.so
it tries to load soinfo_relocate
and fail.
However at this point my superpowers failed me, because google gives me only clue that it might be something with the Android NDK itself.
Any suggestions?
D/AbsListView(29935): unregisterIRListener() is called E/dalvikvm( 6074): dlopen("/data/app-lib/com.rhomobile.rhomobileapplication1-1/librhodes.so") failed: Cannot load library: soinfo_relocate(linker.cpp:976): cannot locate symbol "sigemptyset" referenced by "librhodes.so"... W/dalvikvm( 6074): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lcom/rhomobile/rhodes/RhodesApplication; W/dalvikvm( 6074): Class init failed in newInstance call (Lcom/rhomobile/rhodes/RhodesApplication;) D/AndroidRuntime( 6074): Shutting down VM W/dalvikvm( 6074): threadid=1: thread exiting with uncaught exception (group=0x42040930) E/AndroidRuntime( 6074): FATAL EXCEPTION: main E/AndroidRuntime( 6074): java.lang.ExceptionInInitializerError E/AndroidRuntime( 6074): at java.lang.Class.newInstanceImpl(Native Method) E/AndroidRuntime( 6074): at java.lang.Class.newInstance(Class.java:1319) E/AndroidRuntime( 6074): at android.app.Instrumentation.newApplication(Instrumentation.java:1000) E/AndroidRuntime( 6074): at android.app.Instrumentation.newApplication(Instrumentation.java:985) E/AndroidRuntime( 6074): at android.app.LoadedApk.makeApplication(LoadedApk.java:499) E/AndroidRuntime( 6074): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4565) E/AndroidRuntime( 6074): at android.app.ActivityThread.access$1400(ActivityThread.java:157) E/AndroidRuntime( 6074): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) E/AndroidRuntime( 6074): at android.os.Handler.dispatchMessage(Handler.java:99) E/AndroidRuntime( 6074): at android.os.Looper.loop(Looper.java:176) E/AndroidRuntime( 6074): at android.app.ActivityThread.main(ActivityThread.java:5319) E/AndroidRuntime( 6074): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime( 6074): at java.lang.reflect.Method.invoke(Method.java:511) E/AndroidRuntime( 6074): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) E/AndroidRuntime( 6074): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) E/AndroidRuntime( 6074): at dalvik.system.NativeStart.main(Native Method) E/AndroidRuntime( 6074): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: soinfo_relocate(linker.cpp:976): cannot locate symbol "sigemptyset" referenced by "librhodes.so"... E/AndroidRuntime( 6074): at java.lang.Runtime.loadLibrary(Runtime.java:371) E/AndroidRuntime( 6074): at java.lang.System.loadLibrary(System.java:535) E/AndroidRuntime( 6074): at com.rhomobile.rhodes.NativeLibraries.load(NativeLibraries.java:5) E/AndroidRuntime( 6074): at com.rhomobile.rhodes.RhodesApplication.(RhodesApplication.java:105) E/AndroidRuntime( 6074): ... 16 more D/SensorService( 1959): -0.1 0.7 10.0 D/CrashAnrDetector( 1959): processName: com.rhomobile.rhomobileapplication1 D/CrashAnrDetector( 1959): broadcastEvent : com.rhomobile.rhomobileapplication1 data_app_crash
RhoMobileSuite5.2.2
jre1.8.0_51
android-ndk-r10e
phone with android 4.2.2
tablet with android 4.4.2
RhoMobile doesn't support at this moment NDK r10, you need to use NDK r9, as documented on RhoMobile documentation website.
On RhoMobile developer forums there're some discussion about other issues linked to people using NDK r10: