There are so many ways to make mobile apps ranging from direct platform specific development (using Java and Kotlin for Android, and ObjC and Swift for iOS), there’s React Native from Facebook, Electrode Native from Walmart, the Ionic framework, Unity for certain types of apps, and the flutter.io framework which was just released by Google.

Update: Minimal APK sizes for Flutter applications went down!! “Overall release APKs are now 2MB smaller with those improvements. This brings the release APK size of a minimal Flutter app down to 4.7MB (from previously 6.7MB)”. — https://github.com/flutter/flutter/issues/16833#issuecomment-410103493

Ever wondered how these libraries and frameworks affect the size of your app? Let’s analyze some apk files for apps written in some of these ways. The apps are very basic, containing just a title at the top and a text at the center of the screen. This will show, for a bare minimum app what these frameworks need to package along with the apk for it to be able to run.

Simple Hello World app

For this test I created four different versions of the app, one in each of Java, Kotlin, React Native, and Flutter. (Android API 27)

The apks were then published for release type using Android Studio for Java and Kotlin and using the cli for React Native and Flutter.

Default proguard configuration was used.

The apks were analyzed using the Analyze APK feature in Android Studio.

Java (539 KB)

Lets start with the simplest one — Java. As you would expect this would be the smallest in size given that we are using just Java and the Android framework to create this app, with the only dependency being the Android Support Library, which you can see here takes up quite a lot of space.