Although there are many app markets for distributing an application, Google Play is arguable the largest and most visited store in the world for Android apps. Google Play provides a single platform for distributing, advertising, selling, and analyzing the sales of an Android application.
This section will cover topics that are specific to Google Play, such as registering to become a publisher, gathering assets to help Google Play promote and advertise your application, guidelines for rating your application on Google Play, and using filters restrict the deployment of an application to certain devices.
To distribute an application through Google Play, a developer account must be created. This only needs to be performed once, and does involve a one time fee of $25USD.
All applications need to be signed with a cryptographic key that expires after October 22, 2033.
The maximum size for an APK published on Google Play is 50MB. If an application exceeds that size, Google Play will allow extra assets to be delivered through APK Expansion Files. Android Expansion files permit the APK to have 2 additional files, each of them up to 2GB in size. Google Play will host and distribute these files at no cost. Expansion files will be discussed in another section.
Google Play is not globally available. Some locations may not be supported for the distribution of applications.
Becoming a Publisher
In order to publish applications on Google play it is necessary to have a publisher account. To sign up for a publisher account follow these steps:
- Visit the Google Play Android Developer console at https://play.google.com/apps/publish.
- Enter basic information about your developer identity.
- Read and accept the Developer Distribution Agreement for your locale.
- Play the $25 USD registration fee.
- Confirm verification by e-mail.
- After the account has been created it is possible to publish applications using Google Play.
Google Play does not support all countries in the world. The most up to date lists of countries can be found in the following links:
- Supported Locations for Free Publishers – This is a list of all countries where developers may register as publishers.
- Supported Locations for Merchants – This is a list of all countries where developers may register as merchants and sell paid applications.
- Supported Locations for Distributing Applications – This is a list of all countries where applications may be distributed.
Preparing Promotional Assets
In order to effectively promote and advertise an application on Google Play, Google allows developers to submit promotional assets such as screenshots, graphics, and video to be submitted. Google Play will then use those assets to advertise and promote the application.
A launcher icon is a graphic that represents an application. They should be a 32-bit PNG with an alpha channel for transparency. An application should have icons for all of the generalized screen densities as outlined in the table below:
36 x 36 px
48 x 48 px
72 x 72 px
96 x 96 px
Launcher icons are of the first thing that a user will see of an application on Google Play, so care should be taken to make the launcher icon visually appealing and meaningful.
Tips for Launcher Icons:
- Simple and uncluttered – Launcher icons should be kept simple and uncluttered. This means excluding the name of the application from the icon. Simpler icons will be more memorable, and will easier to distinguish at the smaller sizes.
- Icons should not be thin – Overly thin icons will not stand out well on all backgrounds.
- Use the alpha channel – Icons should make use of the alpha channel, and should not been full-framed images.
High Resolution Application Icon
Applications on Google Play require a high fidelity version of the application icon. It is only used by Google Play, and does not replace the application launcher icon. The specifications for the high-resolution icon are:
- 32-bit PNG with an alpha channel
- 512 x 512 pixels
- Maximum size of 1024KB
The Android Asset Studio is a helpful tool for creating suitable launcher icons and the high-resolution application icon.
Google play requires a minimum of two and a maximum of eight screen shots for an application. They will be displayed on an application’s details page in Google Play.
The specs for screen shots are:
- 24 bit PNG or JPG with no alpha channel
- 320w x 480h OR 480w x 800h OR 480w x 854h. Landscaped images will be cropped.
This is an optional image used by Google Play.
- It is a 180w x 120h 24 bit PNG or JPG with no alpha channel
- No border in art.
Used by the featured section of Google Play. This graphic may be displayed alone without an application icon.
- 1024w x 500h PNG or JPG with no alpha channel and no transparency.
- All of the important content should be within a frame of 924x500. Pixels outside of this frame may be cropped for stylistic purposes.
- This graphic may be scaled down: use large text and keep graphics simple.
This is a URL to a YouTube video showcasing the application. The video should be 30 seconds to 2 minutes in length and showcase the best parts of your application.
Uploading the APK
Once the APK has been compiled and the promotional assets prepared the application must be uploaded to Google Play. This is done by logging in to the Google Play Android Developer Console, pictured below:
Clicking on the Upload Application button will initial the process of distributing an application by displaying a dialog to upload an APK:
Upload the release-ready APK that is to be distributed and any APK expansion files that may be required by the application. Once the APK is uploaded, it is saved as a draft. It cannot be published until more details are provided to Google Play. The product details page is broken up into several sections to capture this information; each described in more detail below.
All of the promotional assets that were prepared are uploaded in this section. This section does contain mandatory fields. The page does provide guidance as to what promotional assets must be provided and what format they should be provided in. A screen shot of the Upload Assets section appears below:
The section is used to enter the information that Google Play will display to potential users of the application. It is also where supported languages may be specified, and the application can be categorized.
This section is used to specify options that can affect what devices will be able to download the application, such as:
- Copy Protection – This is deprecated. If an application needs to enforce licensing policies then the Google Licensing Services should be used instead. The Google Licensing Services will be discussed in more detail later on in this document.
- Content Rating – Google Play requires that all applications specify a content rating. Guidelines for content rating will be discussed later on in this document.
- Countries Distribution – This allows control over what countries an application may be distributed to.
- Pricing – This option allows a price to be set for paid applications, or the application can be distributed free of charge to all users. Once an application is specified as free, it must remain free. Google Play will not allow an application that is free to change to a priced app. It is possible to sell content with in-app billing with a free app. Google Play will allow a paid app to change at any time to a free app.
The following screenshot shows a sample of the Publishing Options for an application:
This section is used to collect contact information about the developer of the application.
Enable Google Cloud Messaging Stats
This is an optional section. If the application makes use of Google Cloud Messaging or the now deprecated Cloud 2 Device Messaging, the ID’s or tokens would be entered here.
This is a mandatory section and is used to declare that the application meets the Android Content Guidelines and acknowledgement that the application is subject to U.S. export laws
Guidelines for Content Rating
All applications on Google Play must be rated according to the Google Play ratings system. In addition to the content rating, all applications must adhere to Google’s Developer Content Policy.
The following table shows the four levels in the Google Play rating system and provides some guidelines as features or content that would require or force the rating level.
May not access, publish, or share location data.
May not host any user-generated content.
May not enable communication between users.
Applications that access, but do not share, location data
Depictions of mild or cartoon violence
References to drugs, alcohol or tobacco.
Gambling themes or simulated gambling
Profanity or crude humor.
Suggestive or sexual references.
Intense fantasy violence
Allowing users to find each other
Allowing users to communicate with each other.
Sharing of a user’s location data
A focus on the consumption or sale of alcohol, tobacco, or drugs
A focus on suggestive or sexual references
The items in Medium maturity list are subjective. As such it is possible a guideline that may seem to dictate a Medium maturity rating may be intense enough to warrant a High maturity rating.
Google Play Filters
When users browse the Google Play website for applications, they are able to search all published applications. When users browse Google Play from an Android device, the results are slightly different. The results will be filtered according to compatibility with the device that is being used. For example, if an application must send SMS messages, then Google Play will not show that application to any device which cannot send SMS messages.
The filters that are applied to a search are created from the following:
- The hardware configuration of the device.
- Declarations in the applications manifest file.
- The carrier that is used (if any).
- The location of the device.
The following table shows the manifest elements and attributes that can be used to filter applications:
Google Play will use the attributes to determine if an application can be deployed to a device based on the screen size. Google Play will assume that Android can adapt smaller layout to larger screens, but not vis-versa. So an application that declares support for normal screens will appear in searches for large screens, but not small screens.
If a Xamarin.Android application does not provide a <supports-screen> element in the manifest file, then Google Play will assume all attributes have a value of true and that the application supports all screen sizes.
This element must be added to AndroidManifest.xml manually.
This manifest element is used to request certain hardware features such as the type of keyboard, navigation devices, a touch screen, etc.
This element must be added to AndroidManifest.xml manually.
This manifest element declares hardware or software features that a device must have in order for the application to function.
This attribute is informational only. Google Play will not display the application to devices that do not meet this filter. It still possible to install the application by other means (manually or downloading).
This element must be added to AndroidManifest.xml manually.
This element specifies that certain shared libraries must be present on the device, for example Google Maps.
This element may also be specified with the Android.App.UsesLibaryAttribute. For example:
[assembly: UsesLibrary("com.google.android.maps", true)]
This element is used to infer certain hardware features that are required for the application to run that may not have been properly declared with a <uses-feature> element.
For example, if an application requests permission to use the camera, then Google Play assumes that devices must have a camera, even if there is no <uses-feature> element declaring the camera.
This element may be set with the Android.App.UsesPermissionsAttribute. For example:
The element is used to declare the minimum Android API Level required for the application.
This element may set in the Xamarin.Android options of a Xamarin.Android project.
This element is used to filter applications that do not match the screen size and density specified by this element.
Most applications should not use this filter. It is intended for specific high performance games or applications that required strict controls on application distribution. The <support-screen> attribute mentioned above is preferred.
This element is used to declare GL texture compression formations that the application requires.
Most applications should not use this filter. It is intended for specific high performance games or applications that required strict controls on application distribution.