{"id":18087087,"url":"https://github.com/artemnovichkov/my-project","last_synced_at":"2025-04-06T01:41:15.434Z","repository":{"id":74829365,"uuid":"110490840","full_name":"artemnovichkov/my-project","owner":"artemnovichkov","description":null,"archived":false,"fork":false,"pushed_at":"2017-11-21T03:37:05.000Z","size":69,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-05T21:43:34.340Z","etag":null,"topics":["build","framework","xcode"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/artemnovichkov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-13T02:34:18.000Z","updated_at":"2018-12-20T02:44:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"45cc9f60-2872-46c4-ad3a-33db53e4c1d6","html_url":"https://github.com/artemnovichkov/my-project","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artemnovichkov%2Fmy-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artemnovichkov%2Fmy-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artemnovichkov%2Fmy-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artemnovichkov%2Fmy-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/artemnovichkov","download_url":"https://codeload.github.com/artemnovichkov/my-project/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247423492,"owners_count":20936622,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["build","framework","xcode"],"created_at":"2024-10-31T16:59:51.752Z","updated_at":"2025-04-06T01:41:15.418Z","avatar_url":"https://github.com/artemnovichkov.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"## 📦 Frameworks\n\nA test project for showing first-party framework integration. The main goal of this approach is to link a compiled static frameworks to prevent extra rebuilding.\n\n## Features\n\n- ⚡️ Fast project build - no need to wait frameworks\n- 🛀 Isolated testing of frameworks\n- 🤖 Debug compiled frameworks via workspace\n\n## 🚀 Main flow\n\nCurrent project structure:\n- `MyWorkspace` - a workspace with all projects and playgrounds\n- `MyProject` - a main app with linked static frameworks\n- `MyFrameworkExample` - an example with a `MyFramework` target for isolated framework testing\n- `MyFrameworkPlayground` - an playground with a `MyFramework` framework for isolated framework testing\n\nFollow below steps for project changes:\n\n1. Add new features to `MyFramework`.\n2. Test it:\n - via `MyFrameworkExample`. It lets you store different enviroments.\n - via `MyFrameworkPlayground`. The same as above plus no need to run simulators.\n3. Run `MyFramework-Universal` target. It creates an universal static framework and save it to `Frameworks` folder in the main project.\n\n## 🤔 Current issues\n\n- Manual configuration of new projects according this scheme\n- Playgrounds don't work with static frameworks:\n\n```bash\nPlayground execution failed:\n\nerror: Couldn't lookup symbols:\n  __T011MyFramework0A5ClassCMa\n  __T011MyFramework0A5ClassC3logyyFZ\n```\nSo after `MyFramework-Universal` target running you should clean the Build folder.\n\n- You must run `MyFramework-Universal` target manually after every change in the framework.\n- Doesn't work with New Build System for universal framework building:\n```bash\nerror: accessing build database \".../Build/Intermediates.noindex/XCBuildData/build.db\": disk I/O error\n```\n- Framework linking graph is not obvious. You can miss something and increase app size with static framework duplication. It would be great if some tool prints dependency graph with linking type:\nMy Project\n```\n- MyFramework(static)\n-- MyFramework2(dynamic)\n- MyFramework2(dynamic)\n```\nor\n```\n- MyFramework(static)\n-- MyFramework2(static) \n- MyFramework2(static)\nWarnings:\n⁉️ MyFramework2 is static but used twice\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartemnovichkov%2Fmy-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fartemnovichkov%2Fmy-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartemnovichkov%2Fmy-project/lists"}