Chapter 5. Publishing Apps
5.1. Submitting an App to Google Play
- A 'Release' app (APK file) is built either from the Platform or using Android Studio
The developer has a high resolution application icon file
- 512x512 JPEG or 24 bit PNG (no Alpha)
The developer has at least one screenshot of the app
- 320x480 or 480x854 JPEG or 24 bit PNG (no Alpha) format
Screenshots must be full bleed, have no border and landscape thumbnails will be cropped. All measurements WxH for example, 320wx480h
There are a number of steps for publishing an app to Google Play, all of which are done with a web browser. They are:
Upload an Application
- Upload Assets
- Listing Details
- Publishing Options
- Contact Information
5.1.3. Uploading an Application
Log into Google Play at https://play.google.com/apps using your Developer Login
- You will be presented with a list of apps you already have in Google Play
- Click on the Upload Application button
- You will now be brought to the Upload an Application Screen
5.1.4. Upload Assets
Draft application APK file
- Upload your APK file
- Upload your screenshot(s) -- JPEG or 24-bit PNG (Alpha Transparency is unsupported)
High Resolution Application Icon
- Upload your App Icon — JPEG or 24-bit PNG (Alpha Transparency is unsupported)
- This is optional to be used in Google Play on devices with 1.6 or higher
- This is optional
- This is optional to supply a YouTube URL to your promotional video
- There is also the option to opt out of Google marketing/ promoting your app
5.1.5. Listing Details
- Select the Language for your app
- The name for your application as it will appear in Google Play
- Enter the description of your to appear in Google Play
- Enter the changes as you are uploading updates of your application
- This will be used in conjunction with the Promotional Graphic
- Select the type of application it is "Applications" / "Games"
- Select the category you want the app to be displayed in based on choice of application type
- News & Weather
- Software libraries
- Arcade & Action
- Brain & Puzzle
- Cards & Casino
- Price is automatically set to Free. If you want to charge for apps you must set up a merchant account at Google Checkout.
5.1.6. Publishing Options
- Protect apps being copied from the device - Soon to be deprecated and superceded by the Licensing Service
- Select Google Play markets you want the app to appear in
5.1.7. Contact Information
- Your website URL
- Your Email address
- Your phone number
You must verify that the application meets the Android Content Guidelines and that your app may be subjected to US laws regardless of your location or nationality and that, as such, your application is authorised for export from the US under these laws.
Finally, You must choose to Save what you have entered, delete what you have entered or Publish the application (This will publish the app and make it available in Google Play)
5.2. Submitting an App to the Apple App Store
This guide assumes that a number of things have already been done by the developer. They are:
- A 'Release' App has been built either from the Platform or using xCode
The developer has 2 icon files for the application
- 57x57 PNG format
- 512x512 PNG format
- The developer has at least one screenshot of the app 320x480 PNG format
There are a number of steps for publishing an app to the iPhone App Store, all of which are done with a web browser. They are:
- Create a new Application
- Set up any in-app purchasing
- Submit Application for Sale
5.2.1. Creating a new Application
Log into iTunes Connect at http://itunesconnect.apple.com using your Developer Login (that is, email address)
- Click on Manage Your Applications
- Click on Add New Application
- Select a choice for the "Export Laws and Encryption" question
- Fill in the Overview section using your app details
- Select a choice for "Restrict this binary to a specific platform" question
- Enter a Version Number for example, 1.0
- Enter a unique value for the SKU Number: for example, the current date and time
- Click the (blue) Continue button at the end of the screen.
- Select the appropriate check boxes for you application
- Click (blue) Save Changes button
- Click the Upload application binary later option
- Upload the icons and screen shots mentioned in the Prerequisites (Large Icon and Primary Screen Shot are mandatory). TIP: When adding additional screen shots, you may like to select them in reverse order so that they appear in the correct order when added by the uploader (which seems to add/upload them in the opposite order that you selected them).
- Click the (blue) Continue button
- Choose the appropriate language for you app
- Click the Continue button
- Choose the Availability Date (Start Date) of your app for example, today
- Choose the appropriate Price Tier
- Select the stores you want your app to be available in and continue
- Choose the appropriate review store (for example, the country your company resides in)
- Click the (black) Submit Application button.
5.2.2. Submit Application for Sale
Upload Application Binary
- Once logged into iTunes Connect, click Manager your Applications
- Click the application you want to submit for approval by Apple (Note the current status should be orange, indicating the Application binary is yet to be uploaded)
- Click the Upload Binary button (The maximum binary size accepted is 64MB)
- Click Choose File and locate your binary zip file mentioned in the Prerequisites.
- Click Upload File
- Click the Save Changes button in the bottom right
Confirm Review App Store
- Click Manager your Applications
- Click your application that was submitted for approval
- Click the Edit Information button and open the Review Tab
- Verify that the Review App Store is set to the country selected while creating the application (necessary due to a suspected bug in iTunes Connect)
- Click Done and your application is now ready for approval by Apple
5.3. App Credentials Bundles
A Credentials Bundle consists of a number of resources needed to perform a particular build. Here, the different resources are listed, along with a brief explanation of their purpose.
When performing build operations, a Credentials bundle can sometimes be required (depending on the build). A Credential bundle is a combination of resources, such as certificates, provisioning profiles, and private keys, necessary for performing specific types of builds, be it a development build, distribution build, debug build etc. Depending on both the platform, and the build type, different resources will be grouped together to constitute a bundle.
Listed below is a breakdown of resources that can be added to a Credentials Bundle, along with a brief description of what they are used for.
188.8.131.52. All Platforms
- This is a file whose contents are known only to the owner. During the app building process, the app is digitally signed using this key. This means the developers digital signature is left on the App, allowing the App to be tied back to the developer.
184.108.40.206. Android Only
- Android Distribution Certificate - Used to build Apps for upload to the Google Play Store. This certificate is used to identify you as the developer upon upload to the market.
keytoolto create a signing key:
keytool -genkey -v -keystore redhat.keystore -alias rhmap -keyalg RSA -keysize 2048 -validity 10000
Export the java keystore key intp pkcs#12 format:
keytool -importkeystore -srckeystore redhat.keystore -destkeystore rhmap.p12 -deststoretype PKCS12 -srcalias rhmap
Extract the Distribution Certificate:
openssl pkcs12 -in rhmap.p12 -nokeys -out rhmap-cert.pem
Extract the Private Key
openssl pkcs12 -in rhmap.p12 -nodes -nocerts -out rhmap-key.pem
Private Key is
- Private Key is
220.127.116.11. iOS Only
iOS Development Certificate
- Used to run an iOS App on devices during development.
iOS Distribution Certificate
Used for submitting your iOS App to the App Store, and for distributing the App for On-Device testing. This is also used to identify you as the developer.Warning
If you encounter this problem, refer to the Red Hat Knowledge Base article Swift-based iOS application crashes upon startup when signed using an enterprise distribution certificate without Organisational Unit field for detailed instructions on how to resolve the problem.
- Necessary in order to install development applications on iOS devices.
5.3.2. Apple Developer and Enterprise Accounts
In order to publish an app in the Apple App Store you must have an active apple account (developer or enterprise). This account will need to be renewed annually in order for associated apps to continue to be available in the App Store.
18.104.22.168. Developer Account
A developer account is used create an iOS distribution certificates used to publish apps to the apple App Store.
When a distribution certificate expires, if the iOS Developer account is still active, existing apps on the App Store will not be affected, they will continue be available within the App Store and apps already on device will continue to function as expected.
22.214.171.124. Enterprise Account
An enterprise account is used to create (in-house) distribution certificates which are needed to publish apps to the RHMAP app store or customer in-house MDM.
When an existing in-house certificate expires all apps built with that certificate will not run and further installs of this version of the app will not be possible.
The app will need to be rebuilt, signed with a new certificate, republished to the relevant store and then re-downloaded by all users.
126.96.36.199. iOS Certificate Renewal
Apple enterprise and developer certificates must be recreated every three years.
The customer email address associated with the developer account will receive advance notification of the impending renewal requirement.
While Red Hat might have been involved in assisting a customer with the initial setup of an Apple developer or enterprise account the ownership and responsibility for the apple account and the certificates created remains with the customer.
Upon receiving the certificate expiry notification it is recommended that the customer proactively renew the certificate in order to avoid interruption to their apps availability.