• Hello [name]! Thanks for joining the GMC. Before making any posts in the Tech Support forum, can we suggest you read the forum rules? These are simple guidelines that we ask you to follow so that you can get the best help possible for your issue.

Android [SOLVED] Apk Optimization

I desperately need help figuring this issue out. I'm about to release a game apk to the play store, and decided to upload it for internal testing first. But what I'm faced with after uploading the apk which I built using YYC baffled me. I'm at lost what to do about this issue.

This is the message I receive from GPS;

And this is the url link they provided : https://developer.android.com/guide/app-bundle/

What should I do about this? I can't review and release it for internal testing. I doubt I'll be able to release it to the public (play store) with this being the requirement.

My guess would be there maybe many sdk, extensions, permissions, or something that's compiled into the apk during the VM/YYC process by default despite I didn't tick for it to be in there.

I think GMS2 need to have a feature to allow us to self decide what to add or remove from our project, and not force us to add unused files into the built apk - bloating the size needlessly. E.g. it's ridiculous to have the advertisement (admob) SDK bundled into the apk, when we don't implement any ads in the apk, or why make users give location permission when the app is for offline use. GPS will flag its presence, and will ask for us to clarify, e.g. if there's ads or not since that SDK was detected. Same goes with other permissions, we shouldn't be force to have it in the apk when we don't use it and again needlessly see our apk size bloated.

For now, does anyone know how to easily trim the apk of those unused files? Maybe a step by step guide, please. Thank you.
 

Nocturne

Friendly Tyrant
Forum Staff
Admin
Are you using any extensions in your project? If you are then you may need to remove the parts that you don't need, for example, if you have installed the Google Services extension but aren't using ads, then the admob part should be removed before building.

EDIT: Also, is this actually preventing you from uploading the APK? Or is it just a warning and you can ignore it?
 
Yes, there's the Play Store License extension in the project. I don't use any other extension besides that one from the MarketPlace. How do I remove other Google Service SDKs from the project which I've notice got flagged in my past apks despite I didn't add it into my project extension.

I can upload the apk to the play console, but it receive the red triangle error message telling me the message shown above, and I can't roll out the apk for internal testing.
 
The apk is registered as 82MB on the Play Console.

Edit 1: the project size is merely 19MB
Edit 2: I've no variables or anything that's reference only once in my project.
Edit 3: add below image (see the start roll out button is grayed);
 
Last edited:

Nocturne

Friendly Tyrant
Forum Staff
Admin
One last thing... What are your sound settings? Do you have the music set to uncompressed by any chance? If so, then you really should be using a compressed format from the Sound Editor for music files, as uncompressed is known to cause bloat in the final APK, which in turn could be triggering this warning. If that doesn't help, then could you please file a bug report and include a link to this topic as well as a link for the devs to download a YYZ of the project from? They will need to see the project to determine if it's something you (or GameMaker) is doing wrong, or if it's a policy change from Google Play. Thanks!
 
Didn't know that. But yes, 3 out of 4 ogg files used are uncompressed. I just rebuilt it as YYC with the changes, it's now 13MB - compare to previous 82.3MB. If I remove some of the architecture build ticked - limit to just 1, it's down to 10MB. I tried increasing the min API to 20 from 19 as well. But nope, doing all these still result with the same error message. It insist on optimizing using the app bundle (same condition as the above images).

This is too irritating. I'm going to try jump to Production Track and launch it to the public. If it still fails, something need to be fixed immediately with this IDE to accommodate the above documentation's demand. It's just too weird of an issue and beyond my ability to resolve. I even tried out of curiosity and frustration to open the project using Android Studio, LOL.

Edit:
Just did the Production Track, nope, disappointment. A solution need to be made by GMS to address this requirement swiftly otherwise the forum and HelpDesk will be flooded with unhappy users.

This issue is very likely not from my project, since I've successfully reduce the size from 82.3MB to 10.8MB using what's in my disposal. The issue I believe is that requirement mentioned by the Play Console, and whatever unimplemented sdk/permissions built into the apk by GMS2's compiler.

To be honest, I'm very disappointed to miss my target release date because of this issue. Which I don't think YoYo would be able to fix swiftly. I hope someone able to come up with a temporary fix to solve this issue. Maybe use that documentation and build a workaround using the "bundletool".
 
