---
# System prepended metadata

title: Android app bundle study

---

# Android app bundle study
### Enable apk splits
- What does it do - language/density/abi only for the device it is being instaled on
- Effort - Already done but might take some effort to figure out with regards to CI
- Apk size reduction - circa 102mb -> 81.2mb

### Dynamic feature modules
- What does it do - The app would have to be modularized and the barebone apk would be uploaded to the playstore. The user could download aditional features on demand.
- Effort - Depends on the size of the feature. Some refactoring would have to be done. Although modules like alexa and baidu already seem to be nicely modularized.
- Apk size reduction - Depends on features cut from the barebone apk
- Good blogpost about implementing dynamic feature modules - https://android.jlelse.eu/a-practical-guide-to-android-app-bundle-for-beginners-7e8d93831828
![](https://i.imgur.com/Ypjlztn.jpg)


# Download bundle tool
- https://github.com/google/bundletool/releases

## Creating an app bundle
Create bundle
1. ./gradlew bundle
It's this easy, this bundle should be uploadable to the playstore.
But If you want to test the apk locally you can continue to the steps below.

Create apk set from the bundle

2.  java -jar bundletool-all-0.3.3.jar build-apks --bundle=app/build/outputs/bundle/productionRelease/JabraMoments\(UNKNOWN\)-3.4.0.0-SNAPSHOT.aab --output=myapp.apks

Install apk from the apk set to the connected device

3.  java -jar bundletool-all-0.10.0.jar install-apks --apks=myapp.apks