|
| 1 | +--- |
| 2 | +contributors: parjohns |
| 3 | +--- |
| 4 | + |
| 5 | +# Simplify Distribution in Xcode and Xcode Cloud |
| 6 | + |
| 7 | +## Distribution Tools |
| 8 | +Methods for building and sharing your app |
| 9 | + |
| 10 | +### Xcode Organizer Window |
| 11 | +Provides streamlined one-click distribution options |
| 12 | + |
| 13 | +### Xcode Cloud Workflow |
| 14 | +Provides the ability to create a workflow to automate the building and sharing of an app |
| 15 | + |
| 16 | +## Express TestFlight Distribution |
| 17 | + |
| 18 | +### Archives |
| 19 | +The first step to distribution is to create an archive. An archive: |
| 20 | +- Is a record of the app build |
| 21 | +- Contains an optimized release build |
| 22 | +- Contains debug symbols (.dSYM) |
| 23 | +- Has its contents repackaged when uploading |
| 24 | +- Has an `.xcarchive` extension |
| 25 | + |
| 26 | +Creating an archive can be done by going to the Product menu in Xcode and selecting Archive. When the archive is created, it can be found in the Organizer menu (Window > Organizer). |
| 27 | +From there, the archive can be distributed by clicking the "Distribute App" button. Xcode 15 has added new streamlined options |
| 28 | +![options][options] |
| 29 | + |
| 30 | +[options]: ../../../images/notes/wwdc23/10224/1streamline.JPG |
| 31 | + |
| 32 | +These options include: |
| 33 | +- TestFlight & App Store - has the full capabilities of TestFlight and allow App Store submission |
| 34 | +- TestFlight internal only - can be shared with team but does not allow App Store submission |
| 35 | +- Debugging - an optimized build that can be installed on registered devices |
| 36 | +- Release - similar to debug build but signed with distribution certificate |
| 37 | +- Custom - allows for configuration of settings |
| 38 | + |
| 39 | +The streamlined options come with the recommended settings. The settings include: |
| 40 | +- Automatic signing |
| 41 | +- Symbols for crash reports |
| 42 | +- Auto-incrementing build number |
| 43 | +- Strips Swift symbols |
| 44 | + |
| 45 | +Once the app has been distributed, it will be available to see on App Store Connect. Test Flight users will be able to see details about the new build on their device. Users can also share feedback about the build, which is available to see inside the Feedback tab on Xcode Organizer. |
| 46 | + |
| 47 | +### Xcode Cloud |
| 48 | +Xcode Cloud is the Continuous Integration and Delivery service built by Apple. In the presentation, a workflow is created that will share a build with the team when new features are added. This is done by doing the following: |
| 49 | +1. Going to the menu Integrate > Create Workflow or Integrate > Manage Workflow if one is already created |
| 50 | +2. Edit the Archive action to add TestFlight (Internal Testing Only) |
| 51 | +3. Add a TestFlight Internal Testing post-action to add a TestFlight group |
| 52 | + |
| 53 | +Xcode Cloud can automatically update the notes for what to test. More information about this can be found here: |
| 54 | + |
| 55 | +https://developer.apple.com/documentation/Xcode/including-notes-for-testers-with-a-beta-release-of-your-app |
| 56 | + |
| 57 | +## Automating Notarization |
| 58 | +Notarization is the process by which Apple verifies software. This allows developers to directly distribute their Mac application to users while giving them confidence that it is safe. |
| 59 | + |
| 60 | +The notirization process is as follows: |
| 61 | +1. An archive is created for the app and uploaded to Apple's Notary Service |
| 62 | +2. The Notary Service scans the app for malicious content |
| 63 | +3. A ticket is provided that can be stapled to the app |
| 64 | +4. The app is distributed to customers |
| 65 | +5. When the app is launched for the first time, it will verify the stapled ticket and a ticket provided by the Notary Service |
| 66 | + |
| 67 | +More information about notarization can be found here: |
| 68 | + |
| 69 | +https://developer.apple.com/videos/play/wwdc2022/10109 |
| 70 | + |
| 71 | +Choosing the Direct Distribution option from Organizer will notarize the app. Xcode Cloud also supports notarization during automation. This can be done by adding a notarize post action inside the workflow editor. |
0 commit comments