General Changes To The Android Target - EA 1.99.460+

From Early Access 460 and then 1.4.1675 onwards there have been a number of significant changes made to the Android target module. In this article we explain what those changes are, the reasons behind them, and how they may affect your setup or your game.

3rd Party APIs As Extensions

From now on, all third party APIs will be farmed off to separate extensions, downloadable from the GameMaker: Marketplace. This move allows us to improve compile time, reduce the size of the generated packages and makes it much simpler for us to update these SDKs as new versions are released. In moving the formerly bundled SDKs out to extensions, some of the ways to call these functions have changed which may mean that you need to change your code. Old calls to ad_enable() etc... will need to be replaced by specific calls for the appropriate extension, as defined in each of the extensions. This allows you to pick and choose which service you wish to use and when – want to display a Millennial Media interstitial between levels but use Admob for banners? Not a problem. It will also allow us to support more options such as logging in and posting achievements with GameCircle / Google Play Services / Game Center from the same package and that you will be able to offer your players the choice of which service to use at runtime.

What this means is that if you tick any of the following Android services then you will be prompted to download and install the extension for the service from the GameMaker: Marketplace (those that are applicable to iOS have been marked too):

  • Moga Controllers
  • Facebook (iOS/Android)
  • Push Notifications
  • Google Play (leaderboards, achievements, etc...)
  • Google Cloud Saving
  • Google Licencing
  • Google APK Expansion

Note that installing any one of the Google Services listed above installs them all, but you still need to tick the checkbox in the GGS to use them. Also note that the Google Services extension also has the Google Mobile Ads extension and functions included with it.


A less obvious change to the Android target is that Android builds now use Gradle rather than Ant for building. Why have we made this change? Well, Google are withdrawing their support for Ant as a build environment and Gradle also gives us a more flexible build environment and down the line will allow us to use Android Studio for debugging Android apps.

In reality this should mean no change at all to the way you do things, but you may notice that the first time you do an Android or Amazon Fire build using the Early Access version of GameMaker: Studio that Gradle will install itself. All you need to do is ensure that you have the Android Support Repository in Android SDK Manager\Extras installed (you can see where in the screenshot below). It would be advisable to also update to the latest Android SDK Build Tools, Android SDK Tools and Android SDK Platform-Tools from the Android SDK Manager.


One added step that the Gradle build does is to run lint analysis on your built project. This can reveal errors and warnings that would have compiled fine under ant but that really should be fixed, as well as warnings that can be safely ignored. It generates a report to the directory {CacheDir}/{ProjectName}/Android/{Conifiguration}/{PackageName}/build/outputs/lint-results.html or .xml - this path is shown in the compile output. Warnings shown from our code are being worked on and will be eliminated over subsequent releases.

New Build Options

New options have been added to the Android Global Game Settings give you greater control over the build process - you can specify which version of the Build tools you are using as well as which SDK version is being used to compile. Generally you will want to use the latest build tools available and the latest SDK for Target and Compile unless you have a project with a specific need for an alternate version.


No More Runner

com.yoyogames.runner is no more – more and more functionality is dependant on having the correct package name and signing certificate: Google Play services, Facebook, and Amazon Gamecircle won’t work with the runner as it was, so we have now moved to build a runner that uses your keystore, your package name with your options when you first choose run. This is installed with a display name of <YourProjectName> (as Yoyo Runner) and has the same functionality as the existing runner but will allow you to use functionality that wouldn’t work with the old runner. This change brings Android into line with iOS, which for a while now has used your package identifier and built a custom runner which would support third-party services.

Have more questions? Submit a request


Article is closed for comments.