Closed Donkey-Doug closed 1 year ago
@IzzySoft the libre flavour is ready, but i work with applicationIdSuffix
es and other weirdness in the gradle files, so I'd like to check things further with you. Would you mind emailing me to continue and get it to f-droid (without spamming everybody here)?
@deckerst I'm not an Android dev or build expert myself, so I'm afraid I cannot much help with those details. But of course we have some members in our team who are familiar with such things. So may I recommend to either simply open a Request for Packaging aka RFP (the easy approach and generally a good start as you get first indications from our scanners) or go straight for a merge request at fdroiddata if you dare (the "straight-forward approach" giving you even more details and hopefully results in it being merged, thus Aves becoming available at F-Droid)? Discussion would then take place there, where it belongs. And I can pick up there as well, being one of the maintainers :smile:
While at least the RFP path is easy enough for even the average user to go, if you prefer I can open that one for you.
Aves v1.7.5 is available. With this release a few changes of interest to this thread:
libre
flavour,izzy
and libre
flavour makes the user choose a map layer before seeing the map (in other words, no call to Google Maps if the user does not want it).Recap of version differences here.
@IzzySoft About the libre
flavour, the app ID is deckers.thibault.aves.libre
, distinct from the normal app ID deckers.thibault.aves
for all the other flavours. A "fat" APK for this flavour is already built and attached to the release. The gradle file has been modified to make sure that all the proprietary plugins and dependencies are guarded depending on flavours, but I've played with fdroidserver
and it yields false positives, detecting google/crashlytics/huawei stuff as problematic even though they are not used for the libre
flavour. So I'll let you request and handle things on the F-Droid side.
As far as I'm concerned Aves is now buildable without proprietary stuff:
# ./scripts/pub_get_all.sh
# ./scripts/update_flutter_version.sh
# ./scripts/apply_flavor_libre.sh
# flutter build apk -t lib/main_libre.dart --flavor libre
You can check the GitHub release workflow for reference.
Thanks @deckerst – and let me have a look:
A "fat" APK for this flavour is already built and attached to the release.
Cool! I just checked to make sure: my updater currently is nailed to only accept the ApkMatch: /izzy-armeabi-v7a/i
(my repo cannot handle multiple APKs per release (yet) so I usually pick the one with the widest compatibility, which ATM is armeabi
), so no conflicts.
The gradle file has been modified to make sure that all the proprietary plugins and dependencies are guarded depending on flavours, but I've played with fdroidserver and it yields false positives, detecting google/crashlytics/huawei stuff as problematic even though they are not used for the libre flavour.
Not sure how exactly you've set that up. At F-Droid's RFP repo that would be even "expected behavior" as issuebot there does not know about the flavors (how could it, as there's no way to specify any). That's usually "fixed" with the MR, where the build recipe specifies the flavor. But then, for some reason my library scanner still reports GMS & GMaps to be detected, so something must be in there. Using apktool
I've extracted the smali, and indeed there's a directory for /com/google/android/gms
containing auth, common, dynamite and maps – all with "code" inside, so not just stubs. I'm not familiar enough with Flutter to investigate the cause. flutter build apk -t lib/main_libre.dart --flavor libre
definitely should take care to build the specified flavor (at F-Droid we usually run flutter config --no-analytics
before pub get all
to make sure it keeps the analytics stuff out – but as I didn't detect any of that here, that seems to be not needed).
Looking at the scripts you've listed, my guess is you include Maps (plugins/aves_map
is not removed), which most likely pulls in Google Maps for Flutter – which then pulls in GMS as GMaps depends on it. Could that be?
Nevertheless: I'd recommend going ahead and opening an RFP with F-Droid. As you've already worked with fdroidserver
, you might as well jump that step and directly open a merge request with your *.yml
at fdroiddata. Someone with deeper Flutter knowledge will hopefully find time to find out and help around.
When I run your tool on the izzy
and libre
apk bundled with the v1.7.5 release I get this:
tibo@redstart:~/code$ scanapk ~/Downloads/app-izzy-armeabi-v7a-release.apk
W: Cant find 9patch chunk in file: "aO.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "Nk.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "s3.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "jZ.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "sn.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "uW.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "Tx.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "Pb.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "51.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "h-.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "m3.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "Hi.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "rj.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "z5.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "o1.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "YM.9.png". Renaming it to *.png.
No libsmali.jsonl entry for /com/shaded/fasterxml/jackson, this library will be ignored.
Libraries detected:
-------------------
* Android Support v4 (/android/support/v4): Development Framework, Apache-2.0
* AndroidX Activity (/androidx/activity): Utility, Apache-2.0
* Android Jetpack Annotations (/androidx/annotation): Utility, Apache-2.0
* Androidx Core (/androidx/core): Utility, Apache-2.0
* AndroidX Fragment (/androidx/fragment): UI Component, Apache-2.0
* Lifecycle (/androidx/lifecycle): Utility, Apache-2.0
* Android Multi Dex Library (/androidx/multidex): Utility, Apache-2.0
* Android Activity Saved State (/androidx/savedstate): Utility, Apache-2.0
* Startup (/androidx/startup): Utility, Apache-2.0
* Android Jetpack VersionedParcelable (/androidx/versionedparcelable): Utility, Apache-2.0
* Jetpack WindowManager Library (/androidx/window): Utility, Apache-2.0
* Glide (/com/bumptech/glide): Utility, BSD-2-Clause
* Google Maps API (/com/google/android/gms/maps): Map, Proprietary; NonFreeDep,NonFreeNet
* Google Mobile Services (/com/google/android/gms): Development Framework, Proprietary; NonFreeDep
* Flutter (/io/flutter): Development Framework, BSD-3-Clause
* Google Maps for Flutter (/io/flutter/plugins/googlemaps): Map, BSD-3-Clause; NonFreeNet
* url_launcher (/io/flutter/plugins/urllauncher): Utility, BSD-3-Clause
* flutter printing (/net/nfet/flutter/printing): Utility, Apache-2.0
* Android-TiffBitmapFactory (/org/beyka/tiffbitmapfactory): Utility, MIT
* Java MP4 Parser (/org/mp4parser): Utility, Apache-2.0
* ijkplayer (/tv/danmaku/ijk/media): Utility, LGPL-2.1-or-later
Offending libs:
---------------
* Google Maps API (/com/google/android/gms/maps): NonFreeDep,NonFreeNet
* Google Mobile Services (/com/google/android/gms): NonFreeDep
* Google Maps for Flutter (/io/flutter/plugins/googlemaps): NonFreeNet
3 offenders.
tibo@redstart:~/code$ scanapk ~/Downloads/app-libre-release.apk
No libsmali.jsonl entry for /com/shaded/fasterxml/jackson, this library will be ignored.
Libraries detected:
-------------------
* Android Support v4 (/android/support/v4): Development Framework, Apache-2.0
* AndroidX Activity (/androidx/activity): Utility, Apache-2.0
* Android Jetpack Annotations (/androidx/annotation): Utility, Apache-2.0
* Androidx Core (/androidx/core): Utility, Apache-2.0
* AndroidX Fragment (/androidx/fragment): UI Component, Apache-2.0
* Lifecycle (/androidx/lifecycle): Utility, Apache-2.0
* Android Multi Dex Library (/androidx/multidex): Utility, Apache-2.0
* Android Activity Saved State (/androidx/savedstate): Utility, Apache-2.0
* Startup (/androidx/startup): Utility, Apache-2.0
* Android Jetpack VersionedParcelable (/androidx/versionedparcelable): Utility, Apache-2.0
* Jetpack WindowManager Library (/androidx/window): Utility, Apache-2.0
* Glide (/com/bumptech/glide): Utility, BSD-2-Clause
* Flutter (/io/flutter): Development Framework, BSD-3-Clause
* url_launcher (/io/flutter/plugins/urllauncher): Utility, BSD-3-Clause
* flutter printing (/net/nfet/flutter/printing): Utility, Apache-2.0
* Android-TiffBitmapFactory (/org/beyka/tiffbitmapfactory): Utility, MIT
* Java MP4 Parser (/org/mp4parser): Utility, Apache-2.0
* ijkplayer (/tv/danmaku/ijk/media): Utility, LGPL-2.1-or-later
No offending libs found.
The izzy
flavour has the usual offenders and the libre
flavour has no offending libs, as expected.
About F-Droid and gradle, it seems F-Droid can usually understand flavours when the yml file declares the flavour used, but that's only a thing for regular java/kotlin projects. For Flutter projects, F-Droid doc says the yml shouldn't specify the gradle favour, and instead just include it in the flutter build
command. I guess that's why the F-Droid check script fails with false positives. And it's not only the GMS stuff. For example, their script fails because it doesn't know the Maven repo https://developer.huawei.com/repo/
(which is only used with the huawei
flavour). Anyway, I will submit the a packaging request and let them deal with it.
When I run your tool on the izzy and libre apk bundled with the v1.7.5 release I get this:
Yes, I indeed only checked the results in my repo – thus the "izzy" flavor. OK, then I misunderstood – apologies!
Anyway, I will submit the a packaging request and let them deal with it.
Good idea! There are other members in our team who are much more familiar with these realms and then would help to get it on. Thanks a lot!
Great – and all pipelines passed, congrats! I've already started the review – but rather wait for my team mate concerning the ABI splits. He might also come up with ideas on reproducible builds: if you like those, that would be premium – if not, they are not mandatory.
Stand by for the next index: build monitor shows successful build of 3 Aves APKs :star_struck: So Aves will show up before the weekend probably.
Suggestion: as people are unlikely to simultaneously have the libre and "regular" versions installed, you can just have the icon labelled "Aves" without the "libre".
Having said that, thank you for releasing on F-Droid! :-)
@strider72 you'd never have to test things I guess, or wanted to compare? I did, and was quite glad that the icons had labels so I knew which was which :wink: But admitted, such cases are rare.
Heh. I've compared different apps all labelled 'Contacts". But I see your point. :-)
@strider72 those at least (mostly) have different icons (unless they've kept the default Andy-Bot). At one point I had 3 different versions of Aves on the same device. Where it not for the different icons I would not have known which to delete :see_no_evil: Well, actually I use adb uninstall <packageName>
so I wasn't really lost at that point. But if you e.g. want to check whether a certain tasks works differently in a different build, different icons are really helpful.
Add the app to fdroid.
I assume that the app is currently in early stage and therefore not added, but ultimately the app should be added to fdroid.