Last edited:

Nocturne

Friendly Tyrant
Forum Staff
Admin
I would certainly check out the bubdle tool docs and see if that can help you. Unfortunately, Google, Apple, et-all often introduce changes to the build/package/upload pipeline without any notification, and so third party apps like GameMaker sre left to play catchup. PLEASE file a bug report and (as mentioned previously) link this topic and link your project. I know it's probably not anything particular in your project, but - just in case - the devs should have a look at it and make sure.
 
Yeah, I understand. But I do hope someone can make use of the "bundletool" and documentation to provide a temporary workaround. I lack the skills needed to utilize the documentation despite starting off with learning Java and using Android Studio. LOL. But of cause I'll look into that article and see if I can figure out how to use it on GMS2.

I guess I've no choice but send my project despite I'm very certain this has nothing to do with my project and more to do with the Play Store's new policy and GMS2 not yet implement the new policy. I do still owe Dan a copy of this project anyway in regard to an earlier bug report. He was the one who responded to my earlier bug report.
 
For the record;
I've made a bug report on this matter, with the .yyz project file attached.

I hope this issue will be prioritized, otherwise users wanting to release their apk to the Play Store will not be able to do so.

Update:
Tested on latest BETA IDE 2.2.3.425 Runtime 2.2.3.337, still same issue persist. YoYo meed to prioritize on this issue ASAP, not just for my sake.

