My game, Revengate, builds and exports for the F-Droid Android app store using the following instructions: metadata/org.revengate.revengate.yml · 0bab2be5db048569d82d5e6a42e9b248c0b4ed9f · Yannick Gingras / F-Droid Data · GitLab (you might have to scroll all the way down to the section with
Conceptually, it’s pretty simple: checkout the Godot sources, build Godot for x86, cross compile it for ARM, then build the Android export templates with gradle. Why do all of that rather than take the Godot published package? F-Droid is very strict about their open source policy and they want to make sure that all the apps that they are hosting can be build completely from sources. I like that!
Once we have Godot, it’s just a matter of customizing my
export_presets.cfg to match the current version number and calling Godot in headless mode to build the APK.
So when I run the above, I do end up with a working APK, but for some reason, it’s missing a handful of resources, such as the two noise textures that I use in my water material (src/ui/water_material.tres in the Revengate sources). It’s probably missing a few more things since the package is about 40MB smaller than those that I build locally, but the difference seems subtle because the game is playable and I don’t see bits that are obviously missing besides the water.
The whole build produces a lot of output with too many warnings for me to make sense off. Furthermore, if I run the same commands on my machine, including taking a fresh clone of my games sources so I do not start with a warm Godot import cache, then I end up with a working full sized APK with the water noises.
There are big differences, like my laptop running Ubuntu 23.10 in graphical mode and the F-Droid build server running Debian 11 in full headless mode, but most of the important bit (the JVM, Godot, the Android NDK) are pinned to use the exact same versions.
Anyone has any idea of what I might be doing wrong and how I could update my F-Droid build recipe to produce packages that include the water noise textures?