- 
                Notifications
    
You must be signed in to change notification settings  - Fork 5
 
Workshop handbook
        Pedro Piñera Buendía edited this page Jan 26, 2018 
        ·
        15 revisions
      
    - 📖: Theory, introduction of concepts.
 - ❓: Questions for the attendees.
 - 👨💻: Developers working on their own.
 
- Encourage people to participate.
 - Invite them to give feedback after the workshop.
 
- Why modular apps.
 - What are the advantages and disadvantages of modular apps.
 - Multi-target vs multi-project.
 - Static and dynamic linking.
 - Embedding dynamic frameworks.
 
- Have a better understanding of a modular architecture (frameworks, libraries, linking, dependencies)
 - Getting rid of Xcode projects in your repos using XcodeGen
 - Sharing code and UI components across different products.
 - Automate tasks in Swift using Sake
 
- Issues app.
 - Features and structure.
 - External dependencies.
 - Workshop plan
 
- Checkout the project and go to tag 0.1.0
 - Install bundle dependencies 
bundle install - Fetch dependencies with 
bundle exec rake dependencies. - Register a new app on GitHub and update 
Constants.swift. - Check the App Groups settings (entitlements file) and app signing.
 - Run the app using Xcode.
 
Before jumping to the next step: Everyone should have the app running on the simulator and be able to login and get their assigned GitHub issues.
- Install XcodeGen if they don't have it installed.
 - Create a base 
Projects/project.ymlfile. - Create a 
Projects/GitHubKit/project.ymlfile. - Add a Rake task to generate projects.
 - Add the Xcode project to the 
.gitignore. 
Before jumping to the next step: Everyone should be able to generate the project, compile the GitHubKit target and compile and run the application.
- 🌱 Ask them to do something similar with IssuesKit:
- Create a 
project.yml. - Update the Rake task.
 - Add the project to the 
.gitignore. 
 - Create a 
 - Define the dependency between 
IssuesKitandGitHubKit. 
Before jumping to the next step: Everyone should be able to generate the project, compile the IssuesKit target and compile and run the application.
- 🌱 Ask them to do something similar with the App:
- Create a 
project.yml. - Update the Rake task.
 - Add the project to the 
.gitignore. Before jumping to the next step: Everyone should be able to generate the project, and compile and run theApp. 
 - Create a 
 
- Create a new target using Xcode.
 - Enable app groups to generate the 
iMessage.entitlementsfile. - Reorganize target sources and resources.
 - Add the new target to the app 
project.yml. Before jumping to the next step: Everyone should be able to generate the project, and compile and run the iMessage extension. 
- 🌱 Ask them to do create an 
IssuesUIframework that depends onIssuesKit:- Copy IssuesKit.
 - Remove sources and tests.
 - Remove the test target.
 - Move the cell from the main app.
 - Link the framework from the main app.
 - Update the imports and make sure that the cell can be used from the app.
 - Update Rakefile to include the new project. Before jumping to the next step: Everyone should be able to compile and run the main iOS application.
 
 
- Update SecureStore's keychain to use the shared group.
 - Verify that the entitlements and signing are ok.
 - Implement the view controller. Before jumping to the next step: Everyone should be able to compile, and run a functional iMessage extension that can share issues with other people.
 
- Crashes because of an invalid group.
 - The app cannot be built right now.
- Ensure the info.plist is properly setup.