{ "id": "133458", "key": "TIMOB-17350", "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": "16586", "description": "Release 3.4.2", "name": "Release 3.4.2", "archived": false, "released": true, "releaseDate": "2017-03-11" }, { "id": "16704", "description": "Release 3.5.0", "name": "Release 3.5.0", "archived": false, "released": true, "releaseDate": "2015-01-13" }, { "id": "16593", "description": "Release 4.0.0", "name": "Release 4.0.0", "archived": false, "released": true, "releaseDate": "2015-05-21" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2014-10-14T22:08:50.000+0000", "created": "2014-07-21T16:18:41.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "module_analytics" ], "versions": [ { "id": "15422", "description": "Release 3.3.0", "name": "Release 3.3.0", "archived": false, "released": true, "releaseDate": "2014-07-16" } ], "issuelinks": [], "assignee": { "name": "penrique", "key": "penrique", "displayName": "Pedro Enrique", "active": false, "timeZone": "America/Los_Angeles" }, "updated": "2014-12-02T00:18:59.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": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "h6.Issue description\r\n\r\nThe developer's app includes a Ti module that wraps a 3rd-party library that uses the iOS Reachability class. It appears that APSAnalytics also uses the iOS Reachability class. Both the 3rd-party library and the APS system include this class in their respective libraries causing a duplicate symbol error during linking. \r\n\r\nBelow is the error I get when manually building the app:\r\n{code}\r\n[TRACE] duplicate symbol _kReachabilityChangedNotification in: \r\n[TRACE] /Users/gary.fong/development/mfoundry/nextgen/trunk/tistudio/nextgen/MB-Next-Gen-Phone/build/iphone/Classes/APSAnalytics/libAPSAnalytics.a(APSReachability.o) \r\n[TRACE] /Users/gary.fong/development/mfoundry/nextgen/trunk/tistudio/nextgen/MB-Next-Gen-Phone/modules/iphone/com.mf.paydiant.sdk/1.0/libcom.mf.paydiant.sdk.a(Reachability.o) \r\n[TRACE] ld: 2 duplicate symbols for architecture armv7 \r\n[TRACE] clang: error: linker command failed with exit code 1 (use -v to see invocation) \r\n{code}", "attachment": [ { "id": "51050", "filename": "libAPSAnalytics.a", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-09-08T20:41:14.000+0000", "size": 1831812, "mimeType": "application/octet-stream" } ], "flagged": false, "summary": "iOS: Duplicate symbol linker error when using APS libAPSAnalytics.a", "creator": { "name": "egomez", "key": "egomez", "displayName": "Eduardo Gomez", "active": false, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "egomez", "key": "egomez", "displayName": "Eduardo Gomez", "active": false, "timeZone": "America/Los_Angeles" }, "environment": "iOS 7", "closedSprints": [ { "id": 230, "state": "closed", "name": "2014 Sprint 21 SDK", "startDate": "2014-10-13T22:00:57.270Z", "endDate": "2014-10-25T00:00:00.000Z", "completeDate": "2014-10-27T16:33:06.432Z", "originBoardId": 114 }, { "id": 220, "state": "closed", "name": "2014 Sprint 20 SDK", "startDate": "2014-09-29T22:32:25.224Z", "endDate": "2014-10-13T18:25:00.000Z", "completeDate": "2014-10-13T18:25:45.560Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "315036", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I'm unclear on what's going on here.\r\n\r\nAre they using Titanium or the APS SDK? The APS SDK is not intended for use with a Titanium application. However, parts of APS are shared between the APS SDK and Titanium.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-07-21T16:22:42.000+0000", "updated": "2014-07-21T16:22:42.000+0000" }, { "id": "315048", "author": { "name": "mcota", "key": "mcota", "displayName": "Marco Cota", "active": false, "timeZone": "America/Los_Angeles" }, "body": "[~ingo] the issue is that customer is using a 3rd party library that uses the iOS Reachability class and when they try to build the app using the Ti SDK 3.3.0.GA they receive this linker error as it appears that one of our SDK classes (APSAnalytics/libAPSAnalytics.a) extends the same Reachability class.", "updateAuthor": { "name": "mcota", "key": "mcota", "displayName": "Marco Cota", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2014-07-21T16:38:13.000+0000", "updated": "2014-07-21T16:38:13.000+0000" }, { "id": "315060", "author": { "name": "srahim", "key": "srahim", "displayName": "Sabil Rahim", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~mcota] do you know which third party module is running into this issue ? and could give me log which shows what are the duplicate symbols. The libAPSAnalytics.a does extend Reachability class. we might have to namespace the class or as temporary solution strip out those symbols from the third party library using lipo. \r\n\r\nThanks\r\nSabil ", "updateAuthor": { "name": "srahim", "key": "srahim", "displayName": "Sabil Rahim", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-07-21T17:16:16.000+0000", "updated": "2014-07-21T17:16:16.000+0000" }, { "id": "315074", "author": { "name": "srahim", "key": "srahim", "displayName": "Sabil Rahim", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Issue seems to originate due to this line of code being in both places.\r\n\r\n{code}\r\n NSString *kReachabilityChangedNotification = @\"kNetworkReachabilityChangedNotification\";\r\n{code}\r\nBut i believe this problem would have existed with the previous versions of the TISDK too, since we didn't add anything new into Reachability class. \r\n\r\nSolution for the third party module is to define it as an extern.\r\n{code}\r\nextern NSString * const *kReachabilityChangedNotification;\r\n{code}\r\n\r\nBut in the long run we should be name spacing this constant to play well with other modules. The same problem could occur with APS SDK if users have iOS Reachability class in their app. ", "updateAuthor": { "name": "srahim", "key": "srahim", "displayName": "Sabil Rahim", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-07-21T18:02:36.000+0000", "updated": "2014-07-21T18:02:36.000+0000" }, { "id": "321955", "author": { "name": "sfeather", "key": "sfeather", "displayName": "Stephen Feather", "active": true, "timeZone": "America/New_York" }, "body": "Well, a couple of things to add.\r\n\r\nNo, it doesn't happen for us on 3.2.3.GA using our module for wrapping comscore. That means this is *new, broken behavior* as far as we are concerned in 3.3.0.GA.\r\n\r\nOur module code doesn't address the _kReachabilityChangedNotification directly.\r\n\r\n{code}\r\n20:40 $ grep -r 'kReachabilityChangedNotification' *\r\ncomScore/headers/CSReachability.h:#define kComScoreReachabilityChangedNotification @\"kComScoreNetworkReachabilityChangedNotification\"\r\nBinary file comScore/libcomScore.a matches\r\n{code}\r\n\r\nIts matched in their headers as\r\n\r\n{code}\r\n#define kComScoreReachabilityChangedNotification @\"kComScoreNetworkReachabilityChangedNotification\"\r\n{code}\r\n\r\nAt this point, we may just have to ship this app with 3.2.3.GA.\r\n\r\nWhat doesn't make sense in our case is that there is no way that the reference in the header would be a conflict, so its got to be in their binary which we cannot possibly change.", "updateAuthor": { "name": "sfeather", "key": "sfeather", "displayName": "Stephen Feather", "active": true, "timeZone": "America/New_York" }, "created": "2014-09-05T00:47:21.000+0000", "updated": "2014-09-05T01:13:03.000+0000" }, { "id": "322137", "author": { "name": "penrique", "key": "penrique", "displayName": "Pedro Enrique", "active": false, "timeZone": "America/Los_Angeles" }, "body": "PR: https://github.com/appcelerator/aps_sdk/pull/251", "updateAuthor": { "name": "penrique", "key": "penrique", "displayName": "Pedro Enrique", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2014-09-05T21:23:53.000+0000", "updated": "2014-09-05T21:23:53.000+0000" }, { "id": "322343", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "For those having this issue, please back up the file in SDK Root/iphones/classes/APSAnalytics/libAPSAnalytics.a and replace it with the version attached to this ticket.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-09-08T20:41:14.000+0000", "updated": "2014-09-08T20:41:14.000+0000" }, { "id": "322652", "author": { "name": "sfeather", "key": "sfeather", "displayName": "Stephen Feather", "active": true, "timeZone": "America/New_York" }, "body": "tested on 3.4.x against an ios8-gm build seems to have been resolved.\r\ntested on 3.3.0.GA against an ios7.1 build also seems to have been resolved.", "updateAuthor": { "name": "sfeather", "key": "sfeather", "displayName": "Stephen Feather", "active": true, "timeZone": "America/New_York" }, "created": "2014-09-09T21:49:16.000+0000", "updated": "2014-09-09T23:34:15.000+0000" }, { "id": "323850", "author": { "name": "penrique", "key": "penrique", "displayName": "Pedro Enrique", "active": false, "timeZone": "America/Los_Angeles" }, "body": "PR for titanium mobile\r\nmaster: https://github.com/appcelerator/titanium_mobile/pull/6090\r\n3.4.x: https://github.com/appcelerator/titanium_mobile/pull/6092", "updateAuthor": { "name": "penrique", "key": "penrique", "displayName": "Pedro Enrique", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2014-09-16T00:13:18.000+0000", "updated": "2014-10-07T19:59:14.000+0000" }, { "id": "323852", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Note. This is for 3.4.1...NOT 3.4.0.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-09-16T00:15:59.000+0000", "updated": "2014-09-16T00:15:59.000+0000" }, { "id": "334255", "author": { "name": "eharris", "key": "eharris", "displayName": "Ewan Harris", "active": true, "timeZone": "Europe/Dublin" }, "body": "Verified fix on:\r\n\r\nMac OSX 10.10.1\r\nAppcelerator Studio, build: 3.4.1.201410281743\r\nTitanium SDK build: 3.5.0.v20141201143204, 3.6.0.v20141201145716 \r\nTitanium CLI, build: 3.4.1\r\nAlloy: 1.5.1\r\nXcode 6.2 beta\r\niPhone 6 Plus (8.1.1)\r\n\r\nUsing the module TiComscore built to the above device using SDK 3.4.0.GA to confirm the fail case. Then built using the listed SDK's, the build passed both times with no errors.\r\n\r\nClosing ticket.", "updateAuthor": { "name": "eharris", "key": "eharris", "displayName": "Ewan Harris", "active": true, "timeZone": "Europe/Dublin" }, "created": "2014-12-02T00:17:26.000+0000", "updated": "2014-12-02T00:17:26.000+0000" } ], "maxResults": 13, "total": 13, "startAt": 0 } } }