diff --git a/content/en/docs/refguide/mobile/distributing-mobile-apps/building-native-apps/_index.md b/content/en/docs/refguide/mobile/distributing-mobile-apps/building-native-apps/_index.md index 885bf339c88..14777639a8a 100644 --- a/content/en/docs/refguide/mobile/distributing-mobile-apps/building-native-apps/_index.md +++ b/content/en/docs/refguide/mobile/distributing-mobile-apps/building-native-apps/_index.md @@ -19,7 +19,8 @@ Many of these guides use the Mendix Native Mobile Builder UI tool included in Me * [Build a Mendix Native App Locally Manually](/refguide/mobile/distributing-mobile-apps/building-native-apps/native-build-locally-manually/) – Follow this guide to build your apps locally and without an internet connection. * [Create a Custom Developer App](/refguide/mobile/distributing-mobile-apps/building-native-apps/how-to-devapps/) – Create a custom developer app (a substitute for the Make It Native app) which accommodates custom dependencies such as native widgets or fonts. * [Native Template](/refguide/mobile/distributing-mobile-apps/building-native-apps/native-template/) – The Native Template describes the native dependencies your app needs, and it includes two native apps (one for iOS and one for Android) that can be independently built to create the finished apps. -* [Build a Mendix Native App with Bitrise](/refguide/mobile/distributing-mobile-apps/building-native-apps/bitrise/) – This guide explains how to set up Bitrise to build a Mendix native mobile app. +* [Build a Mendix Native App with Bitrise](/refguide/mobile/distributing-mobile-apps/building-native-apps/bitrise/) – This guide explains how to set up Bitrise to build a Mendix native mobile app. +* [Build a Mendix Native App with Appcircle](/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/) – This guide explains how to set up Appcircle to build a Mendix native mobile app. {{% alert color="info" %}} The Mendix Native Mobile Builder does not currently support connections behind proxy servers. Please make sure you are not behind a proxy server and that your security rules allow access to the required services. For more information, see the [Firewall Settings](/refguide/system-requirements/#firewall-settings) section of System Requirements. diff --git a/content/en/docs/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle.md b/content/en/docs/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle.md new file mode 100644 index 00000000000..d4ad9d31e0a --- /dev/null +++ b/content/en/docs/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle.md @@ -0,0 +1,221 @@ +--- +title: "Build a Mendix Native App with Appcircle" +url: /refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/ +weight: 70 +description: Describes how to integrate with Appcircle to build a Mendix native app in the cloud. +--- + +## Introduction + +This guide helps you set up [Appcircle](https://appcircle.io) to automate building a Mendix native app in the cloud. Appcircle is a mobile CI/CD platform that provides fast, flexible build pipelines for iOS and Android apps. + +{{% alert color="info" %}} +Please note that this documentation is provided as a guide only. Mendix offers support if issues arise with the Mendix build process itself, but cannot provide support for problems related to the Appcircle platform or other third-party tools described in this guide. +{{% /alert %}} + +Before starting, [sign up for an Appcircle account](https://auth.appcircle.io/signup) and make sure you have created the native template project for your app by following [Using Mendix Native Mobile Builder to Set Up Your Local App](/refguide/mobile/distributing-mobile-apps/building-native-apps/native-build-locally/#using-mendix-native-mobile-builder-to-set-up-your-local-app). + +After building your app, you can distribute it to testers or publish it to the app stores using Appcircle. For more information, see [Distribute a Mendix Native App with Appcircle](/refguide/mobile/distributing-mobile-apps/distributing-with-appcircle/) and [Publish a Mendix Native App with Appcircle](/refguide/mobile/distributing-mobile-apps/publishing-with-appcircle/). + +## Set Up Your Build Profiles {#set-up-your-build-profile} + +Appcircle uses separate build profiles for iOS and Android. Create one profile per target platform by doing the following: + +1. Log in to Appcircle and go to the **Build** module. +1. Click **Add New** (top-right corner) and select the target operating system (**iOS** or **Android**) and **React Native** as the framework. +1. Choose how to connect your repository. Appcircle supports GitHub, GitLab, Bitbucket, Azure DevOps, and direct SSH URL connections: + + {{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/add-build-profile.png" alt="Repository connection options in Appcircle" class="no-border" >}} +1. Select the branch you want to build from. Appcircle automatically fetches the repository and fills in the build configuration. +1. Review the auto-filled configuration, adjust if needed, and finish creating the profile. + +Repeat these steps to create a profile for the other platform if needed. For more information, see [Appcircle's build profile documentation](https://docs.appcircle.io/build/manage-the-connections/adding-a-build-profile/). + +## Set Up Code Signing for iOS {#code-signing-ios} + +Applications distributed to iOS devices must be signed with a certificate and a provisioning profile. You will need to be enrolled in the [Apple Developer Program](https://developer.apple.com/programs/) or the [Apple Developer Enterprise Program](https://developer.apple.com/programs/enterprise/), and have an [App Store Connect API Key](https://developer.apple.com/documentation/appstoreconnectapi/creating-api-keys-for-app-store-connect-api) available. + +### Add a Certificate + +To add a certificate, do the following: + +1. Go to the **Signing Identities** module from the left navigation menu and select **Apple Certificates**. +1. Click **Add New** and choose one of the following: + * **Create an Apple Certificate** — generates a certificate via your App Store Connect API Key. Select a Certificate Signing Request (CSR) or generate one, then choose the certificate type (Apple Distribution). + * **Upload Certificate Bundle (.p12)** — upload a pre-existing *.p12* file directly. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/apple-certificates.png" alt="Repository connection options in Appcircle" class="no-border" >}} + +{{% alert color="warning" %}} +Avoid using special characters such as `$` or `#` in your certificate password, as these can cause failures during import. +{{% /alert %}} + +### Add a Provisioning Profile + +To add a provisioning profile, do the following: + +1. In the **Signing Identities** module, select **Apple Profiles**. +1. Choose one of the following methods: + * **Register a New Profile** — select a distribution method (App Store, Ad Hoc, or Enterprise), an App ID, and a certificate. Appcircle registers the profile on the Apple Developer Portal automatically. + * **Fetch from App Store Connect** — select **Get Provisioning Profiles from App Store Connect** and import profiles from your account. + * **Upload manually** — upload one or more *.mobileprovision* files. Profiles are automatically matched with certificates; a green checkmark indicates a match. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/apple-profiles.png" alt="Repository connection options in Appcircle" class="no-border" >}} + +### Assign to the Build Profile + +In the Build module, open the iOS build profile and go to **Build Configuration**. Under the **Signing** section, choose one of the following signing methods: + +* **Automatic Signing** — Appcircle automatically handles provisioning profile management during the build. This requires: + * Xcode 13 or later + * A Developer or Distribution certificate + * An App Store Connect API key (configured in the **API Integrations** settings) + * The bundle identifier must already be registered in your Apple Developer account +* **Manual Signing** — you manually select the certificate and provisioning profile for each build configuration. This gives you full control over which profiles are used. Select your bundle identifier from the dropdown, then choose the provisioning profile you added in the **Signing Identities** module. The certificate will be automatically matched based on the profile. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/assign-code-signing.png" alt="Repository connection options in Appcircle" class="no-border" >}} + +For more details, follow [Appcircle's iOS code signing guide](https://docs.appcircle.io/signing-identities/apple-certificates). + +## Set Up Code Signing for Android {#code-signing-android} + +Applications distributed to Android devices must be signed with a keystore. To distribute via the Play Store, you will also need to [register as an Android developer](https://play.google.com/console/signup). + +Appcircle lets you either upload an existing keystore or generate a new one directly within the platform. + +To generate a new keystore within Appcircle, do the following: + +1. Go to the **Signing Identities** module and select **Android Keystores**. +1. Click **Add New** and select the generate option. +1. Fill in the required details: + * **Keystore Password** — password to protect the keystore file (minimum 6 characters) + * **Key Alias** — identifier for the signing key (for example, `my-app-key`) + * **Key Password** — password to protect the signing key (minimum 6 characters) + * Certificate information: + * **Common Name (CN)** — your name or organization name + * **Organizational Unit (OU)** — your department or division (optional) + * **Organization (O)** — your organization name (optional) + * **Locality (L)** — your city (optional) + * **State (ST)** — your state or province (optional) + * **Country Code (C)** — two-letter country code (for example, `US`) + * **Validity (years)** — how long the keystore remains valid (default is 25 years; Google requires at least 25 years for Play Store apps) +1. Save the keystore. Appcircle generates the keystore file and stores it securely. + +{{% alert color="warning" %}} +Store your keystore credentials securely. If you lose them, you cannot update your app on the Play Store and will need to publish a new app with a different package name. +{{% /alert %}} + +To upload an existing keystore instead, do the following: + +1. Go to the **Signing Identities** module and select **Android Keystores**. +1. Click **Add New** and select the upload option. +1. Upload your *.keystore* (or *.jks*) file and fill in the **Keystore Password**, **Key Alias**, and **Key Password** fields. +1. Save the keystore. + +After generating or uploading the keystore, open the Android build profile's workflow editor and ensure the **Sign Application** step is enabled and configured to use the keystore from Signing Identities. + +For more details, follow [Appcircle's Android code signing guide](https://docs.appcircle.io/signing-identities/android-keystores). + +## Configure Environment Variables {#environment-variables} + +Environment variables let you configure build-time and runtime settings without hardcoding values in your app. You can use them to set different configurations for development, staging, and production builds. + +Appcircle provides two levels of environment variable configuration: + +* **Global environment variables** — shared across all build profiles in your organization +* **Build profile environment variables** — specific to a single build profile + +### Common Use Cases + +For Mendix native apps, you might use environment variables for: + +* **Runtime URLs** — different backend endpoints for dev, test, and production environments +* **App configuration** — feature flags, API keys, or service endpoints +* **Build configuration** — version numbers, build identifiers, or platform-specific settings + + +### Add Global Environment Variables + +To configure environment variables shared across all builds in your organization, do the following: + +1. Go to the **Build** module and select **Environment Variables** from the left navigation menu. +1. Click **Add New Group**. +1. Enter the **Key** and **Value**, click lock icon if value is sensitive. +1. Save the variable. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/env-groups.png" alt="Repository connection options in Appcircle" class="no-border" >}} + +Global variables can be overridden by build profile-specific variables with the same key. + +{{% alert color="info" %}} +For sensitive values like API keys or tokens, always enable **Secret** option with lock icon to prevent them from appearing in build output. For highly sensitive credentials, consider using Appcircle's secret management features instead. +{{% /alert %}} + +### Add Environment Variables to Your Build Profile + +To configure environment variables for a specific build profile, do the following: + +1. Open the build profile in the **Build** module. +1. Click the **gear icon** to open **Build Configuration** settings. +1. Go to the **Environment Variables** tab. +1. Click **Environment Variables** tab and select the environment variable groups that you want to use in build. +1. Save the configuration. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/env-selection.png" alt="Repository connection options in Appcircle" class="no-border" >}} + +### Use Environment Variables in Your App + +Environment variables configured in Appcircle are available during the build process. How you access them depends on your app's configuration: + +* **React Native environment files** — if your app uses *.env* files or libraries like `react-native-config`, you can pass Appcircle environment variables to these configuration files using custom build scripts +* **Build scripts** — environment variables are accessible in workflow steps and custom scripts using standard environment variable syntax (for example, `$RUNTIME_URL` in shell scripts) + +For more details on environment variable management and advanced configurations, see [Appcircle's environment variables documentation](https://docs.appcircle.io/environment-variables/). + +## Build Your App {#build-your-app} + +Builds can be started manually or automatically triggered by commits to the repository. + +To start a build manually, open the build profile and click **Start Build**. Select the branch and the workflow, then confirm. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/build-logs.png" alt="Build profile overview showing build history in Appcircle" class="no-border" >}} + +While the build is running, you can view the live build logs by clicking on the build's **Commit ID** or the actions menu. The logs show each workflow step in real time, helping you monitor progress and diagnose any issues. + +{{% alert color="info" %}} +Appcircle has 70+ native pipeline integration steps. You can see all steps in the [Appcircle Integrations](https://appcircle.io/integrations) page. +{{% /alert %}} + +{{% alert color="info" %}} +Older versions of Mendix might require a specific Node version. The Appcircle workflow already includes a [Node Install](https://docs.appcircle.io/workflows/react-native-specific-workflow-steps/node-install) step — simply update the version number there to match the version in the **.nvmrc** file of your app's generated native template. +{{% /alert %}} + +### Set Up Automatic Builds + +To trigger a build automatically every time **Build Native App** pushes an update to the native template repository, do the following: + +1. Open the build profile. +1. Navigate to the **Triggers** section. +1. Enable the trigger and set it to the branch you want to build from. +1. Appcircle provides 3 different trigger types. + * **On Every Push:** With this option, Appcircle will start build automatically with selected branch configuration when a commit pushed to this branch. + * **On Merge/Pull Request:** With this option, Appcircle will start build automatically with selected branch configuration when a merge/pull request opened. + * **On Tag Push:** With this option, Appcircle will start build automatically with selected tag configuration when a tag created. +1. Select the build configuration. +1. Select the appropriate workflow. +1. Save all settings. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/trigger-config.png" alt="Build profile overview showing build history in Appcircle" class="no-border" >}} + +Now, every time repository is updated, a new build will be triggered automatically in Appcircle. + +### History and Activity Logs + +The Appcircle build module provides a centralized tracking system through its history and activity log records. With the Build History feature, all past build details can be viewed from a single central location, while the Activity Log feature records every action taken by users. + +For more detailed information, please visit [Build History](https://docs.appcircle.io/build/build-history) and [Build Activity Log](https://docs.appcircle.io/build/build-activity-log) documentations. + +## Read More + +* [Distribute a Mendix Native App with Appcircle](/refguide/mobile/distributing-mobile-apps/distributing-with-appcircle/) +* [Publish a Mendix Native App with Appcircle](/refguide/mobile/distributing-mobile-apps/publishing-with-appcircle/) diff --git a/content/en/docs/refguide/mobile/distributing-mobile-apps/distributing-with-appcircle.md b/content/en/docs/refguide/mobile/distributing-mobile-apps/distributing-with-appcircle.md new file mode 100644 index 00000000000..9d2a900f39a --- /dev/null +++ b/content/en/docs/refguide/mobile/distributing-mobile-apps/distributing-with-appcircle.md @@ -0,0 +1,106 @@ +--- +title: "Distribute a Mendix Native App with Appcircle" +url: /refguide/mobile/distributing-mobile-apps/distributing-with-appcircle/ +weight: 25 +description: Describes how to use Appcircle's Testing Distribution module to share builds with testers. +--- + +## Introduction + +Once you have [built your Mendix native app with Appcircle](/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/), you can distribute it to testers using Appcircle's built-in **Testing Distribution** module. This lets you share builds with QA teams or stakeholders without going through the App Store or Google Play, making it useful for internal reviews and beta testing. + +{{% alert color="info" %}} +Please note that this documentation is provided as a guide only. Mendix offers support if issues arise with the Mendix build process itself, but cannot provide support for problems related to the Appcircle platform or other third-party tools described in this guide. +{{% /alert %}} + +## Prerequisites + +Before starting this guide, make sure you have completed the following: + +* Set up a build profile and built your app by following [Build a Mendix Native App with Appcircle](/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/) + +## Create a Distribution Profile {#create-distribution-profile} + +To create a testing distribution profile, do the following: + +1. Go to the **Testing Distribution** module from the left navigation menu. +1. Click **Add New** to create a distribution profile. +1. Give the profile a name and save it. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/testing-distribution-module.png" alt="Testing Distribution module in Appcircle" class="no-border" >}} + +## Link Distribution to Your Build Profile {#link-distribution} + +To automatically send builds to your testing distribution profile after a successful build, do the following: + +1. Open the build profile in the **Build** module and click the **gear icon** to open **Build Configuration** settings. +1. Navigate to the **Distribution** tab (alongside the Signing and Triggers tabs). +1. Enable the **Auto Distribute** toggle in the **Automatically Distribute to Testers**, if you want every successful build to be sent to testers automatically. If disabled, you will need to manually send builds from the build profile after they complete. +1. After enabled auto disribute toggle, select the distribution profile you created from the dropdown. +1. Save the configuration. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/td-profile-selection.png" alt="Testing Distribution module in Appcircle" class="no-border" >}} + +With **Auto Distribute** enabled, every successful build will be sent to your distribution profile and testers will be notified automatically without any manual steps. + +## Distribute Build to Testers {#share-builds} + +After a build is distributed to the testing distribution profile, you can share it with testers. Appcircle provides 2 different distribution method here. **Manuel** and **Automatic**. + +### For Automatic Distribution + +Appcircle can send binary automatically to testers. To enable this feature, you should have testing groups and enabled the automatically distribute and select testing group(s). + +1. Open your distribution profile in the **Testing Distribution** module. +1. Navigate to **Testing Groups** section on the left panel. +1. Add new group, and email addresses for this group. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/td-group-create.png" alt="Testing Distribution module in Appcircle" class="no-border" >}} + +1. After that, go to the **Testing Distribution** profile and open the settings from **3 dots** icon at the top right of secreen. +1. Navigate to the **Auto Send** tab in the opened modal. And select the group that you want to distribute binary automatically. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/td-group-selection.png" alt="Testing Distribution module in Appcircle" class="no-border" >}} + +### For Manuel Distribution + +Appcircle can send binary manually to testers. To use this feature, you can use the **Share With Testers** option of distribution profile. You can send binary to testers one by one or select group. + +1. Open your distribution profile in the **Testing Distribution** module. +1. On the right side, you will see the **Share with Testers** button. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/share-testers.png" alt="Testing Distribution module in Appcircle" class="no-border" >}} + +1. After clicking this button, you should give an email address or select a testing groups to able to send binary. +1. Click the next button, and send it to testers. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/share-testers-details.png" alt="Testing Distribution module in Appcircle" class="no-border" >}} + +Testers will receive an email notification containing: + +* The app name and version number +* Release notes (if you added any) +* A secure download link +* Installation instructions for their device + +When testers click the link, they will be directed to the testing portal to able to download binary where they can: + +* **iOS**: Download and install the app directly (for Ad Hoc or Enterprise provisioned apps). If using an Ad Hoc profile, their device UDID must be included in the provisioning profile. +* **Android**: Download the APK and install it. They may need to enable "Install from Unknown Sources" in their device settings. + +{{% alert color="info" %}} +You can configure authentication requirements (Static, LDAP/SSO) for distribution profiles in the distribution profile settings. +{{% /alert %}} + +For more details on managing testers, configuring authentication for download links, and other distribution options, see [Appcircle's Testing Distribution documentation](https://docs.appcircle.io/distribute/create-or-select-a-distribution-profile/). + +## Testing Portal + +All application versions distributed via Appcircle’s Testing Distribution module are accessible through a single centralized portal. Users can directly access all available versions and their associated information (such as release notes, branches, commits, etc.). Through the portal, users can also access past versions and easily view the differences between them. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/testing-portal.png" alt="Testing Distribution module in Appcircle" class="no-border" >}} + +## Read More + +* [Build a Mendix Native App with Appcircle](/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/) +* [Publish a Mendix Native App with Appcircle](/refguide/mobile/distributing-mobile-apps/publishing-with-appcircle/) diff --git a/content/en/docs/refguide/mobile/distributing-mobile-apps/publishing-with-appcircle.md b/content/en/docs/refguide/mobile/distributing-mobile-apps/publishing-with-appcircle.md new file mode 100644 index 00000000000..f1a2b02b9ee --- /dev/null +++ b/content/en/docs/refguide/mobile/distributing-mobile-apps/publishing-with-appcircle.md @@ -0,0 +1,141 @@ +--- +title: "Publish a Mendix Native App with Appcircle" +url: /refguide/mobile/distributing-mobile-apps/publishing-with-appcircle/ +weight: 27 +description: Describes how to use Appcircle's Publish module to submit your Mendix native app to the App Store or Google Play. +--- + +## Introduction + +Once you have [built your Mendix native app with Appcircle](/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/), you can publish it directly to the App Store or Google Play using Appcircle's built-in **Publish to Stores** module. This lets you manage the entire release pipeline — from build to store submission — within a single platform. + +{{% alert color="info" %}} +Please note that this documentation is provided as a guide only. Mendix offers support if issues arise with the Mendix build process itself, but cannot provide support for problems related to the Appcircle platform or other third-party tools described in this guide. +{{% /alert %}} + +## Prerequisites + +Before starting this guide, make sure you have completed the following: + +* Set up a build profile and built your app by following [Build a Mendix Native App with Appcircle](/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/) +* For iOS: have an [App Store Connect API key](https://developer.apple.com/documentation/appstoreconnectapi/creating-api-keys-for-app-store-connect-api) +* For Android: have a [Google Play service account key](https://developers.google.com/android-publisher/getting_started) + +## Set Up Store Connections {#store-connections} + +Before creating a publish profile, set up your store credentials under **Credentials** in the Appcircle organization settings. To access this: + +1. Click on your organazation icon in the bottom-left corner. +1. Select **Security** on the left panel. +1. Go to the **Credentials** section. +1. Choose the appropriate integration: + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/security.png" alt="Testing Distribution module in Appcircle" class="no-border" >}} + +**For iOS (App Store Connect):** + +1. Click **Add** under **App Store Connect Integrations**. +1. Provide a name for the integration (for example, `My App Store Connect`). +1. Upload your App Store Connect API Key (*.p8* file). +1. Enter the **Issuer ID** and **Key ID** from your App Store Connect API key details. +1. Save the integration. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/asc-credential.png" alt="Testing Distribution module in Appcircle" class="no-border" >}} + +**For Android (Google Play Console):** + +1. Click **Add** under **Google Play Integrations**. +1. Provide a name for the integration (for example, `My Google Play Account`). +1. Upload your Google Play service account JSON key file. +1. Save the integration. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/gcp-credentials.png" alt="Testing Distribution module in Appcircle" class="no-border" >}} + +{{% alert color="info" %}} +Additionally, Appcircle supports Huawei AppGallary and Microsoft Intune integrations. Same settings can be applied for these stores. Please visit Appcircle credentials [documentation](https://docs.appcircle.io/account/my-organization/security/credentials). +{{% /alert %}} + +Once these integrations are configured, you can use them when creating publish profiles. + +## Create a Publish Profile {#create-publish-profile} + +To create a publish profile, do the following: + +1. Go to the **Publish to Stores** module from the left navigation menu. +1. Choose your platform (**iOS** or **Android**). +1. Click **Add New**. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/publish.png" alt="Testing Distribution module in Appcircle" class="no-border" >}} + +**For iOS:** + +* **Option 1 - Create Profile Manually:** + 1. Select **Create Profile Manually**. + 1. Enter a **Profile Name** (for example, `My App - iOS`). + 1. Enter the **Bundle ID** (must exactly match the Bundle ID in your Xcode project and provisioning profile). + 1. Create the profile. + +* **Option 2 - Create From App Store Connect:** + 1. Select **Create from App Store Connect**. + 1. Choose the App Store Connect credential you configured in credential integrations. + 1. Select the app from the list of apps in your App Store Connect account. + 1. Appcircle automatically fills in the Bundle ID, app name, and other metadata. + + {{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/ios-profile-create.png" alt="Testing Distribution module in Appcircle" class="no-border" >}} + +**For Android:** + +* **Option 1 - Create Profile Manually:** + 1. Select **Create Profile Manually**. + 1. Enter a **Profile Name** (for example, `My App - Android`). + 1. Enter the **Package Name** (must exactly match the Package Name in your Android project). + 1. Create the profile. + +* **Option 2 - Create from Google Play Console:** + 1. Select **Create from Google Play Console**. + 1. Choose the Google Play Console credential you configured in credential integrations. + 1. Select the app from the list of apps in your Google Play Console account. + 1. Appcircle automatically fills in the Package Name and other metadata. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/android-profile-create.png" alt="Testing Distribution module in Appcircle" class="no-border" >}} + + +{{% alert color="warning" %}} +The Bundle ID (iOS) and Package Name (Android) cannot be changed after the profile is created. Make sure these are correct before saving. +{{% /alert %}} + +## Link the Publish Profile to Your Build Profile {#link-publish} + +To automatically send finished builds to the publish to stores module, do the following: + +1. Open the build profile in the **Build** module and go to the **Build Configuration** settings. +1. Navigate to the **Distribution** tab. +1. Enable the **Automatically Distribute to Publish** toggle. +1. Select the publish profile you created. +1. Save the configuration. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/publish-selection.png" alt="Testing Distribution module in Appcircle" class="no-border" >}} + +After this, completed builds will be sent to the publish profile where you can start the store submission flow. + +## Publish to the App Store or Google Play {#submit-to-store} + +Once a build appears in your publish profile, you can start the store submission process directly from Appcircle. For platform-specific walkthroughs, see the following Appcircle documentation: + +* [Publish Walkthrough for App Store](https://docs.appcircle.io/publish-to-stores-module/publish-walkthrough-for-app-store) +* [Publish Walkthrough for Google Play](https://docs.appcircle.io/publish-to-stores-module/publish-walkthrough-for-google-play) + +## Publish Report and Activity Log + +The Publish Report provides a detailed overview of all actions performed within the Publish to Stores Module. It allows users to monitor, filter, and export publish-related activities across different platforms, trigger types, and stores. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/publish-report.png" alt="Testing Distribution module in Appcircle" class="no-border" >}} + +You can also view Publish to Stores module actions such as Publish Flow and Publish Step statutes, along with resign binary operations within the Organizations or Sub Organizations in the Activity Log section. + +{{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/publish-activity.png" alt="Testing Distribution module in Appcircle" class="no-border" >}} + +## Read More + +* [Build a Mendix Native App with Appcircle](/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/) +* [Distribute a Mendix Native App with Appcircle](/refguide/mobile/distributing-mobile-apps/distributing-with-appcircle/) diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/add-build-profile.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/add-build-profile.png new file mode 100644 index 00000000000..69f4f21fb37 Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/add-build-profile.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/android-profile-create.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/android-profile-create.png new file mode 100644 index 00000000000..801a1b61dba Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/android-profile-create.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/apple-certificates.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/apple-certificates.png new file mode 100644 index 00000000000..6f6a2207d67 Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/apple-certificates.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/apple-profiles.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/apple-profiles.png new file mode 100644 index 00000000000..13fff5b1152 Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/apple-profiles.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/asc-credential.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/asc-credential.png new file mode 100644 index 00000000000..33a307faa95 Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/asc-credential.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/assign-code-signing.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/assign-code-signing.png new file mode 100644 index 00000000000..6ee9894ecb1 Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/assign-code-signing.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/build-logs.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/build-logs.png new file mode 100644 index 00000000000..99a1665595e Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/build-logs.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/env-groups.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/env-groups.png new file mode 100644 index 00000000000..d07a87247d8 Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/env-groups.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/env-selection.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/env-selection.png new file mode 100644 index 00000000000..1ccb7bdadbd Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/env-selection.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/gcp-credentials.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/gcp-credentials.png new file mode 100644 index 00000000000..0056873382a Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/gcp-credentials.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/ios-profile-create.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/ios-profile-create.png new file mode 100644 index 00000000000..a0ae2076f2e Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/ios-profile-create.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/publish-activity.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/publish-activity.png new file mode 100644 index 00000000000..f8757a9adcd Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/publish-activity.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/publish-report.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/publish-report.png new file mode 100644 index 00000000000..2f736cc797e Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/publish-report.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/publish-selection.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/publish-selection.png new file mode 100644 index 00000000000..49503f674e2 Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/publish-selection.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/publish.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/publish.png new file mode 100644 index 00000000000..e9744d7b12d Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/publish.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/security.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/security.png new file mode 100644 index 00000000000..10d6dc049cb Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/security.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/share-testers-details.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/share-testers-details.png new file mode 100644 index 00000000000..ab3a6fb673f Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/share-testers-details.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/share-testers.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/share-testers.png new file mode 100644 index 00000000000..0aea27f23f7 Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/share-testers.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/td-group-create.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/td-group-create.png new file mode 100644 index 00000000000..8863116bd82 Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/td-group-create.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/td-group-selection.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/td-group-selection.png new file mode 100644 index 00000000000..8f4a606a005 Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/td-group-selection.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/td-profile-selection.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/td-profile-selection.png new file mode 100644 index 00000000000..33da87a0656 Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/td-profile-selection.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/testing-distribution-module.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/testing-distribution-module.png new file mode 100644 index 00000000000..746b3fa5623 Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/testing-distribution-module.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/testing-portal.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/testing-portal.png new file mode 100644 index 00000000000..b54d5e32814 Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/testing-portal.png differ diff --git a/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/trigger-config.png b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/trigger-config.png new file mode 100644 index 00000000000..2b3947c8749 Binary files /dev/null and b/static/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/trigger-config.png differ