benbahrenburg / benCoding.AlarmManager

Titanium Module for working with the Android AlarmManager
Other
98 stars 85 forks source link

Unsatisfied Symbol on API 25 with Ti SDK >= 7 #91

Open danieljlevine opened 6 years ago

danieljlevine commented 6 years ago

Really glad to have alarm manager for my application. However, a user reported that on their Galaxy S6 device my Appcelerator app would crash immediately. So I loaded up a simulator and got it to crash too for Ti SDK 7.1GA, 7.0.2GA and 7.0.1GA. However, it does work for SDK 6.3.0.v20171030181741 (the only older version I have now.

When it crashed, studio reports (snipped):

[INFO] : Project built successfully in 43s 409ms -- Start application log ----------------------------------------------------- [WARN] : art: Unexpected CPU variant for X86 using defaults: x86 [INFO] : TiApplication: (main) [0,0] checkpoint, app created. [INFO] : TiApplication: (main) [13,13] Titanium 7.1.0 (2018/03/14 13:40 undefined) [INFO] : MultiDex: VM with version 2.1.0 has multidex support [INFO] : MultiDex: install [INFO] : MultiDex: VM has multidex support, MultiDex support library is disabled. [WARN] : TiAndroid: (main) [771,784] Application instance no longer available. Unable to get current activity. [WARN] : TiAndroid: (main) [5,789] Application instance no longer available. Unable to get current activity. [WARN] : TiAndroid: (main) [0,789] Application instance no longer available. Unable to get current activity. [ERROR] : TiApplication: (main) [34,823] Sending event: exception on thread: main msg:java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZNSt3112next_primeEj" referenced by "/data/app/edu.jhuapl.InTheZoneChallenge-1/lib/x86/libbencoding.alarmmanager.so"...; Titanium 7.1.0,2018/03/14 13:40,undefined [ERROR] : TiApplication: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZNSt3112next_primeEj" referenced by "/data/app/edu.jhuapl.InTheZoneChallenge-1/lib/x86/libbencoding.alarmmanager.so"... [ERROR] : TiApplication: at java.lang.Runtime.loadLibrary0(Runtime.java:989) [ERROR] : TiApplication: at java.lang.System.loadLibrary(System.java:1530) [ERROR] : TiApplication: at org.appcelerator.kroll.runtime.v8.V8Runtime.loadExternalModules(V8Runtime.java:142) [ERROR] : TiApplication: at org.appcelerator.kroll.runtime.v8.V8Runtime.initRuntime(V8Runtime.java:109) [ERROR] : TiApplication: at org.appcelerator.kroll.KrollRuntime.doInit(KrollRuntime.java:207) [ERROR] : TiApplication: at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:113) [ERROR] : TiApplication: at org.appcelerator.kroll.KrollRuntime.init(KrollRuntime.java:135) [ERROR] : TiApplication: at edu.jhuapl.InTheZoneChallenge.InthezonechallengetrackerApplication.onCreate(InthezonechallengetrackerApplication.java:77) [ERROR] : TiApplication: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024) [ERROR] : TiApplication: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5403) [ERROR] : TiApplication: at android.app.ActivityThread.-wrap2(ActivityThread.java) [ERROR] : TiApplication: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1545) [ERROR] : TiApplication: at android.os.Handler.dispatchMessage(Handler.java:102) [ERROR] : TiApplication: at android.os.Looper.loop(Looper.java:154) [ERROR] : TiApplication: at android.app.ActivityThread.main(ActivityThread.java:6119) [ERROR] : TiApplication: at java.lang.reflect.Method.invoke(Native Method) [ERROR] : TiApplication: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) [ERROR] : TiApplication: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

So, if I'm reading this correctly, it's having trouble finding next prime? I didn't see any reference to it in the code of the repo. Any idea as to how to resolve this to work for more recent Appcelerator SDKs to work on Android API 25?

danieljlevine commented 6 years ago

With the help of the Appcelerator chat support team, I managed to stumble through the process of how to fix this issue. Needed to get NDK 16 and configure Appcelerator Studio to use it. Forked the module on Github. Git cloned to a local directory. Added existing directory as a Module project in Appcelerator Studio. Opened a command shell and went into the base directory of the new module project and typed: appc run -p android --build-only

This turned 1.0.0 int 1.0.1 and made some necessary modifications including a rebuilt using the NDK 16 (I assume). This churned for a while but then completed in what appeared to be successful.

Got the zip file that was made in the module project's dist/ directory and copied it into the base directory my Appcelerator app. Built my app and magically the 1.0.1 version found it's way into the right play in the project under modules and the app built and finally ran!

moizchhatriwala commented 6 years ago

Can you share the updated zip with us.

deckameron commented 6 years ago

@moizchhatriwala here is the link.