{ "id": "166842", "key": "TIMOB-24542", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": { "id": "11", "description": "Is not a bug in our product", "name": "Not Our Bug" }, "resolutiondate": "2017-04-04T15:18:08.000+0000", "created": "2017-03-29T08:45:22.000+0000", "priority": { "name": "None", "id": "6" }, "labels": [], "versions": [ { "id": "19275", "description": "Patch release for 6.0.x regressions or important fixes", "name": "Release 6.0.3", "archived": false, "released": true, "releaseDate": "2017-03-22" } ], "issuelinks": [], "assignee": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "updated": "2018-08-06T17:52:09.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" }, { "id": "13715", "name": "Hyperloop", "description": "Hyperloop project" } ], "description": "h5. Issue Description \r\n\r\nWhen customer is trying to access a static variable in the third party library, it is returned as null. (Unable to access the constants and enums in the third party library, it is returned as null)\r\n\r\nH5. Steps to Replicate \r\n# Download the attached project \r\n# Run \r\n# Click on the label ", "attachment": [ { "id": "61934", "filename": "HyperLoop_Example (1).zip", "author": { "name": "rramirez", "key": "rramirez", "displayName": " Ricardo Ramirez", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-03-29T08:45:20.000+0000", "size": 5170630, "mimeType": "application/zip" } ], "flagged": false, "summary": "Hyperloop: Android - Static variable is returned as null", "creator": { "name": "rramirez", "key": "rramirez", "displayName": " Ricardo Ramirez", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "rramirez", "key": "rramirez", "displayName": " Ricardo Ramirez", "active": true, "timeZone": "America/Los_Angeles" }, "environment": "Hyperloop 2.0.1\r\nCLI 5.0.11 \r\nSDK 6.0.3GA", "comment": { "comments": [ { "id": "416745", "author": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "body": "It would have been helpful to have more info here, like logs.\r\n\r\nIn any case, I attempted to reproduce the issue locally. When I run the above steps I see this in my logs:\r\n{code}\r\n[ERROR] HyperloopProxy: (main) [103417,108847] Exception thrown during invocation of method: public static com.kofax.kmc.kut.utilities.error.ErrorInfo com.kofax.kmc.kut.utilities.Licensing.setMobileSDKLicense(java.lang.String), args: [tt$,^0XzL#dRFXd#Z&Trt$4zd&J$D2VF6p[089dN5n[6qb04[(NPIUEAWGUNKl;dfvkhzdf7rglcvjck=,mIOF&^BUL?!!!!!!$n]\r\n[ERROR] HyperloopProxy: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file \"/data/app/com.axway.timob24542-1/base.apk\"],nativeLibraryDirectories=[/data/app/com.axway.timob24542-1/lib/x86, /data/app/com.axway.timob24542-1/base.apk!/lib/x86, /vendor/lib, /system/lib]]] couldn't find \"libAtalaBar.so\"\r\n[ERROR] HyperloopProxy: \tat java.lang.Runtime.loadLibrary(Runtime.java:367)\r\n[ERROR] HyperloopProxy: \tat java.lang.System.loadLibrary(System.java:1076)\r\n[ERROR] HyperloopProxy: \tat com.kofax.kmc.kut.utilities.IpLibUtil.(SourceFile:70)\r\n[ERROR] HyperloopProxy: \tat com.kofax.kmc.kut.utilities.Licensing.setMobileSDKLicense(SourceFile:41)\r\n[ERROR] HyperloopProxy: \tat java.lang.reflect.Method.invoke(Native Method)\r\n[ERROR] HyperloopProxy: \tat hyperloop.BaseProxy.invokeMethod(BaseProxy.java:145)\r\n[ERROR] HyperloopProxy: \tat hyperloop.BaseProxy.callNativeFunction(BaseProxy.java:127)\r\n[ERROR] HyperloopProxy: \tat org.appcelerator.kroll.runtime.v8.V8Object.nativeFireEvent(Native Method)\r\n[ERROR] HyperloopProxy: \tat org.appcelerator.kroll.runtime.v8.V8Object.fireEvent(V8Object.java:62)\r\n[ERROR] HyperloopProxy: \tat org.appcelerator.kroll.KrollProxy.doFireEvent(KrollProxy.java:872)\r\n[ERROR] HyperloopProxy: \tat org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1095)\r\n[ERROR] HyperloopProxy: \tat org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:360)\r\n[ERROR] HyperloopProxy: \tat android.os.Handler.dispatchMessage(Handler.java:98)\r\n[ERROR] HyperloopProxy: \tat android.os.Looper.loop(Looper.java:148)\r\n[ERROR] HyperloopProxy: \tat android.app.ActivityThread.main(ActivityThread.java:5417)\r\n[ERROR] HyperloopProxy: \tat java.lang.reflect.Method.invoke(Native Method)\r\n[ERROR] HyperloopProxy: \tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)\r\n[ERROR] HyperloopProxy: \tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)\r\n{code}\r\n\r\nThe important part there is that it's failing to load a native library named {{libAtalaBar.so}}\r\n\r\nI recompiled the platform/android/kfxutilities.jar and see that through chain of calls, we get to com.kofax.kmc.kut.utilities.IpLibutil class, which attempts to load the native libraries: AtalaBar and EvrsJniWrapper. That means there should be an {{libAtalaBar.so}} and {{libEvrsJniWrapper.so}} somewhere to load. Since this is a JAR file, it isn't inside it.\r\n\r\nSo the basic issue stems from missing native libraries that aren't packaged with this app, but are required by the kfxutilities.jar they're trying to consume. They need to make sure if they have Java libraries that require native libraries that they include those as well (They'd end up at a location like {{platform/android/libs//libAtalaBar.so}} where arch is {{x86}} or {{armeabi-v7a}}). Typically you'd package this up all of this as an AAR so the java code in this jar would be included as well as the native libraries it depends upon and you wouldn't have to worry about copying multiple files/paths over.\r\n", "updateAuthor": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "created": "2017-04-04T15:17:58.000+0000", "updated": "2017-04-04T15:17:58.000+0000" }, { "id": "440299", "author": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Closing as \"not our bug\". If you disagree, please reopen.", "updateAuthor": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-08-06T17:52:09.000+0000", "updated": "2018-08-06T17:52:09.000+0000" } ], "maxResults": 2, "total": 2, "startAt": 0 } } }