iOS Project Setup
Base checklists that developer will need to set new iOS project up.
New project creation steps
- create Xcode project
- setup Bundle ID in Xcode project
- setup deployment target and supported devices in Xcode project
- setup git repo (configure GitLab as well, protect branches, set default settings, etc)
- set proper folder structure and base targets
- add necessary dependencies (list of most used ones is below)
- add project on Apple Dev Portal (create identifier, create certificates, add all QA / devs / PMs devices, create provisioning profiles, , app key for push notifications, etc)
- add project on AppStore Connect (create application for TestFlight distribution)
- add proper signing to Xcode project
- add needed capabilities to Xcode project
- setup SwiftLint within project (use
.swiftlint.yml
file from docs: click) - add ServerEnvironment and FirebaseEnvironment fields to Info.plist
- setup dev and prod Firebase environments (add Google's Info.plists to project + initiate Firebase SDK)
- setup Firebase Crashlytics for both dev and prod environments (within Xcode project and Firebase console)
- setup Firebase Distribution for both dev and prod environments (within Xcode project and Firebase console)
- setup CI - configure on Gitlab if needed
- setup CI - add .gitlab_ci.yml
- setup CI - configure match branch with proper certificates and provisioning profiles
- setup CI - add fastlane folder with configured Appfile and Fastfile
- configure Slack integration (using ios.dev account!)
- configure Jira integration
- add app icon (if present)
- add splash screen (if present)
- setup FLEXopen in new window library for project to make QA life easier (example can be found in Envolopen in new window project)
Dependencies to use
- Composable Architectureopen in new window package
- R.swiftopen in new window package
- firebase-ios-sdkopen in new window package
- keyboardeventspackageopen in new window (in case of UIKit)
- keychainaccessopen in new window package
- Moyaopen in new window package
- Kingfisheropen in new window package
- Department's CommonComponentsopen in new window
- Department's AutolayoutDSLopen in new window
- Department's DeclarativeUIKitopen in new window