Useful Links¶
Reducing APK size¶
- Reduce your app size
- Strategies To Reduce Flutter App Binary Size
- Minify android app but do not obfuscate it
Code Optimization¶
- Code Optimization with Proguard and R8 in Android
- The Unofficial R8 Documentation
- Adopt optimizations incrementally
- the dependency-analysis-gradle-plugin can help detecting unused dependencies, duplicate class files, and more
- Android Resources Checker: check your project for unused resources to trim down APK size (Python)
Security¶
- How to keep your key safe and what measures to take for the event of loss?
- Signing Key Rotation
- Sign your commits
- Network security configuration
Push Notifications¶
we recommend the use of UnifiedPush – which is an open standard for push notifications that rely on web push. It allows having efficient „real-time“ notifications, on-par with FCM. Also see Push Notifications here on our website.
- libraries implementing UnifiedPush
- android-embedded_fcm_distributor as fallback for those not having any UP distributor app installed on-device
Replacements for proprietary libraries¶
- many of GMS' features are covered by microG, see the implementation status here.
- for many Firebase features, there are replacements. Examples include:
- appwrite provides database, auth, storage and more (BSD-3-Clause); see e.g. this appwrite-example for a quick intro
- Clorabase provides database, storage, push notifications and more (MIT license)
- Supabase provides database, auth, storage and more (Apache-2.0 license)
- for alternatives to Google Maps libraries, take a look at this page in the OSM Wiki
Also see Replacing proprietary libraries here on our website.
How to find out what dragged in a proprietary library?¶
gradle :app:dependencies(show gradle dependency tree)flutter pub deps(show Flutter dependency tree)npm list(show NodeJS dependency tree, see https://stackoverflow.com/a/47040266)yarn why mime-db(NPM: find out what dragged in a given module, see https://stackoverflow.com/a/54599863)
Also see How to exclude Gradle dependencies to simply exclude what is not needed (but test to make sure it's really not needed)
Miscellaneous¶
- Removing Unwanted Manifest Permissions With tools:node
- using build flavors
- choose a license: SPDX license list / Codeberg recommendations
- Had your app named com.example.* and found out that's not the best idea? This one could help you fix it: Android-Package-Renamer