@Dan ,
If you happen to see this topic. I made a bug report for the above (ticket number #158687) with the same project file you've asked via email regarding my other bug report (ticket number #158374). I put an end note in that report so that whomever was assigned to it, forward a copy to you.

I test the project on the latest BETA IDE and so far it seems the bug issue for #158374 might have been fixed by it. I tried several times to trigger the messed up Instance ID, so far it's no longer showing. It still does on the IDE version I reported.

Thank you.
 
Last edited:

tjuven

Member
I got the exact same error message thing recently, it let me upload the apk but "release to internal track" was greyed out. What I had to do was add a tester to the track and that made it possible to release it for internal testing.
 
I got the exact same error message thing recently, it let me upload the apk but "release to internal track" was greyed out. What I had to do was add a tester to the track and that made it possible to release it for internal testing.
That's not it in my case. I've testing accounts setup for quite sometime. And the issue is not limited to internal testing, but all the way up to production track. I released an apk (different project) 2 months ago from internal testing to production stage just fine, so this optimization requirement was only recently enforced by Play Console.
 
I wonder how long I've to wait for a fix for this. It's frustrating being just 1 step away from publishing, but can't proceed. Tried editing the android runner folder in the runtime by following the documentation provided by Google, but I can't create New Module because Android Studio (latest version) kept telling me it's not present, and won't let me press NEXT. I've no idea how to utilize the bundletool to create apk from the yyp project folder. This is incredibly frustrating after several months of working on the project only to stall in front of the finish line.

I bet if I was to try release an update apk for my existing published projects in the Play Store, the Play Console will demand I optimize it just like this one, rendering my marketed apks unable to be updated. Which needless to say GMS2 : Mobile for Android has been rendered "broken" until this issue is resolved. What makes this issue ridiculous is that Play Console actually allows up to 50MB size single apk before requiring an expansion file of max 4MB in size, but mine despite being far below the max size can't proceed without doing the steps they now enforced.

On a side note they allow 100MB of compressed apk, while any apk up to 150MB has to use android bundle. https://developer.android.com/google/play/expansion-files.html
 
Last edited:

rIKmAN

Member
I wonder how long I've to wait for a fix for this. It's frustrating being just 1 step away from publishing, but can't proceed. Tried editing the android runner folder in the runtime by following the documentation provided by Google, but I can't create New Module because Android Studio (latest version) kept telling me it's not present, and won't let me press NEXT. I've no idea how to utilize the bundletool to create apk from the yyp project folder. This is incredibly frustrating after several months of working on the project only to stall in front of the finish line.

I bet if I was to try release an update apk for my existing published projects in the Play Store, the Play Console will demand I optimize it just like this one, rendering my marketed apks unable to be updated. Which needless to say GMS2 : Mobile for Android has been rendered "broken" until this issue is resolved. What makes this issue ridiculous is that Play Console actually allows up to 150MB size apk, but mine despite being far below the max size can't proceed without doing the steps they now enforced.
Have you tried going through your project and seeing if there are any resources at all that are in the IDE but aren’t actually used at all? A forgotten about sprite, sound, script etc.

Just thinking based off the error message you received that it may not have previously been an issue but Google’s new checks may be picking them up as unused now when it didn’t before?

Might be worth a check while you wait for an official response.
 

tjuven

Member
Since reading this post yesterday I tried to upload a new apk for my game, I too got the warning sign message, but the play console still let me create a release track (both internal test and production) so it might be something in your GM project settings or settings in the play console that prevents you from creating a track. However I do think yoyo should look at this issue.
 
Have you tried going through your project and seeing if there are any resources at all that are in the IDE but aren’t actually used at all? A forgotten about sprite, sound, script etc.

Just thinking based off the error message you received that it may not have previously been an issue but Google’s new checks may be picking them up as unused now when it didn’t before?

Might be worth a check while you wait for an official response.
I don't have any unused resources within the project, not even a one time referenced variable. I'm even purposely only opting to build the app for just arm64 and not asking any permissions, even then the issue persisted.

Since reading this post yesterday I tried to upload a new apk for my game, I too got the warning sign message, but the play console still let me create a release track (both internal test and production) so it might be something in your GM project settings or settings in the play console that prevents you from creating a track. However I do think yoyo should look at this issue.
That's really odd, because I've been trying again since early this morning and I still can't get past the issue. Kept insisting I should optimize. How to optimize a project that's already compiled to 10-13MB with nothing that might be removable from the folders?!

I even check my earlier releases (different projects), and sure enough there's a note telling me this:



So I'm quite certain the next time I upload an apk update for those projects already on sale, I'll be forced to optimize it also, else it will be rejected like this one.

But really I've been trying to find out if the fault is on my end, though judging from what I've been presented the issue seems to lean more on the new implementation requirement hasn't been adopted by GMS2?!

Update:
If I try alternative method (Android Instant Apps) to release the apk for internal testing or to the Play Console which require the uploaded APK/APKs compressed in a .ZIP file this error shows up:


Also I notice something peculiar in the output log, though it doesn't effect the success of building the apk;
Android NDK: android-14 is unsupported. Using minimum supported version android-16.
Android NDK: WARNING: APP_PLATFORM android-16 is higher than android:minSdkVersion 14 in ./AndroidManifest.xml. NDK binaries will *not* be compatible with devices older than android-16. See https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md for more information.
Note: I set my min SDK to 16, max SDK to 28 during the testing, normally I'd set the min to 19 - so how come it mention 14 when I'm not even targeting it???

And this whenever I press "Show Key Hash" under Preferences - Android:
Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore D:\PROJECT FOLDER GameMaker Studio 2\Project Folder\Production\Censored Project\Censored.keystore -destkeystore D:\PROJECT FOLDER GameMaker Studio 2\Project Folder\Production\Censored Project\Censored.keystore -deststoretype pkcs12".
elapsed time 00:00:00.2665924s for command "C:\Program Files\Java\jdk1.8.0_181\bin/keytool.exe" -exportcert -keystore "D:\PROJECT FOLDER GameMaker Studio 2\Project Folder\Production\Censored Project\Censored.keystore" -alias "Censored" -storepass "Censored" -list -v started at 06/06/2019 15:08:48
Edit: I've since manage to fix this issue using a software called Keystore Explorer. If anyone happen to see this post. All you need to do is download that free software. Load the keystore generated through the IDE. Enter your keystore password. Choose to change the encryption type from JKS to PKCS#12 from their drop down list. Enter your alias password. Press ok, then go to file and press Save. Done. The next time you load your keystore on the IDE, the above message will be gone. (Note: do make backup of the original JKS encryption. And whatever happen is at your own risk.)
 
Last edited:
Sorry for the multiple posting, but this is necessary since this topic is linked to a bug report I made, and whomever is assigned to follow up my report might find all these useful.

Source : https://codelabs.developers.google.com/codelabs/your-first-dynamic-app/index.html#0

shailentuli:~/work/android/DynamicAppsCodelab (master)$ ls -l apks
total 4584
-rw-r--r-- 1 shailentuli eng 97167 May 7 15:37 base-arm64_v8a.apk
-rw-r--r-- 1 shailentuli eng 69911 May 7 15:37 base-armeabi_v7a.apk
-rw-r--r-- 1 shailentuli eng 40332 May 7 15:37 base-hdpi.apk
-rw-r--r-- 1 shailentuli eng 36156 May 7 15:37 base-ldpi.apk
Archive: out.apks
extracting: apks/base-xhdpi.apk
extracting: apks/base-hdpi.apk
extracting: apks/base-mdpi.apk
extracting: apks/base-ldpi.apk
extracting: apks/base-xxxhdpi.apk
extracting: apks/base-xxhdpi.apk
extracting: apks/base-ca.apk
extracting: apks/base-da.apk
extracting: apks/base-ja.apk
extracting: apks/base-fa.apk
extracting: apks/base-tvdpi.apk
extracting: apks/base-ka.apk
extracting: apks/base-pa.apk
extracting: apks/base-ta.apk
extracting: apks/base-nb.apk
extracting: apks/base-be.apk
extracting: apks/base-de.apk
extracting: apks/base-ne.apk
extracting: apks/base-te.apk
extracting: apks/base-af.apk
extracting: apks/base-th.apk
extracting: apks/base-bg.apk
extracting: apks/base-fi.apk
extracting: apks/base-si.apk
extracting: apks/base-hi.apk
extracting: apks/base-vi.apk
extracting: apks/base-kk.apk
extracting: apks/base-mk.apk
extracting: apks/base-sk.apk
extracting: apks/base-uk.apk
extracting: apks/base-el.apk
extracting: apks/base-gl.apk
extracting: apks/base-ml.apk
extracting: apks/base-nl.apk
extracting: apks/base-pl.apk
extracting: apks/base-tl.apk
extracting: apks/base-sl.apk
extracting: apks/base-am.apk
extracting: apks/base-km.apk
extracting: apks/base-bn.apk
extracting: apks/base-in.apk
extracting: apks/base-kn.apk
extracting: apks/base-mn.apk
extracting: apks/base-ko.apk
extracting: apks/base-lo.apk
extracting: apks/base-ro.apk
extracting: apks/base-sq.apk
extracting: apks/base-fr.apk
extracting: apks/base-ar.apk
extracting: apks/base-master.apk
extracting: apks/base-sr.apk
extracting: apks/base-hr.apk
extracting: apks/base-mr.apk
extracting: apks/base-tr.apk
extracting: apks/base-cs.apk
extracting: apks/base-ur.apk
extracting: apks/base-bs.apk
extracting: apks/base-et.apk
extracting: apks/base-es.apk
extracting: apks/base-ms.apk
extracting: apks/base-is.apk
extracting: apks/base-lt.apk
extracting: apks/base-eu.apk
extracting: apks/base-it.apk
extracting: apks/base-pt.apk
extracting: apks/base-zu.apk
extracting: apks/base-hu.apk
extracting: apks/base-ru.apk
extracting: apks/base-gu.apk
extracting: apks/base-lv.apk
extracting: apks/base-iw.apk
extracting: apks/base-sv.apk
extracting: apks/base-sw.apk
extracting: apks/base-my.apk
extracting: apks/base-az.apk
extracting: apks/base-hy.apk
extracting: apks/base-ky.apk
extracting: apks/base-uz.apk
extracting: apks/base-zh.apk
extracting: apks/base-en.apk
extracting: apks/base-jp.apk
extracting: apks/base-armeabi_v7a.apk
extracting: apks/base-arm64_v8a.apk
extracting: apks/base-x86_64.apk
extracting: apks/base-x86.apk

See how everything are now separated as individual .apk? GMS2 must do this now for the APK to pass to the Play Console.

See this :


And this :


Allow me to provide this other sample of what it should look like. This one here is "Smart AudioBook Player" the original apk size is 4.2MB, but the compressed APKs in .zip (distributed using the "Android Instant App" feature of the Play Console) is 3.7MB. People who acquire this app from outside the Play Store will receive it in parts like this, making it more difficult to install to their device, but not impossible if they use a split apk installer.



Please prioritize fixing this issue, otherwise GMS2: Mobile for Android become useless for Android Developers like me to use. You need to make the output now as a bundle/compressed APKs.
 
Last edited:

rIKmAN

Member
@SnortySnoopy Did Google give some advanced notice of this new requirement?

Surely they haven’t just dropped this in out of the blue given how many companies would need to update their tools that people use to create Android games and software?
 
This was first introduced in May 2018. And after searching my Play Console inbox I found this article : https://android-developers.googleblog.com/2019/05/whats-new-in-play.html. So no, it wasn't a new or unannounced move/policy, but it does seems GMS2 (YoYo) was probably caught unaware of these changes. I had released an app to the Play Store roughly 2 months ago, and this issue hasn't been enforced. And I've to admit I rarely read the articles they sent, since in between my app releases I barely log into my Play Console or check my associated email inbox. As such I was caught off guard myself.
 
Last edited:
G

Guest

Guest
It does give me the warning, but I'm allowed to push through and release to internal testing despite the warning.

This is depressing:

Android said:
Available in Android Studio 3.2 or later, Unity 2018.3 & 2017.4.17, and Cocos Creator 2.0.9 or later.
Something's missing there.... hmmm.
 
How is it possible for you to push through? I'm not doubting, I'm wondering how you manage to get past and start rollout, which hopefully be something I haven't already tried doing yet which might resolve this issue. I can't find anything in the play console settings that will allow me to enable passing the apk through. I have tried several dozen times with various alteration to the settings in GMS2; e.g. reducing architecture build target, untick all permissions, cleaning the project before building into apk, making sure the content of my project folder are all in use, etc. However I haven't tried removing folders in the project related to options for other platforms, or languages, in case it'll disrupt the compiling process in GMS2.

Anyway, beside waiting for response from YoYo, I'm also waiting for Google's CSO to reply to my enquiries on this matter.
 
G

Guest

Guest
I just dropped in the apk, hit review, hit release or whatever, and clicked "confirm" when it popped up another warning.

Have you tried this with a blank project? Or without Google Licensing?
 
I just dropped in the apk, hit review, hit release or whatever, and clicked "confirm" when it popped up another warning.

Have you tried this with a blank project? Or without Google Licensing?
I haven't. But not using Google Licensing means my app will be unprotected. Well I can't get pass the step after pressing the "review" button, as it shows me the message and the "start rollout" button is grayed - unclickable. Anyway I'm going to try doing the above for comparison. I'm also beginning to think if maybe this mandatory change is currently impose on certain regions, and I happen to be in their list.

Edit:

I just tried with blank project and without licensing extension. Just the base project as generated by GMS2 when we make new project. Still same error message shown. That means it's unavoidable, and mandatory.

=========================================================================

Here's the weird part mentioned in the documentation;
  • Currently, Google Play includes all the code and resources for a dynamic feature module in a single APK. In the near future, for devices running Android 5.0 (API level 21) and higher, serving will be optimized to use configuration APKs.
Logically uploading single APK as what GMS2 currently generates should still be possible. But in the "near future" it will be mandatory? There's no clear indication when this "near future" is going to be. But assuming it's not right now why then in my case I can't upload single APK? For this matter, I'm enquiring Google and still waiting for their response.

That aside, here are some interesting info from the documentation. The app extension format to add to the play console's "App Releases" tab (internal testing, alpha testing, beta testing, production track) is .aab no longer .apk;
An Android App Bundle is a file (with the .aab file extension) that you upload to Google Play to support Dynamic Delivery.
..... Keep in mind, Android App Bundles do not support APK expansion (*.obb) files.
So if some of you uses .obb, get ready to switch.
The Play Console will soon start allowing you to upload large app bundles with installed APK sizes of up to 500MB so that, in most cases, you don’t need to use expansion files either.
Source: https://medium.com/googleplaydev/wh...t-means-for-the-future-of-android-2e34981793a
This step is what's missing and need implementing in GMS2;
  • Step 2: Now, when you’re ready to test or release the app, you build it as an Android App Bundle, Android’s new app publishing format. You still sign the app so that Google Play can verify it’s from you.
While the file to add as APKs (multiple .apk - such the base APK and a few of its configuration APKs), which so far I've noticed in the play console's "Android Instant App" tab (instant internal testing, instant alpha testing, instant production track) has to be in .zip compressed file format (see above post e.g. Smart AudioBook Player).

And this;
You deliver a more efficient app to your users which doesn’t contain code and resources they’re not going to use. It’s also very simple for most developers to switch. ..... The Android App Bundle is open-source and backwards compatible (for pre-L versions of Android, Play automatically uses multi-APK — that is Play generates an APK for each device configuration, containing all language assets, instead of using split APKs).
========================================================================

Here's the latest APK Release to Play Console Guideline :

https://developer.android.com/distribute/best-practices/launch/launch-checklist

See No. 7; mentioned of app bundle as part of the steps.

Also this:
https://developer.android.com/platform/technology/app-bundle
The Android App Bundle is Android's new, official publishing format that offers a more efficient way to build and release your app.
And this:
https://developer.android.com/guide/app-bundle
An Android App Bundle is a new upload format that includes all your app’s compiled code and resources, but defers APK generation and signing to Google Play.

Google Play’s new app serving model, called Dynamic Delivery, then uses your app bundle to generate and serve optimized APKs for each user’s device configuration, so they download only the code and resources they need to run your app. You no longer have to build, sign, and manage multiple APKs to support different devices, and users get smaller, more optimized downloads.
Lastly this:
https://android-developers.googleblog.com/2019/03/the-latest-android-app-bundle-updates.html
 
Last edited:
G

Guest

Guest
I just checked, the test APK I uploaded actually did have the Google Licensing extension (with proper setup in the Android Options). I'd also selected all architectures, just to check. I wish you'd try this with a blank project to see whether you're correct that Google is making this mandatory in certain regions. [edit: he did]

However, I agree that Google's docs indicate that this will likely become mandatory in the future, or, at least, become so standard that people using GMS2 will begin to stand out as amateurs. I'm also worried that this will put us at a disadvantage in the Play Store. My understanding is that the Play Store prioritizes apps that properly use Google functionality (leaderboards, etc.). Of course this is always a struggle for GameMaker Studio 2 users, because the engine's support for the Play Store is always lagging well behind current functionality. I've avoided using leaderboards, and have even considered avoiding IAPs and ads, simply because GameMaker Studio 2 has such poor, sometimes absent or broken, support for anything beyond the bare-bones minimum of producing an APK file.
 
Last edited by a moderator:
Yes I did, but yeah same disappointing result. YoYo's CS finally reached out to me and inform the issue is being looked into by a QA staff.I wonder how long it'll take for them to resolve this issue. It's something they should see as pressing/urgent matter to fix as otherwise uploading to the Play Console will be impossible. I can understand they are playing catch up with Google and Apple being a third party with not having any official support compare to Unity and Cocos2d-x, but that only means they've to work extra hard to remain competitive and try their best not to fall too far behind. Which unfortunately at present, like it or not, without comparing with other similar third party IDE, they've to admit they are trailing behind the ones receiving support. Which I suspect is part reason why their Mobile license price was significantly reduced?

So far I don't use leaderboard, IAP or Ads in my apps. Part reason is because I'm lacking the needed skills to incorporate it into the app I build, part reason is also because so far the apps I make are intended for full offline use. If there's 1 thing I'd complain about is the issue of why I've to pay extra for certain stuff (which often time as you said aren't well maintained/updated - such as certain Google extensions), While there's the Ad extension from the Marketplace we must be, when the apk generated already contain Admob SDK in it (the Play Console detects its presence regardless we use ad or not). YoYo should either allow us to prevent it from being built into the product, and/or make it an integrated free option to use without having to pay extra for the extension. If I heard correct, it used to be available at no extra cost in GMS1.x, therefore at least give free access to such extension to those who had paid for the Mobile IDE license prior to the significant price drop. Besides that if we could opt to not implement certain stuff such as Ads in our product, being able to not have it built into the product will help in avoiding bloating the product file size and avoid scrutiny by the hosting site, e.g. why they detect its presence when we claim to not implement it. This could also help with easing us in meeting the family program and content rating policies, and avoid unnecessary doubt by our potential customers on the Play Store when they look up on what permissions our app is asking for, most of which are wary about agreeing to certain permissions - which right now some of those permissions we don't actually implement/ask to be provided are listed simply because it's built into the product indiscriminately.

