{ "id": "139299", "key": "AC-1362", "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": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2015-07-04T00:20:40.000+0000", "created": "2014-11-08T16:21:15.000+0000", "labels": [ "TCSupportTriage", "framework", "iOS", "module" ], "versions": [], "issuelinks": [], "assignee": { "name": "rtlechuga", "key": "rtlechuga", "displayName": "Radamantis Torres-Lechuga", "active": false, "timeZone": "Asia/Dubai" }, "updated": "2016-03-08T07:37:46.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": "14550", "name": "Appcelerator Modules", "description": "Please enter tickets related to Modules here." } ], "description": "There is quite a bit of confusion on how exactly to include a 3rd party framework into an iOS module for Titanium Mobile.\r\n\r\nMost are able to put together the fact that you need to adjust the module.xcconfig to include the framework and the path to the framework. However, the path to the framework is a point of contention.\r\n\r\nFor example, consider the following module.xcconfig definition:\r\n{code}\r\nOTHER_LDFLAGS=$(inherited) -ObjC -framework AddressBook -framework AssetsLibrary -framework Foundation -framework CoreLocation \r\n-framework CoreMotion -framework CoreGraphics -framework CoreText -framework MediaPlayer \r\n-framework Security -framework SystemConfiguration -framework UiKit \r\n-F\"./libs/google-plus-ios-sdk-1.7.1/\" -framework GooglePlus \r\n-framework GoogleOpenSource\r\n{code}\r\n\r\n(Note that I added line breaks above for readability)\r\n\r\nThis assumes that the google plus framework source is located under a folder called libs which is placed at the root of the module's folder structure.\r\n\r\nThis builds correctly. However, the built zip file does not include the necessary framework files within the compiled module. Therefore, when the zipped module is shared to other developers, the necessary frameworks are missing and those developer's applications will fail on build. \r\n\r\nFurthermore, even if the files were included in the zip, the build would most likely fail since the path would be wrong relative to the other developer's application source. i.e. If given to a 3rd party developer, the path would most likely need to be specified as something like:\r\n\r\n./modules/iphone/MODULE_NAME/MODULE_VERSION/libs/google-plus-ios-sdk-1.7.1/\r\n\r\n... to get the 3rd party developer's application to build correctly and include the proper framework source.\r\n\r\nWhat exactly is the correct way to include 3rd party framework sources in an iphone module such that paths can be relative and all necessary files will be included in the module's build zip file?", "attachment": [], "flagged": false, "summary": "iOS: Adding a framework to a module, linker error and relative path confusion", "creator": { "name": "astjohn", "key": "astjohn", "displayName": "Adam", "active": true, "timeZone": "America/Havana" }, "subtasks": [], "reporter": { "name": "astjohn", "key": "astjohn", "displayName": "Adam", "active": true, "timeZone": "America/Havana" }, "environment": "ios, 3.4.0.GA", "comment": { "comments": [ { "id": "356920", "author": { "name": "rtlechuga", "key": "rtlechuga", "displayName": "Radamantis Torres-Lechuga", "active": false, "timeZone": "Asia/Dubai" }, "body": "We updated Module development docs, and it's addressing this", "updateAuthor": { "name": "rtlechuga", "key": "rtlechuga", "displayName": "Radamantis Torres-Lechuga", "active": false, "timeZone": "Asia/Dubai" }, "created": "2015-07-04T00:20:40.000+0000", "updated": "2015-07-04T00:20:40.000+0000" } ], "maxResults": 1, "total": 1, "startAt": 0 } } }