{ "id": "172056", "key": "TIMOB-26297", "fields": { "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "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": [ { "id": "20238", "description": "", "name": "Release 7.5.0", "archived": false, "released": true, "releaseDate": "2018-11-15" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2018-09-19T13:16:54.000+0000", "created": "2018-08-14T06:37:14.000+0000", "epic": { "id": 172002, "key": "TIMOB-26258", "name": "Android P: Implement Support", "summary": "Android P: Implement Support", "color": { "key": "color_8" }, "done": false }, "priority": { "name": "Critical", "id": "1" }, "labels": [ "android", "android-9", "apache", "common-codec" ], "versions": [], "issuelinks": [], "assignee": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2018-10-01T19:00:44.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" } ], "description": "Greetings,\r\n\r\nOur existing app, found at\r\nhttps://play.google.com/store/apps/details?id=com.imoogi.gevacampus ,\r\ndoes not seem to work on the new Android Pie. We have not made any changes to the app in the past year or so.\r\nI've asked the app's developer, who no longer works for us (just to explain why I'm here), for help. He used an emulator to come up with the attached log.\r\n\r\nCan you tell what the problem is from that? Is there a quick fix?\r\n\r\nEdit: I'm not sure what version of the studio the app was compiled with, given that it was uploaded more than a year ago. I'm still trying to figure out if the issue is still occuring on a recent alpha release that was compiled on a newer SDK.\r\n\r\nAppreciate your help.\r\nOmri sapir", "attachment": [ { "id": "65439", "filename": "Geva app log.txt", "author": { "name": "osapir", "key": "osapir", "displayName": "Omri Sapir", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2018-08-14T06:36:15.000+0000", "size": 146093, "mimeType": "text/plain" } ], "flagged": false, "summary": "Android: Resolve ImageView \"images\" property so that it'll work when targeting Android P", "creator": { "name": "osapir", "key": "osapir", "displayName": "Omri Sapir", "active": true, "timeZone": "Asia/Jerusalem" }, "subtasks": [], "reporter": { "name": "osapir", "key": "osapir", "displayName": "Omri Sapir", "active": true, "timeZone": "Asia/Jerusalem" }, "environment": "Android 9.0", "closedSprints": [ { "id": 1078, "state": "closed", "name": "2018 Sprint 20 SDK", "startDate": "2018-09-23T16:57:58.349Z", "endDate": "2018-10-07T16:57:00.000Z", "completeDate": "2018-10-07T23:31:40.476Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "440725", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "It looks like the {{BinaryEncoder}} class was removed in Android 9.0. It is used in the Ti.UI.ImageView [here|https://github.com/appcelerator/titanium_mobile/blob/master/android/titanium/src/java/org/appcelerator/titanium/util/TiUIHelper.java#L922] to handle image resources.\r\n\r\nA simple fix would be to use the following instead:\r\n{code:java}\r\nresult.append(new String(Hex.encodeHex(DigestUtils.md5(forHash))).substring(0, 10));\r\n{code}\r\n\r\n*EDIT*: I just ran our kitchensink sample-app on Android 9 and it works fine, even with image-views. It is possible that you use some kind of Ti.Android.R or Ti.App.Android.R API's to get Android resources (aka res-id's) to be displayed in an image-view within your app?\r\n\r\n*EDIT 2*: Ok, so I think I pinpointed it. Where and how do you use the {{images}} (not {{image}}) property of the Ti.UI.ImageView and what do you pass?", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-08-14T06:54:49.000+0000", "updated": "2018-08-14T07:17:03.000+0000" }, { "id": "440727", "author": { "name": "osapir", "key": "osapir", "displayName": "Omri Sapir", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "Hi!\r\n\r\nThanks for the quick update. According to our developer, We use it for splash animation. Here is the bit of code that deals with it:\r\n\r\n{code:java}\r\nlet frames = [\r\n 'frame_01.png',\r\n 'frame_02.png',\r\n 'frame_03.png',\r\n 'frame_04.png',\r\n 'frame_05.png',\r\n 'frame_06.png',\r\n 'frame_07.png',\r\n 'frame_08.png',\r\n 'frame_09.png',\r\n 'frame_10.png',\r\n 'frame_11.png',\r\n 'frame_12.png',\r\n 'frame_13.png',\r\n 'frame_14.png',\r\n 'frame_15.png',\r\n 'frame_16.png',\r\n 'frame_16.png'\r\n];\r\n\r\nif (Ti.Platform.osname === 'android') {\r\n frames = [\r\n Ti.App.Android.R.drawable.frame_01,\r\n Ti.App.Android.R.drawable.frame_02,\r\n Ti.App.Android.R.drawable.frame_03,\r\n Ti.App.Android.R.drawable.frame_04,\r\n Ti.App.Android.R.drawable.frame_05,\r\n Ti.App.Android.R.drawable.frame_06,\r\n Ti.App.Android.R.drawable.frame_07,\r\n Ti.App.Android.R.drawable.frame_08,\r\n Ti.App.Android.R.drawable.frame_09,\r\n Ti.App.Android.R.drawable.frame_10,\r\n Ti.App.Android.R.drawable.frame_11,\r\n Ti.App.Android.R.drawable.frame_12,\r\n Ti.App.Android.R.drawable.frame_13,\r\n Ti.App.Android.R.drawable.frame_14,\r\n Ti.App.Android.R.drawable.frame_15,\r\n Ti.App.Android.R.drawable.frame_16,\r\n Ti.App.Android.R.drawable.frame_16,\r\n ];\r\n}\r\n\r\nlet animatedSplashContainer = Ti.UI.createView({\r\n height: Ti.UI.FILL,\r\n width: Ti.UI.FILL,\r\n backgroundColor: '#fff',\r\n zIndex: 100\r\n});\r\nself.add(animatedSplashContainer);\r\n\r\nlet animatedSplash = Ti.UI.createImageView({\r\n images: frames,\r\n height: Ti.UI.FILL,\r\n duration: 100,\r\n \r\n});\r\nanimatedSplashContainer.add(animatedSplash);\r\n\r\nanimatedSplash.addEventListener('start', function () {\r\n bootApp();\r\n \r\n animatedSplash.repeatCount = 1;\r\n});\r\nanimatedSplash.addEventListener('stop', function () {\r\n this.animate({\r\n opacity: 0,\r\n duration: 200\r\n }, function () {\r\n self.remove(animatedSplashContainer);\r\n animatedSplashContainer.remove(animatedSplash);\r\n animatedSplash = null;\r\n animatedSplashContainer = null;\r\n \r\n postIntroAnimation();\r\n });\r\n});\r\n\r\nself.open();\r\nanimatedSplash.start();\r\n{code}\r\n", "updateAuthor": { "name": "osapir", "key": "osapir", "displayName": "Omri Sapir", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2018-08-14T07:53:28.000+0000", "updated": "2018-08-14T07:53:28.000+0000" }, { "id": "440729", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Thanks, so I was right, yey! Would you be able to provide the above test-case in a simplified (classic app.js) project that you can attach? Once we are able to reproduce it, we could fix it on the fly and provide you a custom version of the SDK so you can reupload your app asap. Thank you!\r\n\r\n*EDIT*: I just tested the following code (with some demo resources in platform/android/res/drawable) and it works fine on Android 9:\r\n{code:js}\r\nvar self = Ti.UI.createWindow();\r\nvar frames = [\r\n Ti.App.Android.R.drawable.frame_01,\r\n Ti.App.Android.R.drawable.frame_02,\r\n Ti.App.Android.R.drawable.frame_03,\r\n Ti.App.Android.R.drawable.frame_04,\r\n Ti.App.Android.R.drawable.frame_05,\r\n Ti.App.Android.R.drawable.frame_06,\r\n Ti.App.Android.R.drawable.frame_07,\r\n Ti.App.Android.R.drawable.frame_08,\r\n Ti.App.Android.R.drawable.frame_09,\r\n Ti.App.Android.R.drawable.frame_10,\r\n Ti.App.Android.R.drawable.frame_11,\r\n Ti.App.Android.R.drawable.frame_12,\r\n Ti.App.Android.R.drawable.frame_13,\r\n Ti.App.Android.R.drawable.frame_14,\r\n Ti.App.Android.R.drawable.frame_15,\r\n Ti.App.Android.R.drawable.frame_16,\r\n Ti.App.Android.R.drawable.frame_16,\r\n];\r\n\r\nvar animatedSplashContainer = Ti.UI.createView({\r\n height: Ti.UI.FILL,\r\n width: Ti.UI.FILL,\r\n backgroundColor: '#fff',\r\n zIndex: 100\r\n});\r\nself.add(animatedSplashContainer);\r\n\r\nvar animatedSplash = Ti.UI.createImageView({\r\n images: frames,\r\n height: Ti.UI.FILL,\r\n duration: 100,\r\n\r\n});\r\nanimatedSplashContainer.add(animatedSplash);\r\n\r\nanimatedSplash.addEventListener('start', function() {\r\n animatedSplash.repeatCount = 1;\r\n});\r\nanimatedSplash.addEventListener('stop', function() {\r\n this.animate({\r\n opacity: 0,\r\n duration: 200\r\n }, function() {\r\n self.remove(animatedSplashContainer);\r\n animatedSplashContainer.remove(animatedSplash);\r\n animatedSplash = null;\r\n animatedSplashContainer = null;\r\n\r\n\tTi.API.info('DONE')\r\n });\r\n});\r\n\r\nself.addEventListener('open', function() {\r\n animatedSplash.start();\r\n});\r\n\r\nself.add(animatedSplashContainer)\r\nself.open();\r\n{code}\r\n\r\nI used 7.2.0.GA, but 7.1.1 should work quite the same. Did you try to use 7.2.0 or even 7_3_X (ti sdk install -b 7_3_X) already? I even tried to remove some drawables to see if that triggers the error but it doesn't.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-08-14T07:57:34.000+0000", "updated": "2018-08-14T08:16:34.000+0000" }, { "id": "440730", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "I was able to reproduce it. The issue can also be seen when using {{Ti.Utils.md5HexDigest}} which uses the same internal API's:\r\n{code:js}\r\nvar win = Ti.UI.createWindow({\r\n\tbackgroundColor: '#fff'\r\n });\r\n \r\n var btn = Ti.UI.createButton({\r\n title: 'Trigger'\r\n });\r\n \r\n btn.addEventListener('click', function() {\r\n Ti.API.info(Ti.Utils.md5HexDigest('HELLO_WORLD'));\r\n });\r\n \r\n win.add(btn);\r\n win.open();\r\n{code}", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-08-14T08:24:22.000+0000", "updated": "2018-08-14T08:24:22.000+0000" }, { "id": "440731", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "PR: https://github.com/appcelerator/titanium_mobile/pull/10253\r\nTest-Case: Above", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-08-14T08:43:43.000+0000", "updated": "2018-08-14T08:43:43.000+0000" }, { "id": "440733", "author": { "name": "osapir", "key": "osapir", "displayName": "Omri Sapir", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "Tried to remove the code that dealt with the animation. I still see errors in the log; hopefully it helps:\r\n\r\n{code:java}\r\n-- Start application log -----------------------------------------------------\r\n[WARN] W/oogi.gevacampu: Unexpected CPU variant for X86 using defaults: x86\r\n[ERROR] E/oogi.gevacampu: Not starting debugger since process cannot load the jdwp agent.\r\n[WARN] W/oogi.gevacampu: resources.arsc in APK '/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk' is compressed.\r\n[INFO] TiApplication: (main) [0,0] checkpoint, app created.\r\n[INFO] I/oogi.gevacampu: Background concurrent copying GC freed 24127(3MB) AllocSpace objects, 9(736KB) LOS objects, 37% free, 10MB/16MB, paused 31.144ms total 285.091ms\r\n[INFO] TiApplication: (main) [308,308] Titanium 7.2.0 (2018/06/07 05:21 undefined)\r\n[INFO] MultiDex: VM with version 2.1.0 has multidex support\r\n[INFO] MultiDex: install\r\n[INFO] MultiDex: VM has multidex support, MultiDex support library is disabled.\r\n[INFO] TiApplication: (main) [85,393] Analytics have been disabled\r\n[INFO] TiApplication: (main) [111,504] Titanium Javascript runtime: v8\r\n[WARN] TiAndroid: (KrollRuntimeThread) [1503,2007] Application instance no longer available. Unable to get current activity.\r\n[WARN] TiAndroid: (KrollRuntimeThread) [1,2008] Application instance no longer available. Unable to get current activity.\r\n[WARN] TiAndroid: (KrollRuntimeThread) [1,2009] Application instance no longer available. Unable to get current activity.\r\n[WARN] ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@419f1c\r\n[INFO] TiRootActivity: (main) [0,0] checkpoint, on root activity create, savedInstanceState: null\r\n[INFO] TiApplication: (main) [22,22] Analytics have been disabled\r\n[INFO] Not found: mobi-main_window-default-yoel_geva_head\r\n[INFO] TiRootActivity: (main) [0,0] checkpoint, on root activity resume. activity = com.imoogi.gevacampus.YoelGevaCampusActivity@6ee36ab\r\n[INFO] I/oogi.gevacampu: Background concurrent copying GC freed 83219(5MB) AllocSpace objects, 19(4MB) LOS objects, 49% free, 5MB/10MB, paused 8.785ms total 101.511ms\r\n[INFO] ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0\r\n[INFO] ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0\r\n[INFO] OpenGLRenderer: Initialized EGL, version 1.4\r\n[WARN] OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...\r\n[WARN] ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@690066b\r\n[INFO] I/oogi.gevacampu: Rejecting re-init on previously-failed class java.lang.Class: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/codec/BinaryEncoder;\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu: Caused by: java.lang.ClassNotFoundException: Didn't find class \"org.apache.commons.codec.BinaryEncoder\" on path: DexPathList[[zip file \"/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk\"],nativeLibraryDirectories=[/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/lib/x86, /data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk!/lib/x86, /system/lib]]\r\n[INFO] I/oogi.gevacampu: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu:\r\n[INFO] I/oogi.gevacampu: Rejecting re-init on previously-failed class java.lang.Class: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/codec/BinaryEncoder;\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu: Caused by: java.lang.ClassNotFoundException: Didn't find class \"org.apache.commons.codec.BinaryEncoder\" on path: DexPathList[[zip file \"/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk\"],nativeLibraryDirectories=[/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/lib/x86, /data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk!/lib/x86, /system/lib]]\r\n[INFO] I/oogi.gevacampu: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu:\r\n[INFO] I/oogi.gevacampu: Rejecting re-init on previously-failed class java.lang.Class: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/codec/BinaryEncoder;\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu: Caused by: java.lang.ClassNotFoundException: Didn't find class \"org.apache.commons.codec.BinaryEncoder\" on path: DexPathList[[zip file \"/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk\"],nativeLibraryDirectories=[/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/lib/x86, /data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk!/lib/x86, /system/lib]]\r\n[INFO] I/oogi.gevacampu: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu:\r\n[INFO] I/oogi.gevacampu: Rejecting re-init on previously-failed class java.lang.Class: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/codec/BinaryEncoder;\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu: Caused by: java.lang.ClassNotFoundException: Didn't find class \"org.apache.commons.codec.BinaryEncoder\" on path: DexPathList[[zip file \"/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk\"],nativeLibraryDirectories=[/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/lib/x86, /data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk!/lib/x86, /system/lib]]\r\n[INFO] I/oogi.gevacampu: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu:\r\n[INFO] I/oogi.gevacampu: Rejecting re-init on previously-failed class java.lang.Class: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/codec/BinaryEncoder;\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu: Caused by: java.lang.ClassNotFoundException: Didn't find class \"org.apache.commons.codec.BinaryEncoder\" on path: DexPathList[[zip file \"/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk\"],nativeLibraryDirectories=[/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/lib/x86, /data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk!/lib/x86, /system/lib]]\r\n[INFO] I/oogi.gevacampu: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu:\r\n[INFO] I/oogi.gevacampu: Rejecting re-init on previously-failed class java.lang.Class: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/codec/BinaryEncoder;\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu: Caused by: java.lang.ClassNotFoundException: Didn't find class \"org.apache.commons.codec.BinaryEncoder\" on path: DexPathList[[zip file \"/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk\"],nativeLibraryDirectories=[/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/lib/x86, /data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk!/lib/x86, /system/lib]]\r\n[INFO] I/oogi.gevacampu: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu:\r\n[INFO] I/oogi.gevacampu: Rejecting re-init on previously-failed class java.lang.Class: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/codec/BinaryEncoder;\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu: Caused by: java.lang.ClassNotFoundException: Didn't find class \"org.apache.commons.codec.BinaryEncoder\" on path: DexPathList[[zip file \"/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk\"],nativeLibraryDirectories=[/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/lib/x86, /data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk!/lib/x86, /system/lib]]\r\n[INFO] I/oogi.gevacampu: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu:\r\n[INFO] I/oogi.gevacampu: Rejecting re-init on previously-failed class java.lang.Class: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/codec/BinaryEncoder;\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu: Caused by: java.lang.ClassNotFoundException: Didn't find class \"org.apache.commons.codec.BinaryEncoder\" on path: DexPathList[[zip file \"/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk\"],nativeLibraryDirectories=[/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/lib/x86, /data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk!/lib/x86, /system/lib]]\r\n[INFO] I/oogi.gevacampu: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu:\r\n[INFO] I/oogi.gevacampu: Rejecting re-init on previously-failed class java.lang.Class: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/codec/BinaryEncoder;\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu: Caused by: java.lang.ClassNotFoundException: Didn't find class \"org.apache.commons.codec.BinaryEncoder\" on path: DexPathList[[zip file \"/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk\"],nativeLibraryDirectories=[/data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/lib/x86, /data/app/com.imoogi.gevacampus-a_NWODml5z1rdD3dxwuqnw==/base.apk!/lib/x86, /system/lib]]\r\n[INFO] I/oogi.gevacampu: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)\r\n[INFO] I/oogi.gevacampu: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)\r\n[INFO] I/oogi.gevacampu: at java.lang.String org.apache.commons.codec.digest.DigestUtils.shaHex(java.lang.String) (DigestUtils.java:150)\r\n[INFO] I/oogi.gevacampu: at void org.appcelerator.titanium.TiVerify.run() ((null):-1)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.mainLoop() (Timer.java:562)\r\n[INFO] I/oogi.gevacampu: at void java.util.TimerThread.run() (Timer.java:512)\r\n[INFO] I/oogi.gevacampu:\r\n[INFO] Process: Sending signal. PID: 24711 SIG: 9\r\n{code}\r\n", "updateAuthor": { "name": "osapir", "key": "osapir", "displayName": "Omri Sapir", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2018-08-14T08:48:50.000+0000", "updated": "2018-08-14T08:48:50.000+0000" }, { "id": "440736", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "[~osapir] The root cause was an outdated Apache \"common-codec\" library used for md5/sha calculations. I am just uploading you a custom 7.1.2 version that represents a 7.1.1.GA + this fix so you can test and upload it right away. [Download 7.1.2 here|https://eu.syncplicity.com/share/x75owoazxqh6wfc/mobilesdk-7.1.2-osx].", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-08-14T08:53:24.000+0000", "updated": "2018-08-14T08:58:06.000+0000" }, { "id": "440739", "author": { "name": "osapir", "key": "osapir", "displayName": "Omri Sapir", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "Our developer is installing and checking right now.\r\nI really appreciate the quick handling of the situation. Thank you.\r\n\r\nEdit: Our developer is having issues with the installation. Is there a chance for a Windows version?", "updateAuthor": { "name": "osapir", "key": "osapir", "displayName": "Omri Sapir", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2018-08-14T09:09:52.000+0000", "updated": "2018-08-14T09:15:42.000+0000" }, { "id": "440742", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "I'm sorry, I run on macOS only. You could cherry-pick the changes from the pull-request manually and build an own (windows-based) version of the SDK.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-08-14T09:58:52.000+0000", "updated": "2018-08-14T09:58:52.000+0000" }, { "id": "440809", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~osapir], is your app targeting API Level 28 (aka: Android P) as shown below?\r\n{code:xml}\r\n\r\n{code}\r\n\r\nTitanium does not support \"targeting\" API Level 28 yet. As of Titanium 7.3.0, we support targeting up to API Level 27 (aka: Android 8.1). We document what we support [here|https://docs.appcelerator.com/platform/latest/#!/guide/Titanium_Compatibility_Matrix-section-src-29004837_safe-id-VGl0YW5pdW1Db21wYXRpYmlsaXR5TWF0cml4LUFuZHJvaWRTREsvVGFyZ2V0QW5kcm9pZHBsYXRmb3Jt].\r\n\r\nNow, we do allow app developer to target a higher API Level at their own risk, but recommend that you stick to what Titanium supports since this is what we internally test against. I say this because Google introduces breaking-changes when targeting higher API Levels. For example, Google documents the following breaking-changes for Android P in the link below. We have to go out of our way to resolve these breaking changes in our core Titanium code before we can claim that we support targeting it (like the changes [~hknoechel] is suggesting).\r\nhttps://developer.android.com/about/versions/pie/android-9.0-changes-all\r\n\r\nFor now, I recommend that you build with Titanium 7.3.0 and target API Level 27, which is the API Level that Google Play currently requires. An Android P device will run your app in backward compatibility mode and will correctly load your images and perform MD5 hashes. I've confirmed this.\r\n", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-08-16T02:30:28.000+0000", "updated": "2018-08-16T02:30:28.000+0000" }, { "id": "440813", "author": { "name": "osapir", "key": "osapir", "displayName": "Omri Sapir", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "Since our current production build was uploaded on March 2017, I assume the target SDK is much lower than that. And that's the build that is having issues on Pie.", "updateAuthor": { "name": "osapir", "key": "osapir", "displayName": "Omri Sapir", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2018-08-16T07:05:58.000+0000", "updated": "2018-08-16T07:06:33.000+0000" }, { "id": "440830", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I can't reproduce this issue in Titanium 7.1.1 unless I explicitly target API Level 28 (Android P) in XML myself. By default, Titanium 7.1.1 won't target Android P, which avoids this issue.\r\n\r\nCan you double check your \"tiapp.xml\" file please?\r\nCheck if you have the below set. If you do, then I recommend that you delete it. Titanium will then automatically target the highest API Level it supports.\r\n{code:xml}\r\n\r\n{code}\r\n", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-08-16T17:44:55.000+0000", "updated": "2018-08-16T17:44:55.000+0000" }, { "id": "442202", "author": { "name": "kmahalingam", "key": "kmahalingam", "displayName": "Keerthi Mahalingam", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Verified the fix on SDK 7.5.0.v20181001073642. Image view displayed correctly on android 9 and other OS versions.Closing\r\nOperating System\r\n Name = Mac OS X\r\n Version = 10.13.6\r\n Architecture = 64bit\r\nNode.js\r\n Node.js Version = 8.9.1\r\n npm Version = 5.5.1\r\nTitanium CLI\r\n CLI Version = 5.1.1\r\nTitanium SDK\r\nSDK =7.5.0.v20181001073642\r\nDevice =samsung s5 android 6,pixel2 android 9, sony experia android4.1 emulator.", "updateAuthor": { "name": "kmahalingam", "key": "kmahalingam", "displayName": "Keerthi Mahalingam", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2018-10-01T19:00:38.000+0000", "updated": "2018-10-01T19:00:38.000+0000" } ], "maxResults": 15, "total": 15, "startAt": 0 } } }