View Categories

iOS Project & Xcode Requirements

3 min read

The Academy & Exam OS Flutter app source includes a complete iOS project. This guide explains what you need to build it and how the build is configured.

Important — iOS status in version 1.0.2: The iOS project is source-ready and uses the same production-profile gate as Android. The release verification of versions 1.0.0 to 1.0.2 covered Android only; the iOS build was not independently certified for any of these versions. Build and test the iOS archive on your own Mac and devices before you submit it.

What is included and what is not #

Included:

  • the iOS project in Flutter-App/Flutter-App-Source/ios/;
  • the same app features and production-profile validation as Android.

Not included:

  • an Apple Developer account, its annual fee, certificates or provisioning profiles;
  • an App Store listing — no Academy & Exam OS app is published on the App Store for you;
  • App Store review or approval. Apple’s policies, fees and review apply to your own account;
  • Sign in with Google on iOS. The Google button stays hidden on iOS in version 1.0.2; e-mail and password sign-in works.

OsDot Solutions offers iOS deployment as a separate service.

Requirements #

  • A Mac with the current Xcode.
  • Flutter 3.44.x with Dart 3.12.
  • An Apple Developer account for signing and distribution.
  • CocoaPods is not required (the project uses Swift Package Manager).
  • A validated production profile — see Flutter Mobile App — Setup & Configuration.

Step 1: Set the bundle identifier and signing #

  1. Open ios/Runner.xcworkspace in Xcode.
  2. Select the Runner target.
  3. On the Release configuration, set your own bundle identifier. The shipped value is com.osdots.academyexam; the Debug and Profile configurations use com.osdots.academyexam.dev.
  4. Select your team and enable automatic signing.

Step 2: Set the display name and icons #

  1. In ios/Runner/Info.plist, replace the placeholder YourSite in CFBundleDisplayName and CFBundleName with your institute’s name.
  2. Replace the app icons in ios/Runner/Assets.xcassets/AppIcon.appiconset.

Step 3: Build the archive #

From the Flutter-App-Source/ folder:

flutter build ipa --release --dart-define-from-file=config/production.local.json

The Runner target’s first build phase, Validate Release Profile, runs the same validator as Android over the values Xcode received. It stops a Release build that has no valid production profile or still uses a .dev bundle identifier.

Step 4: Test and upload #

  1. Install the build on your own test devices (for example through TestFlight) and check sign-in, the test catalogue, a test attempt and results against your website.
  2. Upload the archive with Xcode or Transporter under your Apple Developer account and complete the App Store listing and review there.

When your App Store listing is live, enter its address as the App Store listing URL under System / Integrations → Mobile / App Store Settings on your website and save: the homepage app showcase then shows the App Store button. Until an address is entered, the showcase shows Coming soon to App Store. See Website & CMS.

Related documents #

Watch the Video Tutorial #

This topic is also covered in Academy & Exam OS Video Tutorial 11: Flutter App Setup & Android Build (watch on YouTube). All Academy & Exam OS video tutorials.