Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fractalwrench/ApkGolf
The smallest Android APK in the world
https://github.com/fractalwrench/ApkGolf
android apk app java optimization small tiny
Last synced: about 21 hours ago
JSON representation
The smallest Android APK in the world
- Host: GitHub
- URL: https://github.com/fractalwrench/ApkGolf
- Owner: fractalwrench
- Created: 2017-10-08T14:06:44.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2021-04-03T11:27:44.000Z (over 3 years ago)
- Last Synced: 2024-08-02T05:10:38.166Z (3 months ago)
- Topics: android, apk, app, java, optimization, small, tiny
- Language: Shell
- Homepage: https://fractalwrench.co.uk/posts/playing-apk-golf-how-low-can-an-android-app-go/
- Size: 319 KB
- Stars: 623
- Watchers: 27
- Forks: 45
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ApkGolf
This repository hosts the smallest Android APK in the world. The current size of the APK is *678 bytes*.To learn more about how this was achieved, please read the [blog post](blog/BLOG_POST.md).
If you have beaten my score at APK Golf, please submit a PR, and I'll happily add you to the hall of fame!
# Hall of Fame
## Using DSA Keystore, reducing manifest size (1295 bytes, 26% reduction)
The manifest can be further optimised by using a compiled XML file instead, and a DSA Keystore is smaller than the default generated by Android Studio.Contributed by [Madis Pink](https://github.com/madisp) in this [Pull Request](https://github.com/fractalwrench/ApkGolf/pull/3)
## Insane zopfli compression (1180 bytes, 9% reduction)
This improves compression of the APK.Contributed by [Gautam Korlam](https://github.com/kageiit) in this [Pull Request](https://github.com/fractalwrench/ApkGolf/pull/5)
## Use Elliptic-curve signatures (922 bytes, 16% reduction)
Elliptic-curve signatures are even smaller than DSA, and are supported in APK v2 signing.Contributed by [Robert Xiao](https://github.com/nneonneo) in this [Pull Request](https://github.com/fractalwrench/ApkGolf/pull/4)
## Remove classes.dex (824 bytes, 11% reduction)
If a code element is not present in the manifest, no classes.dex file is required by the `PackageParser`.Contributed by [Robert Xiao](https://github.com/nneonneo) in this [Pull Request](https://github.com/fractalwrench/ApkGolf/pull/12)
Original idea from [zhuowei](https://github.com/zhuowei), raised in this [Issue](https://github.com/fractalwrench/ApkGolf/issues/8)## Further hand tuning of manifest (820 bytes, 0.5% reduction)
Further byte-level optimisation of what remains of the manifest.Contributed by [Madis Pink](https://github.com/madisp) in this [Pull Request](https://github.com/fractalwrench/ApkGolf/pull/6)
## Minimising APK Signing Certificate (678 bytes, 18% reduction)
Manual removal of unnecessary fields present in the certificate used to sign the APK.Contributed by [klyubin](https://github.com/klyubin) in this [Pull Request](https://github.com/fractalwrench/ApkGolf/pull/15)