{ "id": "173973", "key": "TIMOB-27304", "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": [ { "id": "20845", "name": "Release 8.1.1", "archived": false, "released": true, "releaseDate": "2019-08-29" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2019-08-21T11:36:11.000+0000", "created": "2019-08-02T21:18:16.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [ "android", "engSchedule", "manifest", "modules", "xml" ], "versions": [], "issuelinks": [ { "id": "57798", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "173967", "key": "AC-6328", "fields": { "summary": "Cannot set required false to uses-feature in SDK 8", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } } ], "assignee": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2019-08-30T07:19:30.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": "*Summary:*\r\nThe \"AndroidManifest.xml\" file's {{}} \"android:required\" attribute value can be set to {{true}} or {{false}}. When multiple manifests declare the same {{}}, the merge process must do a logical OR of these values. This means that if one of the manifest files sets it to {{true}}, it can be made {{false}} at the end of the XML merge. (The {{true}} setting wins.)\r\nhttps://developer.android.com/studio/build/manifest-merge\r\n\r\nWhen the Titanium build merges \"timodule.xml\" and \"tiapp.xml\" settings, it does not \"OR\" the \"android:required\" values. Instead the original \"timodule.xml\" value always wins. This means if the \"timodule.xml\" sets it {{false}}, the \"tiapp.xml\" is never able to set it {{true}}. (The reverse is not an issue though.)\r\n\r\n*Note:*\r\nThe behavior of the XML merge has changed as of Titanium 8.0.2. Before 8.0.2, the \"tiapp.xml\" manifest settings used to blindly overwrite the \"timodule.xml\" manifest settings, which was not technically correct but did allow the \"tiapp.xml\" to override {{}} to {{true}} or {{false}} (it still wasn't {{OR}}ing the values though). Titanium 8.0.2 improved the merge to better follow Google's merging rules, but it is not {{OR}}ing the values which is what's needed.\r\n\r\n*Steps to reproduce:*\r\n# Create a Classic Titanium app project.\r\n# Add modules \"ti.barcode\" to \"tiapp.xml\". (Can download from [here|https://github.com/appcelerator-modules/ti.barcode].)\r\n# Add the {{}} settings in \"tiapp.xml\" as shown below.\r\n# Build for Android.\r\n# Open Mac's \"Finder\" window. (Or \"Windows Explorer\" on Windows.)\r\n# Go to project subdirectory: {{./build/android}}\r\n# Open file \"AndroidManifest.xml\".\r\n# Observe its {{}} XML elements.\r\n\r\n{code:xml}\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\tti.barcode\r\n\t\r\n\r\n{code}\r\n\r\n*Result:*\r\nThe merged \"AndroidManifest.xml\" file's {{}} for \"android.hardware.touchscreen\" is {{false}} when it should be {{true}}.\r\n\r\n*Expected Result:*\r\nThe {{}} for \"android.hardware.touchscreen\" should be {{true}}, not {{false}}. The values need to be {{OR}}'ed together.\r\n", "attachment": [], "flagged": false, "summary": "Android: Setting required \"true\" in \"tiapp.xml\" should override \"false\" setting in libraries", "creator": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 1160, "state": "closed", "name": "2019 Sprint 17", "startDate": "2019-08-12T07:59:28.950Z", "endDate": "2019-08-25T07:59:00.000Z", "completeDate": "2019-08-26T15:35:29.980Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "450250", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR (master): https://github.com/appcelerator/titanium_mobile/pull/11110\r\nPR (8.1.x): https://github.com/appcelerator/titanium_mobile/pull/11111\r\n", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-08-03T01:19:43.000+0000", "updated": "2019-08-03T01:19:43.000+0000" }, { "id": "450285", "author": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "body": "FR passed. Correct value of elements in manifest file based on OR(ing) of values from all the involved xml files.\r\nWaiting for the merge of PR's", "updateAuthor": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-08-05T23:24:30.000+0000", "updated": "2019-08-05T23:24:30.000+0000" }, { "id": "450470", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR (8.3.x): https://github.com/appcelerator/titanium_mobile/pull/11146", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-08-14T02:03:51.000+0000", "updated": "2019-08-14T02:03:51.000+0000" }, { "id": "450486", "author": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "body": "FR Passed. Waiting on Jenkins build to pass.", "updateAuthor": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-08-14T18:25:50.000+0000", "updated": "2019-08-14T18:25:50.000+0000" }, { "id": "450627", "author": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "body": "Merged to master, 8_3_X and 8_1_X", "updateAuthor": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "created": "2019-08-20T17:06:00.000+0000", "updated": "2019-08-20T17:06:00.000+0000" }, { "id": "450664", "author": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "body": "*Closing ticket* fix verified in SDK version {{8.2.0.v20190820104021}}, {{8.1.1.v20190820143437}} and {{8.3.0.v20190820103430}}.\r\n\r\nTest and other information can be found at:\r\nPR (master): https://github.com/appcelerator/titanium_mobile/pull/11110\r\nPR (8.1.x): https://github.com/appcelerator/titanium_mobile/pull/11111\r\nPR (8.3.x): https://github.com/appcelerator/titanium_mobile/pull/11146", "updateAuthor": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-08-21T11:36:06.000+0000", "updated": "2019-08-21T11:36:06.000+0000" }, { "id": "450980", "author": { "name": "Pietro", "key": "pietro", "displayName": "Pietro Granati", "active": true, "timeZone": "Europe/Rome" }, "body": "Thank you for resolving this!", "updateAuthor": { "name": "Pietro", "key": "pietro", "displayName": "Pietro Granati", "active": true, "timeZone": "Europe/Rome" }, "created": "2019-08-30T07:19:30.000+0000", "updated": "2019-08-30T07:19:30.000+0000" } ], "maxResults": 7, "total": 7, "startAt": 0 } } }