Repo and Archive icons aren't detected

I’ve downloaded two icons from the web as I’m testing a repo but every single time I do fdroid update I get:

root@server:/fdroid_repo# fdroid update
2024-01-06 03:48:24,078 WARNING: repo_icon "repo/icons/icon.png" does not exist! Check "config.yml".
2024-01-06 03:48:26,563 INFO: Creating signed index with this key (SHA256):
2024-01-06 03:48:26,563 INFO: REDACTED?
2024-01-06 03:48:27,572 WARNING: repo_icon "repo/icons/icon.png" does not exist, generating placeholder.
2024-01-06 03:48:28,628 INFO: Creating signed index with this key (SHA256):
2024-01-06 03:48:28,628 INFO: REDACTED?
2024-01-06 03:48:29,436 WARNING: repo_icon "repo/icons/icon.png" does not exist, generating placeholder.
2024-01-06 03:48:30,076 INFO: Finished

I don’t understand why it says that the icons don’t exist when they are right there, even if I rerun fdroid update I get the same message even when the placeholder icons are there. This can’t be a permission error as I’m running all this as root as you can see.

Also, I get this too:

WARNING: Using Java's jarsigner, not recommended for verifying APKs! Use apksigner

How do I set apksigner to be used? Couldn’t find anything about that on the docs.

so this exact file exists?

So it’s installed and you can run apksigner ?

  1. Yes, that file exists, that’s even the file F-droid at some point created automatically when it didn’t detected the icons the first time fdroid update was executed
  2. It’s not in path but it’s downloaded when setting up the SDK, I thought that if we are setting the SDK in $ANDROID_HOME that will be used for all operations. Will add it to path

Btw I first had the icon names configured in the config.yml file with something else but was receiving these messages so I commented out the lines just in case.

Fixed this with fix: fix existing icon detection for repo and archive (!1425) · Merge requests · F-Droid / fdroidserver · GitLab.
About apksigner: fdroid is not using it because for some reason (maybe this is the default but I doubt it checking the pip page) I got an old version, checking the source files I found that signindex.py is always using jarsigner.
I can’t get the version for fdroidserver:

fdroid --version
no version info found!

I’m assuming I got an old version comparing the existing files with the current source code.

It’s recommended to install from package management, so you get the deps, but then clone fdroidserver from gitlab and use fdroid from that one instead

Thanks, yes, what I did was install fdroidserver with pip.

Hey,

I recently dived into the F-Droid server’s code and noticed an issue that might be causing your problem with the icons. Even though you’ve placed the placeholder icons in the root/repo directory, you also need to put the same icons in the root directory of your repo. It looks like there’s a bit of a mix-up in the code where it’s actually checking for the icons in the root directory as well. So, try placing those icons in the root and it should work out.

Also, about the warning with Java’s jarsigner and switching to apksigner, you’re right to want to make that change. apksigner is more secure and suitable for modern APKs. However, setting apksigner as the default isn’t straightforwardly documented in F-Droid. You’ll need to have apksigner installed (part of Android SDK build tools), and then tweak the F-Droid server configurations to use it. This might require some trial and error or consulting the community, as the official docs don’t seem to cover this.

Hope this helps.

1 Like