Anyway back to the primary issue, they'll need to adjust how the apk is generated when compiled/built through GMS2 using the information in that documentation, my guess would be another beta IDE or Runtime update will have to come our way ASAP, or at least a standalone executable has to be provided as temporary workaround. What YoYo need to do is break the built into individual chunks; each language target each own .apk, each architecture target its own .apk, each graphic density target its own .apk, and each config each own .apk. It's a hell of a lot of .apks to make (see sample in spoiler - post #17). It will then need to be bundled/compressed into .aab format or if remain as .apk must then be compressed into .zip. If the end product is .aab then we'll upload to "APP RELEASE" in the Play Console, but if .zip to "Android Instant App". Preferably it should be in .aab for convenience and security. That's generally what needed to be done to meet the store's new requirement. Presently GMS2 built all those files as a single .apk. We may still target API below 21 (Android 5.1) despite this change, no problem with it made into .aab as the Play Store will take care of it for us automatically. But as I mentioned in earlier post, expansion file in .obb format will no longer be supported/accepted by them, as the .apks file size limit is increased from 150MB to 500MB. Erasing the need for .obb entirely.

YoYo could/should make a feature that allows us wider options to build the app into; single .apk, app bundle .aab, and or select which .apks we want it to built e.g. depending on our language targets. That way when we decide to distribute outside the Play Console, we still have the option to provide it as single .apk, which would be great for those not wanting to use Split Apk Installer(SAI) app - those downloading from the Play Store doesn't require SAI, the store will custom build for them single apk from the .apks we supplied. Which I notice a similar feature is available for those building to Windows platform.
 
Last edited:

Nocturne

Friendly Tyrant
Forum Staff
Admin
So far I don't use leaderboard, IAP or Ads in my apps. Part reason is because I'm lacking the needed skills to incorporate it into the app I build, part reason is also because so far the apps I make are intended for full offline use. If there's 1 thing I'd complain about is the issue of why I've to pay extra for certain stuff (which often time as you said aren't well maintained/updated - such as certain Google extensions), While there's the Ad extension from the Marketplace we must be, when the apk generated already contain Admob SDK in it (the Play Console detects its presence regardless we use ad or not). YoYo should either allow us to prevent it from being built into the product, and/or make it an integrated free option to use without having to pay extra for the extension. If I heard correct, it used to be available at no extra cost in GMS1.x, therefore at least give free access to such extension to those who had paid for the Mobile IDE license prior to the significant price drop. Besides that if we could opt to not implement certain stuff such as Ads in our product, being able to not have it built into the product will help in avoiding bloating the product file size and avoid scrutiny by the hosting site, e.g. why they detect its presence when we claim to not implement it. This could also help with easing us in meeting the family program and content rating policies, and avoid unnecessary doubt by our potential customers on the Play Store when they look up on what permissions our app is asking for, most of which are wary about agreeing to certain permissions - which right now some of those permissions we don't actually implement/ask to be provided are listed simply because it's built into the product indiscriminately.
What on earth are you talking about? The Google AdMob extension is free to download and use, as it is included as part of the Google Services extension (which is free to download and use). It is NOT bundled with your APK unless you include it yourself. You just have to go into the extension properties and remove it if you don't want it. Please stop spreading misinformation.
 
