{ "id": "124202", "key": "TIMOB-16088", "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": "15719", "description": "2013 Sprint 26", "name": "2013 Sprint 26", "archived": true, "released": true, "releaseDate": "2014-01-03" }, { "id": "15721", "description": "2013 Sprint 26 Core", "name": "2013 Sprint 26 Core", "archived": true, "released": true, "releaseDate": "2014-01-03" }, { "id": "15856", "description": "Release 3.2.1", "name": "Release 3.2.1", "archived": false, "released": true, "releaseDate": "2014-02-10" }, { "id": "15422", "description": "Release 3.3.0", "name": "Release 3.3.0", "archived": false, "released": true, "releaseDate": "2014-07-16" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2014-01-03T19:38:42.000+0000", "created": "2013-12-26T21:29:45.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [ "module_build", "qe-testadded" ], "versions": [ { "id": "14982", "description": "Release 3.2.0", "name": "Release 3.2.0", "archived": false, "released": true, "releaseDate": "2013-12-19" } ], "issuelinks": [], "assignee": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "updated": "2014-03-07T01:44:06.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" } ], "attachment": [], "flagged": false, "summary": "Android: Remove lines from Android manifest that are autogenerated", "creator": { "name": "rtlechuga", "key": "rtlechuga", "displayName": "Radamantis Torres-Lechuga", "active": false, "timeZone": "Asia/Dubai" }, "subtasks": [], "reporter": { "name": "rtlechuga", "key": "rtlechuga", "displayName": "Radamantis Torres-Lechuga", "active": false, "timeZone": "Asia/Dubai" }, "environment": "SDK: 3.2.0\r\nAndroid version: 4.1", "comment": { "comments": [ { "id": "285895", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I'm not 100% sure what you mean by new functionality described in TIMOB-15981. You just want to remove those lines from the auto generated manifest, yes?", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-12-26T21:32:24.000+0000", "updated": "2013-12-26T21:32:24.000+0000" }, { "id": "285897", "author": { "name": "rtlechuga", "key": "rtlechuga", "displayName": "Radamantis Torres-Lechuga", "active": false, "timeZone": "Asia/Dubai" }, "body": "Yes, if the customer remove those lines from the custom Android Manifest, somehow, after build the project the lines are there again", "updateAuthor": { "name": "rtlechuga", "key": "rtlechuga", "displayName": "Radamantis Torres-Lechuga", "active": false, "timeZone": "Asia/Dubai" }, "created": "2013-12-26T21:37:37.000+0000", "updated": "2013-12-26T21:37:37.000+0000" }, { "id": "286045", "author": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Added a config to disable the auto-merging behavior called 'android.skipCustomManifestMerge'. To test:\n\n1. On the command, set the property to true: 'ti config android.skipCustomManifestMerge true'\n2. Create a project with a custom manifest inside platform/android\n3. Build the project\n4. Verify that the android manifest inside the build directory is the exact same as the custom manifest\n\nMaster PR: https://github.com/appcelerator/titanium_mobile/pull/5169\n3_2_X PR: https://github.com/appcelerator/titanium_mobile/pull/5170\n", "updateAuthor": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-12-28T01:07:57.000+0000", "updated": "2013-12-28T01:07:57.000+0000" }, { "id": "286056", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "WRITE_EXTERNAL_STORAGE is apart of the required permissions. This has been the default behavior for nearly 4 years. Maybe these required permissions are handled differently in Titanium 3.1 and older when a custom AndroidManifest.xml is present?\n\nAs far as the \"org.appcelerator.titanium.analytics.TiAnalyticsService\" service, it is trivial to detect if analytics is enabled and if not, don't add that line. That is a bug.\n\nI don't see why adding a \"android.skipCustomManifestMerge\" is the correct way to solve this.\n\nI propose we close PR 5169 and 5170 and properly fix the bug with the TiAnalyticsService being added when analytics is not enabled.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2013-12-28T03:51:52.000+0000", "updated": "2013-12-28T03:51:52.000+0000" }, { "id": "286058", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Could you add an attribute into the manifest XML indicating this section is not to be altered?", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-12-28T04:10:05.000+0000", "updated": "2013-12-28T04:10:05.000+0000" }, { "id": "286061", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "To fix this ticket, here's what we're going to do:\n\n1. Only add the TiAnalyticsService to the AndroidManifest.xml if and only if analytics are enabled in the tiapp.xml\n\n2. Only add the WRITE_EXTERNAL_STORAGE permission to the AndroidManifest.xml if and only if the deploy type is development OR debugging is enabled\n\n3. Create a CLI plugin hook when the AndroidManifest.xml is being assembled that allows a plugin to modify the AndroidManifest XML DOM after the merging has occurred and before the file is written. It will be possible for a plugin to force the custom AndroidManifest.xml without any of the merged settings from the default AndroidManifest.xml or tiapp.xml.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2013-12-28T04:49:05.000+0000", "updated": "2013-12-28T04:49:05.000+0000" }, { "id": "286227", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "Master pull request: https://github.com/appcelerator/titanium_mobile/pull/5172\n3.2.x pull request: https://github.com/appcelerator/titanium_mobile/pull/5173", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2013-12-30T06:24:12.000+0000", "updated": "2013-12-30T06:24:12.000+0000" }, { "id": "286611", "author": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "body": "To test:\n\n1. Create a project with a custom manifest inside platform/android (make sure you omit the tag).\n2. Build the app, and verify that the tag mentioned above does not exist in the android manifest under the build directory.\n3. Type 'ti config android.mergeCustomAndroidManifest true' to enable manifest merging\n4. Clean and build the project again\n5. Verify that the external storage tag exists in the android manifest under the build directory.", "updateAuthor": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-01-03T19:29:20.000+0000", "updated": "2014-01-03T19:29:20.000+0000" }, { "id": "286640", "author": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Follow up PR Master: https://github.com/appcelerator/titanium_mobile/pull/5185\n3_2_X: https://github.com/appcelerator/titanium_mobile/pull/5186", "updateAuthor": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-01-03T23:11:44.000+0000", "updated": "2014-01-03T23:11:44.000+0000" }, { "id": "286923", "author": { "name": "pagarwal", "key": "pagarwal", "displayName": "Priya Agarwal", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Observations:\n\nSteps followed as mentioned above:\n1. Create a project with a custom manifest inside platform/android (make sure you omit the tag). \n2. Build the app, and verify that the tag mentioned above does not exist in the android manifest under the build directory.\n
3. Type 'ti config android.mergeCustomAndroidManifest true' to enable manifest merging
\n4. Clean and build the project again\n
5. Verify that the external storage tag exists in the android manifest under the build directory.\n\nTest Environment:\n\nAppc-Studio: 3.2.1.201401061716\nacs:1.0.11\nalloy:1.3.1-beta\nnpm:1.3.2\ntitanium:3.2.0\ntitanium-code-processor:1.1.0\nOSX: Maverick 10.9\n\nusing both sdk build:3.2.1.v20140106195644 and 3.3.0.v20140106195650\nwith\nti config android.mergeCustomAndroidManifest true\nAbove omitted lines gets merged with android manifest under the build directory.\n\nand with\n\nti config android.mergeCustomAndroidManifest false\nAbove omitted lines does not gets merged with android manifest under the build directory.\n", "updateAuthor": { "name": "pagarwal", "key": "pagarwal", "displayName": "Priya Agarwal", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-01-07T09:16:24.000+0000", "updated": "2014-01-07T09:16:24.000+0000" }, { "id": "287358", "author": { "name": "wluu", "key": "wluu", "displayName": "Wilson Luu", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as fixed. While following Allen's test steps and created a custom AndroidManifest.xml file that did not have these tags:\n{code:xml}\n\n\n{code}\n\nverified the following:\n\n1. After building app to an Android device, verified the above tags do not appear in /build/android/AndroidManifest.xml\n2. With *ti config android.mergeCustomAndroidManifest true*, verified TiAnalyticsService tag and WRITE_EXTERNAL_STORAGE tag appear in /build/android/AndroidManifest.xml\n3. With *ti config android.mergeCustomAndroidManifest false*, verified TiAnalyticsService tag and WRITE_EXTERNAL_STORAGE tag *do not* appear in /build/android/AndroidManifest.xml\n\n*Also*, verified if analytics is set to false in the tiapp.xml (e.g. false), TiAnalyticsService tag does not appear in /build/android/AndroidManifest.xml\n\nTested on:\n\nAppcelerator Studio, build: 3.2.1.201401071645\nSDK build: 3.2.1.v20140106195644, 3.3.0.v20140106195650\nCLI: 3.2.1-beta\nAlloy: 1.3.1-beta2\nDevice: Droid 3 (2.3.4), Samsung Galaxy S4 (4.2.2)", "updateAuthor": { "name": "wluu", "key": "wluu", "displayName": "Wilson Luu", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2014-01-09T02:12:14.000+0000", "updated": "2014-01-09T02:12:14.000+0000" } ], "maxResults": 15, "total": 15, "startAt": 0 } } }