Each app can have complete app store content, including localized descriptions, feature graphics, and screenshots (as of v0.103 of the F-Droid client app and v0.8 of fdroidserver). This is possible both when apps are added via build metadata as well as when including pre-built files in a simple repository. There are three paths to including app store content for apps (in order of preference):
- In the app’s source repository
- In the app’s build metadata in an fdroiddata collection
- Directly in the F-Droid repo
There are two data formats:
- descriptive materials in plain text or HTML
- graphics and screenshots as PNG or JPEG files
One important detail: dangerous and unneeded metadata is stripped from image files before they are included in the repo. For example, JPEG EXIF data has security issues, and it is not needed to display images. This can also mean that the images are recompressed.
In the app’s source repository
There are two options for including the app store materials in an app’s source repository: fastlane supply and Triple-T Gradle Play Publisher. Both of these are free software tools that integrate into an Android developer’s workflow. Once the files are included in the app’s source repo, and those files are included in a tagged release of the app, F-Droid will include all those files.
In the end, it is not actually necessary to actually install or use either fastlane supply nor Gradle Play Publisher. F-Droid includes these files purely based on the standard file layout that those tools use.
All the localized descriptions and graphics will automatically show up in the F-Droid repo once they are available in the source repo of a release that the repo builds. For example, if these files are included in a git repo’s master branch but not yet in a tagged release, they will not be included.
The last important detail is that the texts in the app’s metadata file will override all other descriptive texts from Fastlane/Triple-T. That is specifically Name, Summary, and Description. Once an app’s descriptive texts have been moved into the source repo, then file a merge request or issue to remove Summary and Description from the app’s metadata file.
Here’s the general rule of filling the index from the metadata sources:
metadata file --> fdroiddata localized files --> fastlane/triple-t in app source
For things that can also be scraped from the APK, then we get:
metadata file --> fdroiddata localized files --> fastlane/triple-t in app source --> APK
In the app’s build metadata in an fdroiddata collection
All the app store materials can also be added to any fdroiddata repository
of build metadata. This follows a file layout modeled after fastlane
supply,
modified to fit into the fdroiddata workflow. Any files in this layout
will be copied into the repo and added to the repo’s index file by fdroid
update
.
- <fdroiddata>/
└── metadata/
└── <package-id>/
└── <locale>/
├── full_description.txt
├── short_description.txt
├── title.txt
├── video.txt
├── changelogs/
│ ├── <version-code>.txt
│ └── <version-code>.txt
└── images/
├── featureGraphic.png
├── icon.png
├── promoGraphic.png
├── tvBanner.png
├── phoneScreenshots/
│ └── *.png
├── sevenInchScreenshots/
│ └── *.png
├── tenInchScreenshots/
│ └── *.png
├── tvScreenshots/
│ └── *.png
└── wearScreenshots/
└── *.png
The images must be either JPEGs or PNGs.
Example:
- …/ToGoZip/app/…
- the sourcecode for the android app ToGoZip
- …/ToGoZip/fastlane/metadata/android/en-US/full_description.txt
- contains the (us-) English description of the app ToGoZip.
- …/ToGoZip/fastlane/metadata/android/de-DE/full_description.txt
- contains the German description of the app ToGoZip.
- …/ToGoZip/fastlane/metadata/android/en-US/changelogs/9.txt
- contains description of the changes made in versionCode 9
- in fdroid app this will be shown above the app description
- …/ToGoZip/fastlane/metadata/android/en-US/images/featureGraphic.png
- this image will be shown on top of the fdroid-s app description
- …/ToGoZip/fastlane/metadata/android/en-US/images/phoneScreenshots/….
- images in this folder will be shown below the fdroid-s app description
Directly in the F-Droid repo
The ultimate destination for files from the app’s source repo and fdroiddata metadata sub-directories is in the F-Droid repo. The text all gets included into the index file (aka index-v1.json). All of the graphics files can be directly included in the repo. If graphics files are also in the app’s source or fdroiddata, then the files directly in the repo will be overwritten. The text files from the fastlane layout are ignored if they are in the repo.
- fdroid/
└── repo/
└── <package-id>/
└── <locale>/
├── featureGraphic.png
├── icon.png
├── promoGraphic.png
├── tvBanner.png
├── phoneScreenshots/
│ └── *.png
├── sevenInchScreenshots/
│ └── *.png
├── tenInchScreenshots/
│ └── *.png
├── tvScreenshots/
│ └── *.png
└── wearScreenshots/
└── *.png
fdroid update
adds all the graphics files it finds in the repo to the
index. fdroid server update
will sync all of the files in the repo to the
various locations where the repo is actually hosted.