What on earth are you talking about? The Google AdMob extension is free to download and use, as it is included as part of the Google Services extension (which is free to download and use). It is NOT bundled with your APK unless you include it yourself. You just have to go into the extension properties and remove it if you don't want it. Please stop spreading misinformation.
Is it? Well sorry if I had misunderstood. I got the impression it's not easily removed, or free, because there are Admob extension on the marketplace (starting from $0.99). I've been debating if I should buy one of them so I can add ads. But now that you mention this, means my perception been misguided because of the existence of those extensions. Thanks for pointing out my mistake.
 
Last edited:
Yup. I received email from Dan a few hours earlier about it.
I'm going to begin editing the files following the article.
Thank you. :)
 
Last edited:
D

DJ2334

Guest
Could this explain why my app update has been pending (stating that it's in the reviewing process) for so long? I just recently got a warning about the ads sdk too and back in May I was able to shell out updates left and right. Should I resort to .aab over .apk and remove the ads extension if I'm not using it?
 
D

DJ2334

Guest
What on earth are you talking about? The Google AdMob extension is free to download and use, as it is included as part of the Google Services extension (which is free to download and use). It is NOT bundled with your APK unless you include it yourself. You just have to go into the extension properties and remove it if you don't want it. Please stop spreading misinformation.
So what if I want to be able to use the Google Play Games leaderboards and achievements services, but do not want ads? Could I still be able to do that without the Google Services extension?

And perhaps the spread of misinformation would be significantly less if the android documentation was more up to date and more specific in general. It's been a miserable experience trying to get everything to work properly using GMS for android games. The community seems fairly clueless regarding anything android related too (Just check all the android related questions on this forum or the subreddit or the discord and you'll see what I'm talking about).
 
I was recently in touch with the Play Console's CSO, they informed me they're being flooded by emails. They did indicate it is similar in nature to what I enquire them - so it must have to do with their recent move from single .apk to app bundle .aab. It seems to cause a lot of issues not just for us (the developers), but for them as well. Well with .aab, the idea are these; if it's not needed don't add, if not implemented don't add, if the end user can't/won't use or need don't make them download and keep it.

=================================================================================

Anyway, I notice there's been noticeable slowdown with the testing (internal, alpha, and beta) and publishing track from going online. It used to take minutes or worst a few hours from upload (START ROLLOUT) to become available for each track step including to the general public. Lately it takes 1-2 full day(s) or more. I also noticed the changes made and marked published by them on our Play Console's notification, doesn't match between what I see in the Play Store on PC and the Play Store on device, nor the Play Store on PC/device with the Play Console's. It might take a further 1-2 days for them to synchronise with the version shown on Play Console. Which is ridiculous. Note: nothing to do with GMS, the above is solely Google's problem.

Optimize is the keyword in app bundle. As developers, we add only what is needed for the app we make to function properly according to what we implemented, that includes sdk, permissions, language packs, architectures, graphics, etc. (e.g. -base.apk, -en.apk, -fr.apk, -ru.apk, hdpi.apk, xxhdpi.apk, -arm64_v8a.apk, -armx86.apk, etc.), send them over to Google as .aab, and they'll compile a fully functional single .apk package that matches what the end user requires from the parts we sent in the .aab, e.g. if the end user's system is English - Armx64 - hdpi, then they'll send only what matches in the apk, they won't build into that single .apk package containing e.g. Mongolian language - since the customer won't use.

The benefit? Wider audience/market share for us, reduce the number of people unable to download because of seeing "incompatible" on the Play Store when actually their device should have been able, reduce piracy because it become harder for pirates to provide standalone .apk that fits all devices, and of cause reduces the size of the package thus the end user won't need to store files they won't use/need thus also reduces bandwidth usage, and so on.

That said, I look forward to GMS2's next update. ;)
 

chirpy

Member
Old thread, but I'm wondering whether anyone had experience building instant apps already.
Just now I tried adding a few required tweaks[*] into AndroidManifest.xml, and I was able to upload GMS-built .aab to my instant app internal test track.
It takes some time but after rolling out I was happy to see the "Try now" button eventually [**].

However now I'm quite confused on how the instant app is supposed to work alongside the normal release .aab.
Is it (A) that I can safely keep two separate .aab on Google Play Console, one is my "installed" full version, and the other is my "instant" trial version which needs to be <10MB in size?
Or, (B) do I have to somehow build the base apk and the instant apk into one single .aab?

(A) feels a bit weird, for example, is it then possible to provide installed version with minSdk 19,
and instant version with minSdk 21 (min possible for instant)?

[*] Adding targetSandboxVersion, dist:module, minSdkVersion 21, as pointed out by android extras "ia check" command; size limit can be safely ignored when internal testing an instant app
[**] "ia run" with built .apk also works (a lightning icon is shown on the running app's icon)
 
Last edited:
Top