{ "id": "174712", "key": "TIMOB-27757", "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": "20950", "name": "Release 9.1.0", "archived": false, "released": true, "releaseDate": "2020-08-25" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2020-07-29T23:17:09.000+0000", "created": "2020-02-10T20:42:17.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [], "issuelinks": [], "assignee": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "updated": "2020-07-29T23:17:09.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": "When including native watchOS frameworks (and the build doesn't fail because of TIMOB-27756), the build later fails because the source files cannot find the frameworks. After some research, I found out that the frameworks are linked incorrectly, although linked correctly in the source project. It seems like a simple path issue somewhere, but it nukes the frameworks and marks them with a white icon (showing that they cannot be found).\r\n\r\nThe issue can be reproduced in our app. \r\n\r\n*EDIT*: I found the reason:\r\n{code}\r\nCurrent pbxproj line (invalid):\r\n\r\n\t\t3A870A3023F1EE1600E07E86 /* MyFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = MyFramework.framework; sourceTree = \"\"; };\r\n\r\nshould be:\r\n\r\n\t\t3A39B9AF23F2AE7800FF2AC3 /* MyFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MyFramework.framework; path = extensions/my_watch_app/MyFramework.framework; sourceTree = \"\"; };\r\n{code}\r\n\r\nThe pbxproj entry is missing the „name“ and „path“. Also, there is a missing framework search path {{$(PROJECT_DIR)/extensions/my_watch_app}} which should be added when the other refs are written. The issue behind it is that frameworks are stored at different subdirectories when copied from /extensions/xxxx to /build/iphone/extensions/xxxx but the path is not updated.\r\n\r\n A workaround is to hardcode the following hacky code below [these lines|https://github.com/appcelerator/titanium_mobile/blob/master/iphone/cli/commands/_build.js#L3411]:\r\n{code:js}\r\nconst currentFileRef = Object.assign({}, xobjs.PBXFileReference[extFrameworkReference]);\r\n\r\nif (!currentFileRef.path.includes('extensions/') && currentFileRef.sourceTree === '\"\"') {\r\n xobjs.PBXFileReference[extFrameworkReference].path = `extensions/MyExtensionName/${currentFileRef.path}`;\r\n xobjs.PBXFileReference[extFrameworkReference].name = currentFileRef.path;\r\n}\r\n{code}", "attachment": [], "flagged": false, "summary": "watchOS: Frameworks are referenced incorrectly", "creator": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "environment": null, "comment": { "comments": [ { "id": "455484", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "PR: https://github.com/appcelerator/titanium_mobile/pull/11708", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2020-05-17T08:35:39.000+0000", "updated": "2020-05-17T08:35:39.000+0000" }, { "id": "455786", "author": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "body": "FR Passed", "updateAuthor": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-06-12T23:18:57.000+0000", "updated": "2020-06-12T23:18:57.000+0000" }, { "id": "456276", "author": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified on:\r\nMac OS: 10.15.4\r\nSDK: 9.1.0.v20200727104531\r\nAppc CLI: 8.1.0-master.7\r\nJDK: 11.0.4\r\nNode: 10.17.0\r\nStudio: 6.0.0.202005141803\r\nXcode: 12.0 beta\r\nDevice: iOS simulator 13.5", "updateAuthor": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-07-29T23:17:09.000+0000", "updated": "2020-07-29T23:17:09.000+0000" } ], "maxResults": 3, "total": 3, "startAt": 0 } } }