Right now the image supports Gradle >= 3.0. This should be wide enough for the majority of use cases. If we need to add additional gradle versions we can easily do so.
2.1 KiB
Docker F-Droid Build Environment
Self-contained build environment using F-Droid tools. This extends docker-executable-fdroidserver with the latest fdroiddata and the latest Android and Gradle SDKs.
The idea is to be able to add in your own app's configuration and build it with F-Droid's tooling.
See Build Server Setup on f-droid.org and issue #370 on fdroidserver
(Improve first time user experience of fdroid build).
Building
docker build -t fdroidbuild .
The fdroiddata
is placed into /fdroiddata
.
Try it yourself!
Building from F-Droid Metadata
docker run -v "$(pwd)/build:/fdroiddata/build" fdroidbuild build org.fdroid.fdroid -l
Should produce the org.fdroid.fdroid
apk in build
.
Building in Repo
If you have a directory named fdroid
at the root of your repository, its contents will be copied over into the /fdroiddata/metadata
directory. Additionally, the token %REPO
in all metadata files will be replaced with the path to the repo in the container. This is so the metadata file does not need to know the exact path the repo will live at during the build.
A F-Droid metadata file is named <appId>.txt
and looks like this. So, if you have such a file located at fdroid/net.monarchpass.app.txt
, you should be able to run this:
docker run -v "$(pwd)/build:/fdroiddata/build" -v "$(pwd):/repo" fdroidbuild build net.monarchpass.app.txt -l
and build the latest version of that app.
Note on Gradle versions
F-droid's build server supports multiple versions of Gradle, and uses several methods to detect which version to use, such as parsing it out of build.gradle
or gradle-wrapper.properties
. This image uses that same approach, but it only includes Gradle versions >= 3.0.
Gradle versions are kept in /opt/gradle/versions
.
License
GNU GPL v3.