-
Notifications
You must be signed in to change notification settings - Fork 90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: Add fastlane for F-Droid #2020
base: master
Are you sure you want to change the base?
Conversation
could you update the commit body describing why this change is necessary i.e. I copied this for you, but am not sure if there is another reason:
see also: https://github.com/digitalbitbox/bitbox-wallet-app/blob/master/CONTRIBUTING.md |
Is there anything else that will be needed? that page also mentions tvBanner.png is this optional? |
I don't think that there is another reason. Theoretically you could use fastlane for automating many things but F-Droid just needs it for the metadata. Am I wrong, @linsui? |
Yes, that's optional. I suppose this PR is 100% sufficient for F-Droid. |
Yes, F-Droid only needs the metadata. The fastlane structure must be put in the root path currently. You can use the Triple-T structure instead if you don't want to put it in the root path. |
@IzzySoft wrote on GitLab:
Can we go that way or is the root path needed? Would that be an issue for you, @thisconnect? |
could you add this to the git commit body message? see also: https://github.com/digitalbitbox/bitbox-wallet-app/blob/master/CONTRIBUTING.md
|
I think ideally it would be somewhere in https://github.com/digitalbitbox/bitbox-wallet-app/tree/master/frontends/android cc @Beerosagos wdyt? is this the fastlane https://gitlab.com/-/snippets/1895688 docs? what is Triple-T structure? |
That won't work as F-Droid's build process would not find it there. It's only looked for in the standard locations, as pointed out. And btw,
A little more complex, and linked from the snippet you've just linked:
😉 |
Agree. Our tree is probably a bit unusual compared to most pure mobile apps, but |
|
Alright, I updated the location of the folder. |
Not sure if |
It doesn't work. |
maintain summary/description/screenshots/changelogs for F-Droid
If I interpret this correctly, fdroid would reject this because of the bundled BitBox02 firmware. If that is correct, we can't proceed here, right? |
Luckily it's not "private" (only visible/accessibly by myself) but "personal" (run by me) 😜 But then, I see no APK at the releases which I could pick. And seeing the size of the Update: ah, there's just no APK at the latest release. Hm, so it's just slightly over the limit. And that could be mitigated by having an "ARM only" build, leaving out the (rarely used) x86 which could still be available with the "fat build" or a separate "x86 only". Yes, in that case I could take it into my repo then. |
If you are talking about BitBoxApp v4.36.1: that was a hotfix to the Windows release. 4.36.0 is the latest Android release |
Yes, that one fooled me initially 🙈 |
Do you need anything from me before continuing with the merge? |
As far as I understand we can't get into fdroid because of the firmware binary that is still bundled in the app. I guess it does not make sense to merge before there is a clear path to inclusion/publishing? |
Depends on what sense you're looking for 😉 First, it doesn't hurt – and second, you could use the very same metadata for listing in other places, as Fastlane is considered quite standard. For example, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
all else LGTM 😉
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
while 48x48 is technically OK (it's the bare minimum size), it might not look that good on higher resolution devices. Is there a larger variant available (up to 512x512 is permitted; 192x192 would be fine and at least 96x96 desirable)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did not find it in 512x512 unfortunately. @benma, may you provide me with the icon as 512x512 PNG?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not a deal breaker. As I wrote: 48x48 is the bare (accepted) minimum. If there's a better resolution, yes please. If not: 🤷♂️
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If it should be round then the one you posted is fine (I think), but this was changed for the desktop app, see 55006ff
and the new desktop icon: https://github.com/digitalbitbox/bitbox-wallet-app/blob/master/frontends/qt/resources/app_icon_source.png
the source of the logo: https://github.com/digitalbitbox/bitbox-wallet-app/blob/master/frontends/android/icon_source.png
let me know if you need anything else.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@thisconnect the one I just posted was taken from the app's listing at GooglePlay, so it should be the correct one for fastlane/metadata/android
. But of course your choice, it's your app 😉
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @benma. I updated the graphic.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Either one looks good to me, but I don't know if it has to be round on Android, but this shouldn't be a blocker I guess, lets see if this works.
we'll still need to look into the size issue of the app #2020 (comment)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know if it has to be round on Android
AFAIK both are fine. Especially when it comes to Fastlane, which is just to represent the app in "listings". For "Android internals" (e.g. show the icon in the app drawer etc), Fastlane is not used. So IMHO the choice here is up to you. And as pointed out: that round one is what is used by your PlayStore listing, so it should be fine here as well.
we'll still need to look into the size issue
Yupp, please 😉 Per-ABI builds should take care of that I guess.
Maybe I am missing something. The point of this PR was to get into F-Droid. Is that possible? If not, then the PR is not needed, unless there are plans to use it for other repos. Merging it without using it in practice does not make sense to me, it would just become a maintenance burden then without any benefit. You mentioned PlayStore, but the BitBoxApp is already there.
What is that private repository and how does it relate to F-Droid? Sorry again, I am quite uninformed about the F-Droid ecosystem 😇 |
OK, full disclosure: it's my repo – and I'm one of the F-Droid maintainers. My repo currently is the largest 3rd-party F-Droid repo (and the second largest after F-Droid's own), with more than 1k apps listed, having a little less strict inclusion criteria. It often serves as stepping-stone for apps not yet fully ready to meet F-Droid's inclusion criteria, but also has it's "permanent residents". You can read more about it here. |
Nice! So if we merge this PR you can add it to your repo - i.e. it is also a per-requisite for that? If so we will go for it 😄 |
That should be easily achievable. Let me perform a quick check… OK, my library scanner confirms there are no stoppers from that end. Which leaves the size limit, which your APK is slightly above. Could you provide per-ABI builds? Then I could pick one of those (you'd name if it should be armeabi which is supported by most devices, or rather arm64 which supports only 64bit devices but including those 64bit-only; as long as the For the full inclusion criteria of my repo, you can find them here. And yes, with the size question solved (and this PR merged), your app would meet those 😃 |
You may merge it now. 👌 |
Nice! In your link it says
Maybe this could be such an exception? 😇 What is a pre-ABI build? I googled and could find much. |
A spelling error 🙈 should read "per ABI build". I.e. separate APK files per architecture, like one for armeabi another for arm64, and so on. Guess that would be this, but I'm no Android dev… // Specifies a list of ABIs for Gradle to create APKs for.
include("x86", "x86_64") So you could first try with 2 APKs, one with both x86 (which I'd ignore) and one with both arm (which I'd take if it fits). If that still gets to big, we'd really need the one you want me to pick as separate build. But I rather guess that
Haha, nice try – but no. We still have the option of separate APKs fitting into that limit, so we should use that first. There must be much better reasons to make an exception 😉 |
do we have stats on % of Android x86 users? here I read "only a very limited number of devices, like Asus Zenfone 2, Genymotion/ Android emulator " use x86 |
That's about it, yeah. Single-digit percentage AFAIK. With my repo I only consider ARM (very few exceptions). The last graphs I saw was armeabi (32bit) still slightly ahead of arm64 – but whichever of the two you choose, someone will complain. The arm64 builds cannot be used on 32bit devices (yes, there are still some around – like the Fairphone 2 I use) – and the 32bit builds do not run on a few devices which are "64bit only" (in general, most 64bit devices also support armeabi). 32bit devices will "die out" sooner or later (ARM just announced their new chips will be 64bit only). I still stick with 32bit builds for some apps to support longevity: I want to support people using their devices as long as possible, to help avoiding unnecessary "electronic waste". But if there are sufficient alternatives for an app (and there are several wallet apps around), I guess picking arm64 is the better choice. Decision is yours, though 😉 |
Are you interested in continuing? 😅 |
@CynthiaArmstrong I am afraid we don't have the resources to dedicate to this for the time being, unless our current releases or codebase (including this PR) can be used downstream for F-Droid releases as-is without any more changes/effort. We unfortunately don't have the resources to change our release process, as there are many other priorities we are focusing on. |
@benma maintenance required for this after the merge is almost negligible. Sure, you can add per-release changelogs each time you release a new version, but that's optional. The only thing to keep in mind is keeping description and screenshots matching the actual version of the app. But honestly, that's manageable; changes so drastic that updates are needed to that are rare. And if such happen, you'll want desc+pics updated – no easier way than doing that in the fastlane structure, which then gets picked up automatically. And those per-release changelogs are quite helpful in cases where those using your app should take cautions before updating, as those changelogs are shown right next to the app description. So you could make use of them when needed and skip them otherwise. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM; I'd only remove 41.txt
but that's up to you.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe remove 41.txt
unless it's really the "initial release". It's probably not the latest one either, so nobody'll see it anyway, with build.gradle
having 45
right now.
@IzzySoft I was more referring to the effort related to splitting the APK (i.e. change our build processes), testing that each works, building and releasing for multiple Android architectures, etc. |
That should not keep you from merging Fastlane I guess? |
As mentioned in #2020 (comment), I prefer not to merge it unless it will be used in practice, otherwise it becomes purely a maintenance cost with no benefit. |
BTW: Scan results for the APK from the currently latest release look fine:
Split-APKs would be welcome of course, but at least for F-Droid.org would be not "mandatory" (for my repo, the size is quite on the "red line", though): it's beyond the 30 MB "soft limit" and scratching on the 32 MB limit of one of the APIs I use. And as I said: I don't see any maintenance cost – though I get what you mean. But with fastlane available, @CynthiaArmstrong could reach out to F-Droid with an RFP (request for packaging), as at least my library scanner sees no show stoppers (no guarantee F-Droid's code scanner might find one, though). |
There was the issue about how we can't get into F-Droid because we bundle the BitBox02 firmware binaries. Did something change? Are there other requirements? The BitBoxApp binaries are afaik not reproducible, would that be a blocker? |
Ah – that's not covered by my scanner indeed. My scanner only sees the resulting APK and thus what got there. F-Droid looks at the source tree and thus sees how it will get there. Well, no: nothing changed regarding that. F-Droid will still insist to build from source (or pull from a Maven repo it trusts. And I'm afraid there's no such Maven shipping those binaries – and neither you can provide the source code to build them from 😢
If F-Droid can build them, but not reproducible? No, that IMHO would not be a blocker. As long as the process then produces an APK that works as expected. If you use the same approach for your builds, that APK might even be reproducible (so F-Droid then would ship it with your signature) – but even that is not mandatory, though strongly suggested. |
probably I am misunderstanding you, but here we provide:
|
@thisconnect Thanks! In that case: @linsui can you have a look if that could be integrated with a build recipe, and what would be needed for it (e.g. git submodules, or srclibs) – in a way it works out for F-Droid buildservers? |
Awesome, I am so glad to see progress here. 😊 |
It's possible but I don't know if we can build it reproducibly since we don't use docker. We can have a try. |
F-Droid uses the information in the
fastlane
folder to show metadata like description, screenshots and changelogs to its users.This PR includes everything that is necessary. Optionally the featureGraphic.png could be more beautiful. I took it from Google Play. The icon.png could be 512x512px.
This was discussed in #1171.