Reputation: 4381
I built my project using the new Android App Bundle format. With APK files, I can download the APK to my device, open it, and immediately install the app. I downloaded my app as a bundle (.aab format) and my Nexus 5X running Android 8.1 can't open the file. Is there any way to install AABs on devices in the same convenient manner as APKs?
Upvotes: 351
Views: 416282
Reputation: 3897
After spending so much time trying to compile it with my computer (unsuccessfully, particularly I wasn't able to fix this problem: Error: INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl799242675.tmp/base-master_3.apk: Attempt to get length of null array
)
I found an app that does it with 3 taps:
I think there are a lot of apps like that one. Just search for "AAB installer" on Google Play:
Upvotes: -1
Reputation: 2056
This solution is only for Expo using eas to build, eas creates an .AAB file by default. I was able to generate .APK instead of .AAB by going to expo's build installation guide here:
https://docs.expo.dev/build-reference/apk/#installing-your-build
Upvotes: 0
Reputation: 23
You can´t install .aab files directly into a device. AAB/.aab is the google play store distribution format. To install a project directly into a device you have to create an .apk file instead of an .aab file. To do that, follow the instructions at: https://docs.expo.dev/build-reference/apk/#installing-your-build or summarizing:
Modify the eas.json by adding one of the following properties in a build profile:
developmentClient to true (default) android.buildType to apk android.gradleCommand to :app:assembleRelease, :app:assembleDebug or any other gradle command that produces .apk
Then run the following command on the terminal to create your build:
eas build -p android --profile preview
The documentation has more information on how to create and install multiple builds
Upvotes: 2
Reputation: 81
To convert aab ro apk follow this simple steps:
1.Download bundltool-all-1.14.1.jar from this link
2.Move [your-aab-file-name].aab and bundletool-all-1.14.1.jar to a Desktop.
3.Open Terminal and write this code cd .\Desktop\
and press enter.{This will take you to the desktop}
4.Now write this code and press enter:
C:\Users\[Your-user-name]\Desktop\bundletool-all-1.14.1.jar build-apks --bundle=[Your-aab-file-name.aab] --output=app-release.aab.apks --mode=universal
5.After that you have a file named "app-release.aab.apks" on your Desktop, open it with WinRAR {or something like that} and you have apk file, and you can install it.
Upvotes: 6
Reputation: 77
For Windows 11:
PS C:/folder-with-aab-file> java -jar C:\dev\bundletool-all-1.9.1\bundletool.jar build-apks --bundle=app-release.aab --output=app-release.aab.apks --mode=universal
PS C:/folder-with-aab-file> ren app-release.aab.apks app-release.aab.apks.zip
After descompact zip file, the apk file'll with the name: universal.apk
Upvotes: 3
Reputation: 1673
If you're using Maui at this point Visual Studio 2022 only creates AAB files; however, you can create an APK from a command line.
Change directory to where your project is located and run this:
dotnet publish -f:net6.0-android -c:Release /p:AndroidSigningKeyPass=blah
Upvotes: 4
Reputation: 227
If you have the project you can just build an app with android studio or push it directly to the device if you run a debug or release config with the device connected and selected as the target so long as you enable adb in developer mode on the device and tap trust this computer when you connect it to your machine.
But if you have the bundle because you're trying to install an app pulled from one phone onto another, there are free online services that convert play store links into a direct download of the apk. Just turn on add debugging on the device and adb install <path-to-apk>
from the terminal.
If you have more than one device connected with adb enabled you can adb devices
to get a list of their identifiers and adb install <path-to-apk> <device-id>
will work as well. Or you can use adb to your advantage and do many things on multiple devices at once depending on your needs. There's even ways to adb over wifi.
You will need adb from the android-sdk tools to do any of this though, with Android Studio installed you would have a local installation already but it may not be in your path. However studios terminal likely has access to it since it would be the sdk path your IDE has saved in preferences.. If not you can download a standalone sdk/find out which one studio is using from it's preferences and either
Upvotes: 0
Reputation: 26298
For MAC:
brew install bundletool
bundletool build-apks --bundle=app-release.aab --output=app-release.apks
bundletool install-apks --apks=app-release.apks
Upvotes: 176
Reputation: 1046
If you want to install the APP bundle without using PLAY STORE, You need to change your build variant to "release" at Android studio.
If you cannot build App yourself but have a release bundle, then refer to the most popular answer.
Go to Android Studio > Build > Select Build Variant..
Once you do this your build configuration may start showing errors. This is because you now need to provide signing details in this configuration as well (this refers signing details from build.gradle)
you may either Edit the configuration and go to the Fix button at the bottom which will ask you to fill in signing details.
Or you may edit the build.gradle Make sure you provide buildTypes {} and signingConfigs {}
android {
signingConfigs {
release {
storeFile file('<Your PATH>\\keystore.jks')
storePassword 'XXXXX
keyAlias 'XXXXX'
keyPassword 'xxxxx'
}
debug {
storeFile file('<Your PATH>\\keystore.jks')
storePassword 'XXXXX
keyAlias 'XXXXX'
keyPassword 'xxxxx'
}
}
compileSdkVersion 32
defaultConfig {
....
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug
{
signingConfig signingConfigs.debug
}
}
...
}
dependencies {
...
}
There is one or two minutes of delay before Android Studio starts reflecting correctly. Otherwise, you may do a clean rebuild and then run the app.
When you run the app this time it will be installed in release mode on the target device. You may need a way to identify the Build Variant of the installed app. You may show the build name and variant somewhere in your app. Or if you have a button somewhere which shows only in debug mode you can check that.
Upvotes: 0
Reputation: 20369
This worked for me on a mac.
You need to use a tool called bundletool You can install it incase if not already installed using brew
brew install bundletool
Run this command to extract and store the apks file at the desired location
bundletool build-apks --bundle=path/to/app-release.aab --output=/path/to/output/app.apks --local-testing
Install on a connected Android device
bundletool install-apks --apks=/path/to/output/app.apks
I have noted the complete command with output in a gist here https://gist.github.com/maheshmnj/6f5debbfae2b8183d94ca789d081f026
Upvotes: 11
Reputation: 3613
Is there any way to install AABs on devices in the same convenient manner as APKs?
As installing is done by third party apps or mobile company file manager like apps.
The upcoming file managers versions, hence forth, will come with "aab" managing tools.
I searched "android aab installer" on playstore and found one.
deliberately not naming it.
The one I installed, extracted the bundle online,
But after that this app wasn't able to install this extracted app by itself (on my mi [miui] device ).
But this application saved the online extracted apk on phone memory, from where I was able to install it.
remember:
Google's "files" application wasn't able to install this apk
but
my system (in built) filer manager was able to.
Upvotes: 0
Reputation: 17960
Not directly.
Android App Bundles is the default publishing format for apps on the Google Play Store. But Android devices require .apk
files to install applications.
The Play Store or any other source that you're installing from will extract apks from the bundle, sign each one and then install them specific to the target device.
The conversion from .aab to .apk is done via bundletool.
You can use Internal App Sharing to upload a debuggable build of your app to the Play Store and share it with testers.
Upvotes: 277
Reputation: 1326
For those, who want single universal.apk
that can run on every android device:
brew install bundletool
bundletool build-apks --mode universal --bundle ./app-release.aab --output ./app.apks
mv app.apks app.zip
unzip app.zip
Now, you can get your universal.apk
Upvotes: 41
Reputation: 936
You cannot install app bundle [NAME].aab
directly to android device because it is publishing format, but there is way to extract the required apk
from bundle
and install it to you device, the process is as follow
java -jar bundletool.jar build-apks --bundle=bundleapp.aab --output=out_bundle_archive_set.apks
out_bundle_archive_set.apks
, just rename it to out_bundle_archive_set.zip
and extract the zip file, jump into the folder out_bundle_archive_set > standalones
, where you will seee a list of all the apks There goes the reference from android developers for bundle tools link
Upvotes: 44
Reputation: 681
If you want to install apk from your aab to your device for testing purpose then you need to edit the configuration before running it on the connected device.
This will install an apk directly on the device connected from the aab.
Upvotes: 49
Reputation: 3111
Installing the aab directly from the device, I couldn't find a way for that.
But there is a way to install it through your command line using the following documentation You can install apk to a device through BundleTool
According to "@Albert Vila Calvo" comment he noted that to install bundletools using HomeBrew use brew install bundletool
You can now install extract apks from aab file and install it to a device
Extracting apk files from through the next command
java -jar bundletool-all-0.3.3.jar build-apks --bundle=bundle.aab --output=app.apks --ks=my-release-key.keystore --ks-key-alias=alias --ks-pass=pass:password
Arguments:
Then you will have a file with extension .apks So now you need to install it to a device
java -jar bundletool-all-0.6.0.jar install-apks --adb=/android-sdk/platform-tools/adb --apks=app.apks
Arguments:
Upvotes: 89
Reputation: 13
Use (on Linux): cd android ./gradlew assemblyRelease|assemblyDebug
An unsigned APK is generated for each case (for debug or testing)
NOTE: On Windows, replace gradle executable for gradlew.bat
Upvotes: -3