Clean build with GeckoView dependency

I’m trying to modify my otherwise simple app depending on GeckoView to not rely on Mozilla’s Binary GeckoView builds and instead build them from source as required by F-Droid iinm.
I don’t particulary like this dependency on a random binary myself. (If a prebuilt GeckoView were provided by Debian or F-Droid, I’d be fine with that)

I’m not very familiar with gradle and am struggling to get this working. Are there already any apps in F-Droid using GeckoView (only GeckoView best case) that I could use as reference?
I took a glance at Firefox Klar, but there is so much going on that I’m not able to follow.

If a prebuilt GeckoView were provided by Debian or F-Droid, I’d be fine with that

I don’t think this is gonna happen. Our target is building everything from source.

Are there already any apps in F-Droid using GeckoView

There’s Fenix on its way: https://gitlab.com/relan/fdroiddata/-/blob/fenix/metadata/org.mozilla.fenix_fdroid.yml. I made a set of scripts to configure and build all needed components, including GeckoView.

Thanks, with those scripts as reference and a lot of work, I was finally able to complete the ./mach build part of GeckoView in an Debian Sid chroot.
However, the build is consistently failing in the gradle stage, but I can’t find a reason as to why – mach build didn’t log any errors.

No rule to make target '../../../security/nss/lib/crmf/crmf_crmf/libcrmf.a', needed by 'libxul.so'.  Stop.

Maybe I’ll try again in a few days.


I don’t have high hopes of this happening, but I don’t think it would conflict with “building everything from source”. If F-Droid built GeckoView from Source, an app using the resulting binary, can be reproduced by first reproducing F-Droid’s GeckoView build and then reproducing the app build itself, right?

In theory - if enough apps were using GeckoView - this would allow the buildserver to save resources as it only needs to go through the lengthy GeckoView buildprocess once. (And I could save time by not having to struggle with GeckoViews build process '^-^ ).

In practice those benefits are probably negetaed by having multiple GeckoView versions, apparently only very a few apps using GeckoView and the overhead of implementing it.

It’s possible to make fennecbuild scripts more modular, so that an app build recipe could just call $$MozBuild$$/build.sh to build GeckoView.

The app itself will have to be updated at least every 4 weeks to bump GV version because each Firefox release fixes vulnerabilities.

@Oneric, beware that GeckoView includes a proprietary library (com.google.android.gms:play-services-fido) since 83.0:

Thanks, for letting me know!
Unfortunately, I never managed to get a clean GeckoView build working myself (although regular Firefox build worked well) and I currently don’t have the time and motivation to try again.

With the trouble to get a clean build and the need to update all apps using GeckoView on every GeckoView update, it almost seems worth it to reimplement a cut-down version of the app with WebView instead when I need it again :\