How to make Android App Bundle ( aab ) file from apk?

Google play console recently has started disabling the rollout button because of various warnings. And one of those warnings is using apk instead of .aab file. There are solutions to make .aab file if the project has been created in Android Studio or Unity. But what if apk has been created by Animate CC or Haxe/Flash Develop ? Is their any way to convert?

https://developer.android.com/guide/app-bundle/

This sounds like a nice feature but sounds like it will require tooling changes

So you are not allowed to publish new applications without this feature?

I had no problems uploading .apk, at least a couple months ago.
I guess, is it still a recommendation from Google, but using .aab certainly helps when supporting x64.
Starting August 1st you need to pack armv7 and armv64 libs in one .apk, which makes it much bigger in size.

I get 3 warnings ( screenshot attached). Either one or all 3 of them disable the roll out button on google play console.

These are the 3 warnings I get:
Capture1 Capture2 Capture3

I have looked into app-bundle command line tool.
https://developer.android.com/studio/build/building-cmdline#build_bundle

But the whole technical jargon is not understandable for me. If it requires the code to be written in java. Or it can be used for any code. Or it only requires the apk. Can it be used to produce app bundle for coders who don’t use Java?

For the first two warnings:

  1. 64-bit requirement
  2. targeting api level 28

It seems we need to wait for air sdk version 33:

For the 3rd one (.aab file )

Solutions seems to be available for Android Studio, Cocos Creator, Unity

But I don’t see anything in Animate CC or similar IDE.

I will check if FDT can help though.

  1. <architecture name="arm64" if="android" />, but makes .apk bigger, that’s why we need .aab
  2. Something like <config:android minimum-sdk-version="19" target-sdk-version="28" /> should help
  3. Yes, Google is forcing everyone to .aab

Quick FYI:

I added ARM64 as a default architecture to Android and set the default target SDK to 28 per the Google Play requirements in the GIT version of Lime

I get this error now:

I thought I compiled in debug mode. But I rechecked by switching to “Release” and the command showing in the console of haxedevelop:
cmd: “C:\HaxeToolkit\haxe/haxelib” run lime build “project.xml” android -release -Dfdb

I get two apk files one is:
Main-debug.apk
app-debug-unaligned.apk

Trying to upload any of them produces this error.

Have you signed your APK?

https://ashes999.github.io/learnhaxe/publishing-android-apps.html

Thank you for the help.
I was able to sign, upload was successful, however I get this warning again:


Warnings

This release is not compliant with the Google Play 64-bit requirement

The following APKs or App Bundles are available to 64-bit devices, but they only have 32-bit native code: 49.

From August 1, 2019 all releases must be compliant with the Google Play 64-bit requirement.

Include 64-bit and 32-bit native code in your app. Use the Android App Bundle publishing format to automatically ensure that each device architecture receives only the native code it needs. This avoids increasing the overall size of your app.


Your app currently targets API level 26 and must target at least API level 28 to ensure it is built on the latest APIs optimized for security and performance.

From August 2019, new apps must target at least Android 9.0 (API level 28).
From November 2019, app updates must target Android 9.0 (API level 28).


I just saw pozirk’s comment. Am I supposed to add these tags in project.xml ?

 <architecture name="arm64" if="android" />
 <config:android minimum-sdk-version="19" target-sdk-version="28" /> 

Or do I need to update my openfl or lime’s etc version?

haxelib list
actuate: 1.8.7 [1.8.9]
bitmapFont: [0.9.4]
box2d: [1.2.3]
haxeui: [1.8.21]
hscript: [2.3.0]
hxcpp: 3.4.64 3.4.188 [4.0.8]
jQueryExtern: 3.0.0 [3.1.1]
layout: [1.2.1]
lime-samples: 4.0.1 [7.0.0]
lime: 2.9.1 5.1.0 5.6.0 5.8.1 [7.5.0]
openfl-samples: 5.1.0 6.0.0 [8.7.0]
openfl: 3.6.1 5.1.3 6.4.0 [8.9.1]
spritesheet: [1.2.0]
swf: [2.3.1]

I think we have ARM64 by default in our dev builds but have not released it yet

Give it a try with your version and see if it works

As pozrik suggested I added

        <architecture name="arm64" if="android" />
        <config:android minimum-sdk-version="19" target-sdk-version="28" /> 

And both warnings went away. However now I get one warning:

Unoptimized APK

Warning:

This APK results in unused code and resources being sent to users. Your app could be smaller if you used the Android App Bundle. By not optimizing your app for device configurations, your app is larger to download and install on users’ devices than it needs to be. Larger apps see lower install success rates and take up storage on users’ devices.

Resolution:

Use the Android App Bundle to automatically optimize for device configurations, or manage it yourself with multiple APKs.

You can forget about that “warning” its just googles way of self advertising their new service.

@Vega, this warning is Google pushing everyone to switch to .aab.
They have one good reason, 32bit and 64bit versions in one .apk will make it much bigger, while the same in one .aab results in smaller size.

I guess, OpenFL should support .aab, cause eventually Google will make it mandatory.

I included 32/64 in the same apk, increased only ~30%, after all the images/sounds are the same.
For me thats a few megabytes and acceptable!

isnt it also possible to upload 32/64bit separately?

Furthermore if i understood it correct, for the service to work, i would need to give them my private signing keys, and that for me is a no go.

So the only “downside” is a few Megabytes more, but in times of his-speed internet/wifi, that really doesnt matter anymore.

In my case, the difference in something like 15mb vs 23mb.
I was uploading 32 and 64 bit separately before, but now Google doesn’t allow it anymore.

It would be nice if you ran a kickstarter campaign to support new android app upload format. Feathers dev did a very great job with kickstarter. Just my 2 cents.

I was uploading 32 and 64 bit separately before, but now Google doesn’t allow it anymore.

Are you sure? I uploaded just last week some app to google play and I was able to do it.
You have to upload both apk at the same time.