Set Native App Properties
Native app properties are divided into two categories: those that are common to all platforms, and those that are platform-specific. These properties range from the logo image your app displays to the types of screens and SDKs the app supports, and how certificates are handled.
In Volt MX Iris V9 SP 2, you can also enable certain Android features by manually adding the corresponding properties to the androidbuild.properties file.
To set Native app properties, follow these steps:
- In Volt MX Iris, from the Project Explorer, click Project Settings. The Project Settings window appears.
- Click the Native tab. A list of sub-tabs appears.
-
Click the General sub-tab, and set the following properties:
-
Enter a Name for the Native channel version of the application. If no name is specified, the Application ID specified under Application Properties is used.
Note: For iOS applications, if the Name of the app has non-English characters, you must add the
unicodeAppNameFlag: true
key in theinfoplist_configuration.json
file. -
From the Application Logo, you must browse and select an image file for the logo.
Important:* The logo you specify here will be renamed to
icon.png
while building the application on the iPhone platform. * For Desktop, the icon dimension must be in multiples of 8. Minimum pixels can be 8 x 8 and maximum pixels can be 248 x 248.
-
-
Click the Android sub-tab, and set the following properties:
-
Package Name: Package name is a unique name to identify a specific application. It is generally in the format
domain.company.application
.Note: The name you specify for Android Package must contain at least two segments.
A segment is a valid Java package name. The following are a few examples of valid Android Package names:
com.hcl.<ApplicationName>
com.voltmx.<ApplicationName>
com.voltmxsolutions.<ApplicationName>
com.voltmx.<ApplicationName>_Android
.- Version Code. This is an internal version number. This number is used to determine whether the application is a recent version. This version number is not shown to users. The value must be an integer. You can increase each version by one to indicate a newer version.
- In the SDK Versions section:
-
Select the Minimum SDK Version that needs to be supported for the application.
Note: The application must be built with a minimum version matching the device SDK version. For example, a device with 5.0 version of SDK cannot run an application built on 4.0.
-
Select the Target SDK Version that needs to be supported for the application.
Note: The Target SDK Version must be greater than or equal to the Minimum SDK Version.
-
Select the Maximum SDK Version that needs to be supported for the application.
- Signing - Use this option to sign the android binary automatically during the build process.
- Key Alias- Use this option to enter the alias of the key.
- Key Password - Use this option to enter the password for the key.
- Store File - Use this option to locate and configure the store file.
- Store Password - Use this option to enter the password for the store.
- Android Architectures Support
- Support x86 Devices - Select this option to support any Android-x86 devices.
-
Support 32-bit Devices - Select this option to build an Android APK with 32-bit support. Once you select this option, only 32-bit
.so
files (armeabi-v7a and x86) are packed and the application leaves out 64-bit.so
files (arm64-v8a and x86_64). If you do not select the Support 32-bit devices option, 64-bit libraries /.so
files (arm64-v8a and x86_64) are packed by default.Note: From Volt MX Iris V9 onwards, 64-bit APK’s are generated, by default.
Note: From August 1st 2019 onwards, all apps published on Google Play must support 64-bit architectures.
To support both 64-bit and 32-bit architectures in Google Play store, you must make sure that you perform the following actions:
- Build the 32-bit and 64-bit APKs with two different version codes, which are separated by at least 1000.
For example,64-bit version code = 32-bit version code + 1000
. - Ensure that the third-party libraries (
AAR
files) contain the respective.so
files in all supported architectures: lib/armeabi-v7a, lib/arm64-v8a, and lib/x86 lib/x86_64 for 32-bit and 64-bit architectures, respectively.
Note: To enable your application to be built with both 32-bit and 64-bit native libraries, refer to Support for 32-bit and 64-bit Architectures in a Single APK.
- Build the 32-bit and 64-bit APKs with two different version codes, which are separated by at least 1000.
-
In the Supported Screens section:
- Any Density - If this option is enabled, the application can accommodate any screen density for a resource. You do not have to use this option if your app directly manipulates bitmaps. Generally this option must always be set to true.
- Small Screens - If this option is enabled, the application supports smaller screen form-factors. A small screen is one with a smaller aspect ratio than the normal (traditional HVGA) screen. An application that does not support small screens is not available for small screen devices from external services (such as Google Play).
- Normal Screens - If this option is enabled, the application supports normal screen form-factors. Traditionally, this is an HVGA medium density screen, but WQVGA low density and WVGA high density are also considered to be normal.
-
Large Screens - If this option is enabled, the application supports larger screen form-factors. A large screen is defined as a screen that is significantly larger than a normal handset screen, and might require some special care on the application's part to make good use of it. The application may rely on resizing by the system to fill the screen.
If this option is unchecked, it enables screen compatibility mode.
-
Extra Large Screens - If this option is enabled, the application supports extra large screen form-factors. An extra large screen is defined as a screen that is significantly larger than a large screen, for example, tablet (or something larger) and may require special care on the application's part to make good use of it. The application may rely on resizing by the system to fill the screen. If the option is unchecked, this will generally enable screen compatibility mode.
- Resizable - If this option is enabled, the application is resizable for different screen sizes. This property is deprecated by Android SDK and is supported only for customers on the 2.6 plug-in. This property enables you to run an application in the compatibility mode. For more information, see Support Screen Elements for the Android App Manifest.
- In the Install Location section:
-
Use Location Preference. This property defines the location where the application is deployed.
- Auto - Indicates that the application is deployed on the device and can be moved to the SD Card later if required.
- Prefer SD Card - Implies that the application is deployed on the storage card and cannot later be moved to the device memory.
Note: This works only if the Minimum SDK is 2.3 or above.
-
In the Miscellaneous section:
- Enable Local Notifications - Select this option to enable notifications scheduled by an app and delivered on the same device. They are suited for the apps with time-based behaviors, such as calendar events.
- Enable Payment API - Selecting this option enables online transactions in applications.
- Use Google Play Location Services - Select this option to enable location service based on the Google Play Location Service API.
-
Support SQL DB Encryption (FIPS)- In Android, if you select this option, Volt MX Iris automatically bundles Federal Information Processing Standard (FIPS) compliant SQL Cipher third-party library with the application. After the application is complied with this option selected, the APIs in Web SQL support database encryption. For more info, see API Reference Guide > Offline Data Access APIs > Web SQL APIs.
-
Bundle OpenSSL Library- In Android, if you select Bundle OpenSSL Library option, Volt MX Iris automatically bundles a third-party OpenSSL native library along with the application. The following APIs use this OpenSSL library to support additional hashing algorithms than the algorithms supported by Native Android SDK (Java Implementation). For information on supported algorithms in these APIs, see API Reference Guide > Cryptography APIs.
-
Disable Application Screenshot - This option specifies whether the user can take a screenshot of your application.
- Enable File Upload - Enables you to upload files to a remote sever by using the HttpRequest API.
- ActionBar - Enabled only if target SDK is 3.0 or above. Use this option to enable Action Bar feature.
-
Network Trust Config - Using this option, you can control the certificates that are used.
- None - No certificates are allowed. This means that if the certificate is present in the Android Trust store, it will allow the N/W call to proceed; otherwise, it throws an exception. With this option, servers having non-trusted or self-signed certificates are not accessible via the app on the device.
- All - All types of certificates are allowed regardless of whether they are bundled. This option is useful during the development phase of an app, but not for publication. With this option, all servers are accessible regardless of the kind of certificate they hold (i.e. self-signed, non-trusted, trusted). Due to the lack of security inherent in this option, the Google Play store rejects such apps when they are submitted for publication.
-
Allow Bundled - Only the certificates that are bundled along with the app are allowed. With this option, the app can communicate only with servers that have the certificate(s) that are bundled with the app.
-
To bundle the certificate in the application, copy the certificate under the following folder: For mobile,
<workspace>/<app>/resources/mobile/native/android/assets/certs
. For tablet,<workspace>/<app>/resources/tablet/native/androidtab/assets/certs
Note: If an assets folder does not exist, create an assets folder under respective locations as indicated above.
Create certs directory under the assets folder and add all the certificates into this folder.Important: Allow Bundled option will not work in Android 2.3.x OS versions due to certificate chaining issue (causes certificate exception). This is a known Android native issue. For more information, see Issue 25152 on the Android Open Source Project Issue Tracker. Among other topics, Issue 25152 documents that to make the bundled option work in Android 2.3.x devices, the root CA needs to be omitted from the server end.
-
-
Allow Pinned - Only the certificates that are pinned or associated to the host. Pinning makes use of knowledge of the pre-existing relationship between the user and an organization or service to make the security-related decisions better.
- Splash Screen Orientation Mode - When resource folders are created from IDE by Add resource folders option, then directories like drawable-port and drawable-land are created automatically inside the directory
<workspace>/<app>/resources/mobile/native/android
.- Portrait - Use this option if splash screen support is required only for portrait mode, and copy it inside drawable-port folder.
- Landscape - Use this option if splash screen support is required only for landscape mode, and copy it inside drawable-land folder.
- Both - Use this option if splash screen support is required for both modes. If splash screen images are different images, then place the image in their respective directories. If you use same image for both modes, then copy the resources under
mobile > native > android
instead of drawable-port or drawable-land folder.
- In Push Notification section:
- GCM - Select this option to enable Push Notifications for the application. This option copies the libraries required for push notification into the project during build time.
- Splash Screen Orientation Mode - When resource folders are created from IDE by Add resource folders option, then directories like drawable-port and drawable-land are created automatically inside the directory
Important: GCM (Google Cloud Messaging) is supported only for Android SDK Versions 2.3 and above.
- Custom GCM Broadcast Receiver (Optional) - If your application requires to override the default GCM broadcast receiver behavior, you can provide your own custom broadcast receiver. To customize the GCM receiver, see Customizing GCM Broadcast Receiver. * FCM Select this option to enable Push Notifications for the application. This option copies the libraries required for push notification into the project during build time.
-
Custom FCM Service (Optional) - If your application requires to override the default FCM service, you can provide your own custom FCM service. To customize the FCM service, see Customizing FCM Service.
- In Manifest Properties section:
- Permissions tab: Set the permissions to true or false based on the application requirements. Set the appropriate permissions for Android Manifest file. For more information, see The Android Manifest File.
- In Manifest Properties section:
-
To enable permissions, select the permissions from the left pane and click Add >.
-
To disable permissions, select the permissions from the right pane and click < Remove.
Important: Add the
WRITE_EXTERNAL_STORAGE
setting if you need to save images in an external storage like SD Card.
-
Tags tab: You can add tags to the Android manifest file directly from Volt MX Iris by specifying tag entries and attributes on the Tags tab. You can specify child tag entries and attributes for
and tags, and the Main Launcher tag. For more information on the tags you can add with the manifest or application tags, see http://developer.android.com/guide/topics/manifest/manifest-intro.html.
For more information on the tags you can add, see http://developer.android.com/guide/topics/manifest/manifest-intro.html.
- Gradle Entries tab: You can use the Gradle Entries tab to import additional gradle packages, apply external plugins, or specify build-related configuration information, build dependencies, or the location of any external repositories or modules used by your Android application.
You can specify build.gradle entries as a prefix or suffix entries:
-
Prefix entries are added just below any existing import statements in the build.gradle build script file. Use prefix entries to import additional gradle packages, or to specify external plugins to use in the build.
-
Suffix entries are appended to the end of the generated build.gradle file. Use suffix entries to customize build logic; for example, to add compilation dependencies such as Google and Android support repositories, local library modules, or local and remote repository paths. For more information, see Organizing Build Logic.
Use the gradle.properties entry to configure project-wide Gradle settings, such as the Gradle daemon's maximum heap size or proxy settings. For more information, see The Build Environment.
Use the settings.gradle entry to specify external modules (Gradle-based third-party Android libraries) to include when building your application. For more information, see Configure Your Build.
-
-
Under iPhone/iPad/Watch tab, set the following properties:
- Bundle Identifier - Provide an unique name that identifies