{ "id": "174098", "key": "AC-6357", "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": { "id": "7", "description": "", "name": "Invalid" }, "resolutiondate": "2019-10-03T16:36:53.000+0000", "created": "2019-09-05T08:21:32.000+0000", "labels": [ "64bit", "android", "playstore" ], "versions": [ { "id": "17038", "name": "Appcelerator Studio 4.5.0", "archived": false, "released": false } ], "issuelinks": [], "assignee": { "name": "shossain", "key": "shossain", "displayName": "Shak Hossain", "active": false, "timeZone": "America/Los_Angeles" }, "updated": "2019-12-12T15:29:48.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": "14548", "name": "Titanium SDK & CLI", "description": "Please enter tickets related to the MobileSDK here." } ], "description": "Not able to upload Titanium App to Google play any more... \r\nI'm using sdk 8.1.1..\r\nFirst i thought it was my modules that was the problem, but efter removing all modules, I stille get the following error when I upload to Google Play, see atached file.\r\nI know google upped the requirements last month.\r\nCan anyone verify that Appcelerator can upload apps to Google play?\r\nAny advice to what I might do wrong? \r\n\r\nI tried opening the APK in Googles APK Analyzer and verified that it contained lib/arm64-v8a folder with all *.so files \r\n\r\n\r\n/Thanks", "attachment": [ { "id": "66918", "filename": "image002.png", "author": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "created": "2019-09-05T08:18:04.000+0000", "size": 61346, "mimeType": "image/png" }, { "id": "66925", "filename": "PastedGraphic-1.png", "author": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "created": "2019-09-06T06:19:28.000+0000", "size": 73430, "mimeType": "image/png" } ], "flagged": false, "summary": "Error: This release is not compliant with the Google Play 64-bit requirement", "creator": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "subtasks": [], "reporter": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "environment": null, "comment": { "comments": [ { "id": "451133", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "It sounds like \"x86\" .so libraries are being bundled into your app.\r\n\r\nBy default, Titanium \"production\" built apps only include the \"armeabi-v7a\" and \"arm64-v8a\" architectures only, which are 32-bit and 64-bit respectively. Titanium \"production\" builds do not include \"x86\" by default... unless you've modified your \"tiapp.xml\" to include it.\r\n\r\nCheck your \"tiapp.xml\" file. Do you have the following {{}} element defined? If so, the \"x86\" part is the cause of the issue. My recommendation is to completely *+remove+* the {{}} element from your \"tiapp.xml\" and let Titanium do the default handling mentioned above.\r\n{code:xml}\r\n\r\n\r\n\t\r\n\t\tarmeabi-v7a,arm64-v8a,x86\r\n\t\r\n\r\n{code}\r\n", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-09-05T18:34:39.000+0000", "updated": "2019-09-05T18:34:51.000+0000" }, { "id": "451142", "author": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "body": "Hi Joshua\r\nMy APK does not include the x86 Library and my tiapp.xml does not include the Tag\r\nIs there anything Else I can check?\r\n\r\n/Chers ", "updateAuthor": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "created": "2019-09-05T21:10:11.000+0000", "updated": "2019-09-05T21:10:11.000+0000" }, { "id": "451143", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "When you unzip your APK file, check that you have the folders within it:\r\n{{./lib/arm64-v8a}}\r\n{{./lib/armeabi-v7a}}\r\n\r\nIf you have any other folders under \"lib\" such as \"x86\", then that's the cause of the problem.\r\n\r\nNote that you can easily unzip your APK file by changing its extension to .zip and then double clicking it. An APK is really just a zip file.", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-09-05T21:17:56.000+0000", "updated": "2019-09-05T21:17:56.000+0000" }, { "id": "451144", "author": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "body": "My lib folder looks exactly like that, no other subfolders.", "updateAuthor": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "created": "2019-09-05T21:23:15.000+0000", "updated": "2019-09-05T21:23:15.000+0000" }, { "id": "451145", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "And do both folders contain the same files?", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-09-05T21:42:42.000+0000", "updated": "2019-09-05T21:42:42.000+0000" }, { "id": "451155", "author": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "body": "Yes both contains the same files... \r\nI attached an image from Android APK Analyser\r\n !PastedGraphic-1.png|thumbnail! \r\nIs there any other information I can provide?", "updateAuthor": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "created": "2019-09-06T06:14:43.000+0000", "updated": "2019-09-06T06:22:04.000+0000" }, { "id": "451354", "author": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "body": "I'm getting a little desperate here... \r\nCan anyone verify that Appcelerator Studio can upload apps to Google play after Google upped their requirements in August?", "updateAuthor": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "created": "2019-09-13T11:13:14.000+0000", "updated": "2019-09-13T11:13:14.000+0000" }, { "id": "451476", "author": { "name": "john.staunton", "key": "john.staunton", "displayName": "John Staunton", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Yes, I've managed to upload an app since the requirements change. Dropped the abi tag and it worked. Unfortunately, I have one user who uses an x86 machine and the app crashes on launch for him if I don't specify the abi. So now I've to build a separate non-Play store version for him every time I update...", "updateAuthor": { "name": "john.staunton", "key": "john.staunton", "displayName": "John Staunton", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-09-18T16:59:15.000+0000", "updated": "2019-09-18T16:59:15.000+0000" }, { "id": "451478", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Sorry about the late response.\r\n\r\nWe built an APK with Titanium 8.2.0 and uploaded to Google Play in the past week to re-test it (in case anything has changed on Google's end). It uploaded fine. There was no error. And I know this is working for other Titanium app devs too (the whole community would be in an uproar if there were any 64-bit problems).\r\n\r\nSo, I'm not sure why you're having this problem and no one else is. Your unzipped APK \"looks\" fine.\r\nWould you mind sharing your \"tiapp.xml\" file?", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-09-18T17:56:50.000+0000", "updated": "2019-09-18T17:56:50.000+0000" }, { "id": "451484", "author": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "body": "This is how my tiapp.xml looked like before I removed all modules.\r\nI can't upload with or without mu modules..\r\nHope this helps. If more info is required ... just let me know... \r\n \r\n\r\n\r\n\r\n\tdk.eg.mobile.crosspad\r\n\tEgcrosspad\r\n\t1.8.06\r\n\tEG A/S\r\n\thttp://www.eg.dk\r\n\tundefined\r\n\t2019 by EG A/S\r\n\tappicon.png\r\n\tfalse\r\n\ttrue\r\n\tfalse\r\n\t\r\n\t20190904-0900\r\n\ttrue\r\n\tdp\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tinhousebuild\r\n\t\t\t\t20190904-0900\r\n\t\t\t\tUISupportedInterfaceOrientations~iphone\r\n\t\t\t\t\r\n\t\t\t\t\tUIInterfaceOrientationPortrait\r\n\t\t\t\t\r\n\t\t\t\tUISupportedInterfaceOrientations~ipad\r\n\t\t\t\t\r\n\t\t\t\t\tUIInterfaceOrientationLandscapeLeft\r\n\t\t\t\t\tUIInterfaceOrientationLandscapeRight\r\n\t\t\t\t\r\n\t\t\t\tUISupportedExternalAccessoryProtocols\r\n\t\t\t\t\r\n\t\t\t\t\tcom.datecs.linea.pro.msr\r\n\t\t\t\t\tcom.datecs.linea.pro.bar\r\n\t\t\t\t\r\n\t\t\t\tUIRequiresPersistentWiFi\r\n\t\t\t\t\r\n\t\t\t\tUIPrerenderedIcon\r\n\t\t\t\t\r\n\t\t\t\tUIStatusBarHidden\r\n\t\t\t\t\r\n\t\t\t\tUIStatusBarStyle\r\n\t\t\t\tUIStatusBarStyleDefault\r\n\t\t\t\t\r\n\t\t\t\tUIBackgroundModes\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\tremote-notification\r\n\t\t\t\t\tfetch\r\n\t\t\t\t\texternal-accessory\r\n\t\t\t\t\r\n\t\t\t\tNSFaceIDUsageDescription\r\n\t\t\t\tTo provide smooth login experience\r\n\t\t\t\tNSLocationAlwaysUsageDescription\r\n\t\t\t\tTo provide you with services based on your location\r\n\t\t\t\tNSLocationWhenInUseUsageDescription\r\n\t\t\t\tTo provide you with services based on your location\r\n\t\t\t\tNSContactsUsageDescription\r\n\t\t\t\tTo use details about your contact where it is relevant\r\n\t\t\t\tNSCameraUsageDescription\r\n\t\t\t\tTo provide you with the ability to take photos and camera based barcode scanning\r\n\t\t\t\tNSCalendarsUsageDescription\r\n\t\t\t\tTo provide you with services based on your calendar\r\n\t\t\t\tNSPhotoLibraryUsageDescription\r\n\t\t\t\tTo use your photos where it is relevant\r\n\t\t\t\tNSMicrophoneUsageDescription\r\n\t\t\t\tTo provide you with the ability to make soundrecordings and voice control\r\n\t\t\t\tNSAppleMusicUsageDescription\r\n\t\t\t\tTo break the silence\r\n\t\t\t\tCFBundleURLTypes\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tCFBundleURLName\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tdk.eg.mobile.crosspad\r\n\t\t\t\t\t\tCFBundleURLSchemes\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tegcrosspad\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\tti.cloud\r\n\t\tti.map\r\n\t\tti.map\r\n\t\tti.touchid\r\n\t\tti.cloudpush\r\n\t\tti.cloudpush\r\n\t\tti.touchid\r\n\t\tcom.mirasense.scanditsdk\r\n\t\tcom.mirasense.scanditsdk\r\n\t\tdk.eg.crosspad.linea.scanner\r\n\t\tti.paint\r\n\t\tti.paint\r\n\t\tti.imagefactory\r\n\t\tti.imagefactory\r\n\t\tcom.omorandi\r\n\t\tbencoding.android.tools\r\n\t\tti.draggable\r\n\t\r\n\t\r\n\t\ttrue\r\n\t\ttrue\r\n\t\ttrue\r\n\t\r\n\t8.1.1.GA\r\n\t\r\n\t\tti.alloy\r\n\t\r\n\t\r\n\thttps://secure-identity.cloud.appcelerator.com\r\n\thttps://api.cloud.appcelerator.com\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\thttps://secure-identity.cloud.appcelerator.com\r\n\thttps://api.cloud.appcelerator.com\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n", "updateAuthor": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "created": "2019-09-18T21:12:55.000+0000", "updated": "2019-09-18T21:19:43.000+0000" }, { "id": "451777", "author": { "name": "patakijv", "key": "patakijv", "displayName": "John V Pataki", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I'm curious if there was any new findings for this issue.\r\n\r\nThis issue has stopped our update of an existing app as well that has always been built to include both 64bit (arm64-v8a) and 32bit (armeabi-v7a) libraries since long ago when that was originally introduced as a requirement in Titanium. From initial researching online, something changed in late August in terms of Google Play's review process and now this error message is shown where it wasn't before. We've tried upgrading Ti SDK to 8.2.0.GA and bumping minimum Android version to API 28 and still get the error message. Inspecting the APK for 64bit libraries using this method https://developer.android.com/distribute/best-practices/develop/64-bit#apk-analyzer does show a copy of each library the app uses in each of the two folders arm64-v8a and armeabi-v7a. \r\n\r\n\r\nIs there a way to force Titanium to ONLY build with 64bit libraries and not include any 32bit at all (mainly to test a theory that it is the 32bit libraries that are causing this error)?\r\n\r\nThe text of the error message in Google Play is\r\n{noformat}\r\nError\r\nThis release is not compliant with the Google Play 64-bit requirement\r\n\r\nThe following APKs or App Bundles are available to 64-bit devices, but they only have 32-bit native code: 11.\r\n\r\nInclude 64-bit and 32-bit native code in your app. Use the Android App Bundle publishing format to automatically ensure that each device architecture receives only the native code it needs. This avoids increasing the overall size of your app. Learn More\r\n{noformat}\r\n", "updateAuthor": { "name": "patakijv", "key": "patakijv", "displayName": "John V Pataki", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-10-02T20:09:50.000+0000", "updated": "2019-10-02T20:09:50.000+0000" }, { "id": "451778", "author": { "name": "patakijv", "key": "patakijv", "displayName": "John V Pataki", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Ah ha - I think I just figured it out.\r\n\r\nI noticed the difference between the error message I posted in my comment above and the error message from the original poster and it was the number at the end of the this line:\r\n\r\n{noformat}\r\nThe following APKs or App Bundles are available to 64-bit devices, but they only have 32-bit native code: 11.\r\n{noformat}\r\n\r\nThat number I just figured out is referring to an old version of an APK (before we switched to 64bit) that was \"retained\" for the app even though it wasn't the main APK ... and Google Play's review process was throwing the error for that APK version only. I had no idea that was even a version code number from their clumsily worded error message until I noticed that the original poster's message had a different number. I had thought it was an error code number actually to be used in referencing the error.\r\n\r\nSo, I returned to the app release configuration and \"deactivated\" that particular APK (version code 11 in this case) for the app and re-ran the \"Review\" process and now that error message is gone!\r\n\r\nI hope this helps someone else.", "updateAuthor": { "name": "patakijv", "key": "patakijv", "displayName": "John V Pataki", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-10-02T20:17:11.000+0000", "updated": "2019-10-02T22:36:44.000+0000" }, { "id": "451794", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Oh interesting...\r\n\r\nSo, just to be clear, Google Play was complaining about a previously uploaded APK?\r\nThe APK you are currently uploading is passing fine, right?", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-10-03T00:45:49.000+0000", "updated": "2019-10-03T00:45:49.000+0000" }, { "id": "451795", "author": { "name": "patakijv", "key": "patakijv", "displayName": "John V Pataki", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Yes - sort of, not just that it was previously \"uploaded\", but specifically \"retained\". Google Play has this ability to \"retain\" older APK files for an app, I guess so that devices that can't use the newer one still have something to download that is compatible. \r\n\r\nThis section on the app release setup\r\n\r\n\r\n{noformat}\r\nAndroid App Bundles and APKs to retain\r\n\r\nThese app bundles and APKs from your previous release will continue to be served in the Google Play Store.\r\n{noformat}\r\n\r\nBut something apparently changed with Google's 32bit acceptance, per their timeline referred to on this page https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html so even an older APK \"retained\" for older use purpose, must now also be 64bit.\r\n\r\nSo once I \"disabled\" the previously \"retained\" APK and there was only the most recent APK, the error went away.", "updateAuthor": { "name": "patakijv", "key": "patakijv", "displayName": "John V Pataki", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-10-03T01:46:57.000+0000", "updated": "2019-10-03T01:56:56.000+0000" }, { "id": "451822", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Got it. Thanks for the info. I'm glad it's resolved.", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-10-03T16:36:42.000+0000", "updated": "2019-10-03T16:36:42.000+0000" }, { "id": "451824", "author": { "name": "patakijv", "key": "patakijv", "displayName": "John V Pataki", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~jquick] To be clear, I am not the original author of the issue, so might want to confirm if my resolution solves it for [~thomas.neerup@eg.dk] as well.", "updateAuthor": { "name": "patakijv", "key": "patakijv", "displayName": "John V Pataki", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-10-03T17:01:55.000+0000", "updated": "2019-10-03T17:01:55.000+0000" }, { "id": "451826", "author": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "body": "This is Greatest news.\nProblem Solvej. \n Thank you...", "updateAuthor": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "created": "2019-10-03T17:11:57.000+0000", "updated": "2019-10-03T17:11:57.000+0000" }, { "id": "453168", "author": { "name": "chmiiller", "key": "chmiiller", "displayName": "Carlos Henrique Zinato", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I had the same today and @John V Pataki solution was exactly what I needed. I had this app on stores for 5 years and a very old APK with the error message, in my case, number 4. Thanks for figuring it out and I hope that other people with the same problem see this message =)", "updateAuthor": { "name": "chmiiller", "key": "chmiiller", "displayName": "Carlos Henrique Zinato", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-12-12T15:29:48.000+0000", "updated": "2019-12-12T15:29:48.000+0000" } ], "maxResults": 18, "total": 18, "startAt": 0 } } }