{ "id": "174587", "key": "AC-6459", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "12217", "key": "AC", "name": "Appcelerator - INBOX", "projectCategory": { "id": "10000", "description": "", "name": "Customer Service" } }, "resolution": null, "resolutiondate": null, "created": "2019-12-20T14:13:23.000+0000", "labels": [ "android" ], "versions": [], "issuelinks": [], "assignee": { "name": "nsalahin", "key": "nsalahin", "displayName": "Nazmus Salahin", "active": true, "timeZone": "Asia/Dhaka" }, "updated": "2020-02-08T03:19:07.000+0000", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "components": [ { "id": "15000", "name": "Hyperloop" }, { "id": "14548", "name": "Titanium SDK & CLI", "description": "Please enter tickets related to the MobileSDK here." } ], "description": "The following code works with SDK 8.3 and the andoid: android:targetSdkVersion=27\r\n\r\n{code:js}\r\n(function(){\r\n\r\n\tconst Activity \t\t\t\t\t\t= require('android.app.Activity');\r\n\tconst FrameLayout \t\t\t\t\t= require('android.widget.FrameLayout');\r\n\r\n\tconst _activity = new Activity(Ti.Android.currentActivity);\r\n\tconst _context = _activity.getApplicationContext();\r\n\t\r\n\tconst FrameLayoutView = FrameLayout.extend({});\t\r\n\t\r\n\tvar _self = new FrameLayoutView(_context);\r\n})();\r\n{code}\r\n\r\nHowever, updating the targetSdkVerision to 28 or 29, the following error occurs:\r\n\r\n{code}\r\n[ERROR] : HyperloopProxy: (main) [1922,2638] Exception during instantiation of class 'android.widget.FrameLayout'\r\n[ERROR] : HyperloopProxy: java.lang.NoSuchMethodError: No super method internalSetPadding(IIII)V in class Landroid/widget/FrameLayout; or its super classes (declaration of 'android.widget.FrameLayout' appears in /system/framework/framework.jar!classes2.dex)\r\n[ERROR] : HyperloopProxy: \tat FrameLayout_Proxy.internalSetPadding(Unknown Source:47)\r\n[ERROR] : HyperloopProxy: \tat android.view.View.(View.java:5558)\r\n[ERROR] : HyperloopProxy: \tat android.view.ViewGroup.(ViewGroup.java:659)\r\n[ERROR] : HyperloopProxy: \tat android.view.ViewGroup.(ViewGroup.java:655)\r\n[ERROR] : HyperloopProxy: \tat android.view.ViewGroup.(ViewGroup.java:651)\r\n[ERROR] : HyperloopProxy: \tat android.view.ViewGroup.(ViewGroup.java:647)\r\n[ERROR] : HyperloopProxy: \tat android.widget.FrameLayout.(FrameLayout.java:78)\r\n[ERROR] : HyperloopProxy: \tat FrameLayout_Proxy.(Unknown Source:0)\r\n[ERROR] : HyperloopProxy: \tat java.lang.reflect.Constructor.newInstance0(Native Method)\r\n[ERROR] : HyperloopProxy: \tat java.lang.reflect.Constructor.newInstance(Constructor.java:343)\r\n[ERROR] : HyperloopProxy: \tat hyperloop.ClassProxy.newInstance(ClassProxy.java:89)\r\n[ERROR] : HyperloopProxy: \tat hyperloop.DynamicSubclassProxy.newInstance(DynamicSubclassProxy.java:30)\r\n[ERROR] : HyperloopProxy: \tat org.appcelerator.kroll.runtime.v8.V8Runtime.nativeRunModuleBytes(Native Method)\r\n[ERROR] : HyperloopProxy: \tat org.appcelerator.kroll.runtime.v8.V8Runtime.doRunModuleBytes(V8Runtime.java:162)\r\n[ERROR] : HyperloopProxy: \tat org.appcelerator.kroll.KrollRuntime.runModuleBytes(KrollRuntime.java:212)\r\n[ERROR] : HyperloopProxy: \tat org.appcelerator.titanium.TiLaunchActivity.loadScript(TiLaunchActivity.java:101)\r\n[ERROR] : HyperloopProxy: \tat org.appcelerator.titanium.TiRootActivity.loadScript(TiRootActivity.java:480)\r\n[ERROR] : HyperloopProxy: \tat org.appcelerator.titanium.TiLaunchActivity.onResume(TiLaunchActivity.java:192)\r\n[ERROR] : HyperloopProxy: \tat org.appcelerator.titanium.TiRootActivity.onResume(TiRootActivity.java:499)\r\n[ERROR] : HyperloopProxy: \tat android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1412)\r\n[ERROR] : HyperloopProxy: \tat android.app.Activity.performResume(Activity.java:7292)\r\n[ERROR] : HyperloopProxy: \tat android.app.ActivityThread.performResumeActivity(ActivityThread.java:3776)\r\n[ERROR] : HyperloopProxy: \tat android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3816)\r\n[ERROR] : HyperloopProxy: \tat android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51)\r\n[ERROR] : HyperloopProxy: \tat android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)\r\n[ERROR] : HyperloopProxy: \tat android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)\r\n[ERROR] : HyperloopProxy: \tat android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)\r\n[ERROR] : HyperloopProxy: \tat android.os.Handler.dispatchMessage(Handler.java:106)\r\n[ERROR] : HyperloopProxy: \tat android.os.Looper.loop(Looper.java:193)\r\n[ERROR] : HyperloopProxy: \tat android.app.ActivityThread.main(ActivityThread.java:6669)\r\n[ERROR] : HyperloopProxy: \tat java.lang.reflect.Method.invoke(Native Method)\r\n[ERROR] : HyperloopProxy: \tat com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)\r\n[ERROR] : HyperloopProxy: \tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)\r\n{code}", "attachment": [], "flagged": false, "summary": "java.lang.NoSuchMethodError: No super method internalSetPadding(IIII)V", "creator": { "name": "lawrence.wilson@abannan.com", "key": "lawrence.wilson@abannan.com", "displayName": "Lawrence Wilson", "active": true, "timeZone": "Europe/London" }, "subtasks": [], "reporter": { "name": "lawrence.wilson@abannan.com", "key": "lawrence.wilson@abannan.com", "displayName": "Lawrence Wilson", "active": true, "timeZone": "Europe/London" }, "environment": "Operating System\r\n Name = Mac OS X\r\n Version = 10.15.1\r\n Architecture = 64bit\r\n # CPUs = 4\r\n Memory = 25769803776\r\n\r\nNode.js\r\n Node.js Version = 10.16.2\r\n npm Version = 6.9.0\r\n\r\nTitanium CLI\r\n CLI Version = 5.2.2\r\n\r\nTitanium SDK\r\n SDK Version = 8.3.0.GA\r\n SDK Path = /Users/lawrencewilson/Library/Application Support/Titanium/mobilesdk/osx/8.3.0.GA\r\n Target Platform = android\r\n\r\n", "comment": { "comments": [ { "id": "453284", "author": { "name": "nsalahin", "key": "nsalahin", "displayName": "Nazmus Salahin", "active": true, "timeZone": "Asia/Dhaka" }, "body": "Hello,\r\n\r\nThanks for reporting this issue. Can you please share the steps to reproduce the issue? Did you check the issue on your physical device? Also, please share the *appc info* log here.\r\n\r\nThanks", "updateAuthor": { "name": "nsalahin", "key": "nsalahin", "displayName": "Nazmus Salahin", "active": true, "timeZone": "Asia/Dhaka" }, "created": "2019-12-23T01:05:51.000+0000", "updated": "2019-12-23T01:05:51.000+0000" }, { "id": "453462", "author": { "name": "lawrence.wilson@abannan.com", "key": "lawrence.wilson@abannan.com", "displayName": "Lawrence Wilson", "active": true, "timeZone": "Europe/London" }, "body": "Hi Nazmus, \r\n\r\nI've provided the code that is failing in the description - just needs to be put in the alloy.js of any project and run against targetSdkVerisions 28 or 29 - also in the description.\r\nIt also fails on a physical device.\r\nThe appc info is in the Environment details above.\r\nNot sure why you asked for all this as it is all provided.\r\n", "updateAuthor": { "name": "lawrence.wilson@abannan.com", "key": "lawrence.wilson@abannan.com", "displayName": "Lawrence Wilson", "active": true, "timeZone": "Europe/London" }, "created": "2020-01-07T11:09:48.000+0000", "updated": "2020-01-07T11:09:48.000+0000" }, { "id": "453470", "author": { "name": "michael", "key": "michael", "displayName": "Michael Gangolf", "active": true, "timeZone": "Europe/Berlin" }, "body": "Do you have to use that syntax?\r\n\r\n{code}\r\n(function() {\r\n\tconst Activity = require('android.app.Activity');\r\n\tconst FrameLayout = require('android.widget.FrameLayout');\r\n\tconst LayoutParams = require('android.widget.FrameLayout.LayoutParams');\r\n\tconst ViewGroupLayoutParams = require('android.view.ViewGroup.LayoutParams');\r\n\tconst Gravity = require('android.view.Gravity');\r\n\r\n\tconst _activity = new Activity(Ti.Android.currentActivity);\r\n\tconst main = new FrameLayout(_activity);\r\n\tmain.setLayoutParams(new LayoutParams(ViewGroupLayoutParams.MATCH_PARENT, ViewGroupLayoutParams.MATCH_PARENT, Gravity.TOP));\r\n\r\n})();\r\n{code}\r\n\r\nworks fine (like in the hyperloop-example repo) with 28 or 29.", "updateAuthor": { "name": "michael", "key": "michael", "displayName": "Michael Gangolf", "active": true, "timeZone": "Europe/Berlin" }, "created": "2020-01-07T15:30:32.000+0000", "updated": "2020-01-07T15:30:32.000+0000" }, { "id": "453472", "author": { "name": "lawrence.wilson@abannan.com", "key": "lawrence.wilson@abannan.com", "displayName": "Lawrence Wilson", "active": true, "timeZone": "Europe/London" }, "body": "I'm trying to extend it to override the functions - code without any override functions\r\n\r\n{quote}const FrameLayoutView = FrameLayout.extend({});{quote}\r\n\r\nand it is this that is causing the error in 28 or 29", "updateAuthor": { "name": "lawrence.wilson@abannan.com", "key": "lawrence.wilson@abannan.com", "displayName": "Lawrence Wilson", "active": true, "timeZone": "Europe/London" }, "created": "2020-01-07T15:36:10.000+0000", "updated": "2020-01-07T15:36:10.000+0000" }, { "id": "453473", "author": { "name": "michael", "key": "michael", "displayName": "Michael Gangolf", "active": true, "timeZone": "Europe/Berlin" }, "body": "Ah ok, I see. \r\n\r\nMore details about the error:\r\nLooking at the generated {{build/hyperloop/android/js/android.widget.FrameLayout.js}} the line {{var result = subclassProxy.newInstance(arguments)}} is false. So the {{result.setOverrides(modified);}} is crashing. At least that error appears in the last row of the error you've showed above. Perhaps that helps finding the bug\r\n\r\nBTW: the max supported version is 28 ([matrix|https://wiki.appcelerator.org/display/guides2/Titanium+Compatibility+Matrix#TitaniumCompatibilityMatrix-AndroidSDK/TargetAndroidplatform])", "updateAuthor": { "name": "michael", "key": "michael", "displayName": "Michael Gangolf", "active": true, "timeZone": "Europe/Berlin" }, "created": "2020-01-07T16:07:34.000+0000", "updated": "2020-01-07T16:07:34.000+0000" }, { "id": "453734", "author": { "name": "lawrence.wilson@abannan.com", "key": "lawrence.wilson@abannan.com", "displayName": "Lawrence Wilson", "active": true, "timeZone": "Europe/London" }, "body": "On further investigation, I can see that before 8.3.0 release, a change was made to compile with sdk 29 (which is not supported), see history:\r\nhttps://github.com/appcelerator/titanium_mobile/commits/8_3_X/android/package.json\r\n\r\nand from Android 10 (sdk 29) has greylisted internalSetPadding(IIII)V, see this page \r\nhttps://developer.android.com/about/versions/10/non-sdk-q#q-list-changes\r\n\r\nDoes this mean 8.3.0 has been compiled and distributed incorrectly?\r\n\r\n\r\n", "updateAuthor": { "name": "lawrence.wilson@abannan.com", "key": "lawrence.wilson@abannan.com", "displayName": "Lawrence Wilson", "active": true, "timeZone": "Europe/London" }, "created": "2020-01-17T13:10:44.000+0000", "updated": "2020-01-17T13:12:19.000+0000" }, { "id": "454113", "author": { "name": "lawrence.wilson@abannan.com", "key": "lawrence.wilson@abannan.com", "displayName": "Lawrence Wilson", "active": true, "timeZone": "Europe/London" }, "body": "I've tried looking where I can in order to solve this but getting nowhere. \r\n\r\nPlease could somebody from Appcelerator take a look as I need to release the newer version of the app and this is stopping me doing so.\r\n\r\nHere are some more logs prior to the crash:\r\n\r\n{code}\r\n[WARN] : W/dingplanner.ap: Accessing hidden method Landroid/view/ViewGroup;->createSnapshot(Landroid/view/ViewDebug$CanvasProvider;Z)Landroid/graphics/Bitmap; (dark greylist, linking)\r\n[WARN] : W/dingplanner.ap: Accessing hidden method Landroid/view/ViewGroup;->destroyHardwareResources()V (dark greylist, linking)\r\n[WARN] : W/dingplanner.ap: Accessing hidden method Landroid/widget/FrameLayout;->encodeProperties(Landroid/view/ViewHierarchyEncoder;)V (dark greylist, linking)\r\n[WARN] : W/dingplanner.ap: Accessing hidden method Landroid/view/ViewGroup;->internalSetPadding(IIII)V (dark greylist, linking)\r\n[WARN] : W/dingplanner.ap: Accessing hidden method Landroid/view/ViewGroup;->notifySubtreeAccessibilityStateChangedIfNeeded()V (dark greylist, linking)\r\n[WARN] : W/dingplanner.ap: Accessing hidden method Landroid/view/ViewGroup;->createSnapshot(Landroid/view/ViewDebug$CanvasProvider;Z)Landroid/graphics/Bitmap; (dark greylist, linking)\r\n[WARN] : W/dingplanner.ap: Accessing hidden method Landroid/view/ViewGroup;->destroyHardwareResources()V (dark greylist, linking)\r\n[WARN] : W/dingplanner.ap: Accessing hidden method Landroid/widget/FrameLayout;->encodeProperties(Landroid/view/ViewHierarchyEncoder;)V (dark greylist, linking)\r\n[WARN] : W/dingplanner.ap: Accessing hidden method Landroid/view/ViewGroup;->internalSetPadding(IIII)V (dark greylist, linking)\r\n[WARN] : W/dingplanner.ap: Accessing hidden method Landroid/view/ViewGroup;->notifySubtreeAccessibilityStateChangedIfNeeded()V (dark greylist, linking)\r\n[WARN] : W/dingplanner.ap: Accessing hidden method Landroid/view/ViewGroup;->internalSetPadding(IIII)V (dark greylist, linking)\r\n[ERROR] : HyperloopProxy: (main) [2314,26887] Exception during instantiation of class 'android.widget.FrameLayout'\r\n[ERROR] : HyperloopProxy: java.lang.NoSuchMethodError: No super method internalSetPadding(IIII)V in class Landroid/widget/FrameLayout; or its super classes (declaration of 'android.widget.FrameLayout' appears in /system/framework/framework.jar!classes2.dex)\r\n[ERROR] : HyperloopProxy: \tat FrameLayout_Proxy.internalSetPadding(Unknown Source:47)\r\n[ERROR] : HyperloopProxy: \tat android.view.View.(View.java:5558)\r\n[ERROR] : HyperloopProxy: \tat android.view.ViewGroup.(ViewGroup.java:659)\r\n[ERROR] : HyperloopProxy: \tat android.view.ViewGroup.(ViewGroup.java:655)\r\n[ERROR] : HyperloopProxy: \tat android.view.ViewGroup.(ViewGroup.java:651)\r\n[ERROR] : HyperloopProxy: \tat android.view.ViewGroup.(ViewGroup.java:647)\r\n[ERROR] : HyperloopProxy: \tat android.widget.FrameLayout.(FrameLayout.java:78)\r\n[ERROR] : HyperloopProxy: \tat FrameLayout_Proxy.(Unknown Source:0)\r\n[ERROR] : HyperloopProxy: \tat java.lang.reflect.Constructor.newInstance0(Native Method)\r\n[ERROR] : HyperloopProxy: \tat java.lang.reflect.Constructor.newInstance(Constructor.java:343)\r\n[ERROR] : HyperloopProxy: \tat hyperloop.ClassProxy.newInstance(ClassProxy.java:89)\r\n[ERROR] : HyperloopProxy: \tat hyperloop.DynamicSubclassProxy.newInstance(DynamicSubclassProxy.java:30)\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:63)\r\n[ERROR] : HyperloopProxy: \tat org.appcelerator.kroll.KrollProxy.doFireEvent(KrollProxy.java:975)\r\n[ERROR] : HyperloopProxy: \tat org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1204)\r\n[ERROR] : HyperloopProxy: \tat org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:267)\r\n[ERROR] : HyperloopProxy: \tat android.os.Handler.dispatchMessage(Handler.java:102)\r\n[ERROR] : HyperloopProxy: \tat android.os.Looper.loop(Looper.java:193)\r\n[ERROR] : HyperloopProxy: \tat android.app.ActivityThread.main(ActivityThread.java:6669)\r\n[ERROR] : HyperloopProxy: \tat java.lang.reflect.Method.invoke(Native Method)\r\n[ERROR] : HyperloopProxy: \tat com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)\r\n[ERROR] : HyperloopProxy: \tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)\r\n[ERROR] : TiExceptionHandler: (main) [2,26889] /hyperloop/android.widget.FrameLayout.js:99\r\n[ERROR] : TiExceptionHandler: \t\tresult.setOverrides(modified);\r\n[ERROR] : TiExceptionHandler: ^\r\n[ERROR] : TiExceptionHandler: TypeError: result.setOverrides is not a function\r\n[ERROR] : TiExceptionHandler: at new SubClass (/hyperloop/android.widget.FrameLayout.js:99:10)\r\n[ERROR] : TiExceptionHandler: at Object.exports.createScrollView (/ScrollView.js:798:13)\r\n[ERROR] : TiExceptionHandler: at handleFloorPlanChange (/alloy/controllers/planContent.js:441:44)\r\n[ERROR] : TiExceptionHandler: at new Controller (/alloy/controllers/planContent.js:226:3)\r\n[ERROR] : TiExceptionHandler: at Object.exports.createController (/alloy.js:428:10)\r\n[ERROR] : TiExceptionHandler: at expandThumb (/alloy/controllers/base/planthumb.js:231:16)\r\n[ERROR] : TiExceptionHandler: at View.handlePlanTap (/alloy/controllers/base/planthumb.js:202:5)\r\n[ERROR] : TiExceptionHandler: at View.value (ti:/events.js:50:21)\r\n[ERROR] : TiExceptionHandler: at View.value (ti:/events.js:102:19)\r\n[ERROR] : TiExceptionHandler:\r\n[ERROR] : TiExceptionHandler: org.appcelerator.kroll.runtime.v8.V8Object.nativeFireEvent(Native Method)\r\n[ERROR] : TiExceptionHandler: org.appcelerator.kroll.runtime.v8.V8Object.fireEvent(V8Object.java:63)\r\n[ERROR] : TiExceptionHandler: org.appcelerator.kroll.KrollProxy.doFireEvent(KrollProxy.java:975)\r\n[ERROR] : TiExceptionHandler: org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1204)\r\n[ERROR] : TiExceptionHandler: org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:267)\r\n[ERROR] : TiExceptionHandler: android.os.Handler.dispatchMessage(Handler.java:102)\r\n[ERROR] : TiExceptionHandler: android.os.Looper.loop(Looper.java:193)\r\n[ERROR] : TiExceptionHandler: android.app.ActivityThread.main(ActivityThread.java:6669)\r\n[ERROR] : TiExceptionHandler: java.lang.reflect.Method.invoke(Native Method)\r\n[ERROR] : TiExceptionHandler: com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)\r\n[ERROR] : V8Exception: Exception occurred at /hyperloop/android.widget.FrameLayout.js:99: Uncaught TypeError: result.setOverrides is not a function\r\n{code}", "updateAuthor": { "name": "topener", "key": "topener", "displayName": "Rene Pot", "active": true, "timeZone": "Europe/Berlin" }, "created": "2020-02-07T11:32:30.000+0000", "updated": "2020-02-07T12:03:22.000+0000" }, { "id": "454135", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Titanium 8.3.0 and higher *+does+* support targeting API Level 29 (aka: Android Q; aka: Android 10).\r\nThe docs [here|https://wiki.appcelerator.org/display/guides2/Titanium+Compatibility+Matrix#TitaniumCompatibilityMatrix-AndroidSDK/TargetAndroidplatform] are out-of-date (or we lost the doc change). We'll update it in the near future.\r\n\r\nWhen building with Titanium 8.3.0.GA or higher, you need to set the \"targetSdkVersion\" to 29 (which is the default if you don't set it). This will solve the problem when running on Android Q. If you target 28, then yes it will crash on Android Q.\r\n\r\nThe reason is because targeting API Level 28 tells hyperloop to fetch all public APIs from the Android O library, which includes the blacklisted public/protected APIs (they're still available via reflection). When targeting API Level 29, hyperloop fetches all public/protected APIs from the Android Q library where the blacklisted APIs are no longer available (which is what you want).\r\n\r\nI also know that hyperloop caches the public APIs found in Google's Android libraries. If you think you're running into a caching issue, then delete your project's \"build\" directory. I didn't run into any caching issues when switching API Level targets (it always re-loaded the APIs), but that's the only other possible issue that I can think of.\r\n\r\nI hope this helps!", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-02-08T03:19:07.000+0000", "updated": "2020-02-08T03:19:07.000+0000" } ], "maxResults": 9, "total": 9, "startAt": 0 } } }