DEV Community

ObjC_Coder
ObjC_Coder

Posted on

Complete Solution and Toolchain for iOS Cross-Platform Development: Coding and App Store Submission

When discussing cross-platform development, it's easy to get stuck on framework choices, such as Flutter, React Native, or uni-app. But when the project actually starts, problems usually arise later, such as:

  • How to handle iOS signing
  • How to package without a Mac
  • How to upload IPA

Cross-Platform Frameworks Are Just an Entry Point

First, establish a foundation: cross-platform frameworks solve UI and business logic reuse, not iOS publishing

Common choices:

Framework Runtime Method
Flutter Dart compilation
React Native JS Bridge
uni-app WebView / Native

Whichever you choose, eventually an iOS project (or a project that can build for iOS) will be generated


Example (Flutter)

flutter build ios
Enter fullscreen mode Exit fullscreen mode

Example (uni-app)

  • Use HBuilderX cloud packaging to generate an iOS package

Building Cross-Platform ≠ No Need for Xcode

Even when using cross-platform frameworks, building for iOS still requires:

  • Certificates
  • Provisioning profiles

For Flutter:

flutter build ipa
Enter fullscreen mode Exit fullscreen mode

Under the hood, Xcode is still invoked.

If the signing configuration is incorrect, it will fail directly.


Signing Preparation: A Key Watershed for Cross-Platform Projects

This is where many projects get stuck.

On macOS, you can use Xcode's automatic management, but in cross-platform environments (Windows / Linux), you need to prepare manually.

You can use AppUploader to generate signing files.


Operation Steps

1. Create a Certificate

  • Open AppUploader
  • Enter Certificate Management
  • Click Add
  • Select distribution
  • Set name and password
  • Download .p12

Create Certificate


2. Create a Provisioning Profile

  • Enter Provisioning Profile Management
  • Create a new App Store type
  • Select Bundle ID
  • Bind certificate
  • Download .mobileprovision

Provisioning Profile


3. Import into Build Environment

  • macOS → Import into Keychain
  • CI → Script import

Multiple Ways to Build IPA

Cross-platform projects can choose different build methods:


Method 1: Local Mac Build

Suitable for:

  • Having a Mac device
  • Debugging phase

Method 2: Cloud Build

For example:

  • HBuilderX cloud packaging
  • CI (Mac Runner)

HB Packaging


Method 3: Automated Build (Fastlane)

build_app(
  export_method: "app-store"
)
Enter fullscreen mode Exit fullscreen mode

The build result is always:

  • .ipa file

Uploading IPA Can Break Free from macOS Dependency

The upload step can be completely independent.

On Windows or Linux, you can upload directly.


Uploading with AppUploader

Steps:

  1. Open the Submit Upload page
  2. Enter Apple ID
  3. Set app-specific password
  4. Select IPA file
  5. Choose upload channel (1 or 2)
  6. Click Upload Upload

If you encounter:

  • Upload stuck
  • Progress not moving

You can switch channels and upload again.


Review and Publishing: No Difference for Cross-Platform Projects

After upload:

Go to App Store Connect:
ASC

My Apps → Select App → TestFlight → Build → Submit for Review
Enter fullscreen mode Exit fullscreen mode

Prepare:

  • App screenshots
  • Privacy policy
  • Test account

A Common Overlooked Issue in Cross-Platform Development

When modifying the Bundle ID:

  • The provisioning profile does not update automatically

Symptom:

  • Build succeeds
  • No build after upload

Solution:

  • Recreate the provisioning profile
  • Ensure Bundle ID consistency

Cross-platform development solves the problem of writing code once, but the publishing process still follows iOS rules. You can separate signing, building, and uploading. Cross-platform projects are no more complex than native ones when it comes to iOS submission.

Top comments (0)