> For the complete documentation index, see [llms.txt](https://docs.servoy.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.servoy.com/reference/servoy-cloud/cloud-control-center/application-overview/applications/pipelines/jobs/job-configuration/mobile.md).

# Mobile

## Mobile Job Properties

A Mobile job in Cloud Control Center builds and signs your Servoy NG Mobile application for iOS or Android distribution. Properties are split into four main categories:

* [**Package**](#package)
* [**Environment**](#environment)
* [**Plugins**](#plugins)
* [**Appstore**](#appstore)

## Package

### Name

The display name of the mobile application

### Appstore ID

The ID as it will be known in the Appstore, i.e. "com.my-company.xyz"

### Version

The version of the app, i.e. "1.4.2"

### Description

A simple description of the application

### Author

The name of the app Author

### Author Email

The email address of the app Author

### Icon

Optional. An icon that will represent your mobile app.

## Environment

### Application URL

The URL of the deployed NG Mobile application. Can be ServoyCloud environment URLs or self-hosted.

### Mobile build/deploy type

The types of OS that will be supported.

**Options**

* Android Debug - Selected by default when creating mobile job
* Android for playstore
* iOS

## Plugins

### Google Service-info.plist

File upload required when using FCM push notifications from the Used plugins list below. This file can be found in the Firebase console.

### Google Service.json

File upload required when using FCM push notifications from the Used plugins list below. This file can be found in the Firebase console.

### Lock Display Orientation

Locks the display to a portrait or landscape orientation. If your application is developed to be used in portrait orientation, lock display orientation to ensure a seamless experience.

### Used Plugins

Available plugins, according to the operating system:

* Bar Code Scanner
* Camera
* Camera Preview
* Clear Text Traffic (Android Only)
* FCM Push Notifications (Requires Google service files)
* Fingerprint
* Full screen
* In-App Browser
* Launch Navigator
* Location
* Network Information
* Network Interface
* Printer
* Screen Orientation
* QR Code Scanner
* Vibration

### App Store Usage Descriptions

When you enable plugins in a Servoy Cloud mobile job that require device permissions (Camera, Location, etc.), Apple and Google require your app to include a human-readable explanation of why the permission is needed. This text is shown to the user when the app requests permission for the first time.

Apple is strict about this. If your purpose string is too generic (e.g. "Requests permission to access your location"), Apple will reject your app submission under Guideline 5.1.1(ii). You need to provide a specific description that explains how your app uses the data.

{% hint style="info" %}
In Cloud Control Center, usage descriptions are configured per application, not at the solution-wide plugin level.
{% endhint %}

To configure the usage description for a plugin, go to **Applications** > your app > **Pipelines** > your mobile job. In the **Plugins** section, click the edit icon next to the plugin that requires a permission (e.g. Location, Camera). Enter a description that clearly explains why your app needs this permission, including a concrete example of how the data is used.

**Examples of good usage descriptions:**

| Plugin   | Example                                                                                                                     |
| -------- | --------------------------------------------------------------------------------------------------------------------------- |
| Location | "This app uses your location to verify that clock-in and clock-out actions are performed from an authorized work location." |
| Camera   | "This app uses the camera to scan barcodes for inventory management."                                                       |

{% hint style="warning" %}
Keep the description specific to your app. Generic text like "This app needs access to your location" will be rejected by Apple during App Store review.
{% endhint %}

The following iOS Info.plist keys are set by these descriptions:

| Plugin                | iOS plist key                                  |
| --------------------- | ---------------------------------------------- |
| Location              | `NSLocationWhenInUseUsageDescription`          |
| Location (background) | `NSLocationAlwaysAndWhenInUseUsageDescription` |
| Camera                | `NSCameraUsageDescription`                     |

## Appstore

### Android Keystore

File upload of Java .keystore file, required for signing of APK

### Android Key Password

Java .keystore password, required for signing of APK

### Android Keystore Alias

Java .keystore alias, required for signing of APK

### Configure Android keystore

To create a Java keystore file and generate an Android keystore password and alias for signing an APK, you can follow these steps:

1. **Open a Command Prompt or Terminal:** You can use your computer's command-line interface to generate the keystore file.
2. **Navigate to the Java JDK Bin Directory:** You should have the Java Development Kit (JDK) installed on your computer. Open a command prompt or terminal and navigate to the bin directory of your JDK installation. This is usually located at C:\Program Files\Java\jdk1.x.x\bin on Windows or /usr/lib/jvm/java-x-openjdk-amd64/bin on Linux.
3. **Generate a Keystore File:** Use the keytool command to generate a keystore file.
   * **-alias**: The alias for your key entry.
   * **-validity**: The validity period of the keystore in days.
   * **-keysize**: The key size (2048 bits is recommended).
   * **-keyalg**: This specifies the algorithm to generate the key pair (RSA in this case).
   * **-keystore**: This is the name of your keystore file.

Here's the basic command to create one:

{% code fullWidth="false" %}

```bash
// keytool -genkeypair -v -keystore my-release-key.keystore -keyalg RSA -keysize 2048 - validity 10000 -alias my-key-alias
```

{% endcode %}

4. **Store Your Keystore Securely:** Once the keystore is generated, make sure to store it securely because losing it means you won't be able to update your app.
5. **Enter Information:** You will be prompted to enter various information, including your name, organization, and a keystore password. Make sure to remember the keystore password; you'll need it later to sign your APK.

***

### iOS Certificate

File upload of .p12 certificate file, required for signing of IPA.

### iOS Certificate Password

.p12 certificate password, required for signing of IPA

### iOS Provision file

File upload of .mobileprovision file, required for signing of IPA. This is your provisioning profile that specifies which devices can run your app during development. It also contains information about the App ID and certificate.

### Configure iOS Certificate and Provision

1. **Apple Developer Account:**

   Ensure that you have an Apple Developer account. You will need this to create and manage certificates and provisioning profiles.
2. **Create an App ID:**
   1. Log in to your Apple Developer account.
   2. Go to the "Certificates, Identifiers & Profiles" section.
   3. Under "Identifiers," create an App ID for your app. Make sure it matches your app's Bundle Identifier.
3. **Create a Development Certificate:**
   1. In the "Certificates" section, under "Development," click the "+" button to create a new certificate.
   2. Follow the on-screen instructions to create a Certificate Signing Request (CSR) using Keychain Access on your Mac.
   3. Upload the CSR to generate the development certificate.
4. **Create a Provisioning Profile:**
   1. In the "Profiles" section, under "Development," click the "+" button to create a new provisioning profile.
   2. Select "iOS App Development" as the type.
   3. Choose the App ID you created earlier.
   4. Select the development certificate you just created.
   5. Choose the devices you want to use for testing (iOS devices must be registered in the Developer Portal).
   6. Give your provisioning profile a name and generate it.
5. **Download the Provisioning Profile:**

   After generating the provisioning profile, download it to your Mac. This will generate your **.mobileprovision** file.
6. **Export the Development Certificate:**
   1. Open Keychain Access on your Mac.
   2. Under "My Certificates," locate your iOS Development certificate.
   3. Right-click on it and choose "Export."
   4. Save it in .p12 format and set a password for it. This will generate your **.p12 file**


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.servoy.com/reference/servoy-cloud/cloud-control-center/application-overview/applications/pipelines/jobs/job-configuration/mobile.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
