How to meet LGPL obligations when publishing?

If I publish an app on Google Play, my understanding is that because it uses Processing Core I have to adhere to the LGPL licence. Most seems nice and straight forward attribution etc, but I’m stuck with the aspect that requires an end user to be allowed to replace the supplied LGPL library with a modified version if they want to. I think the default for a Processing Android App is that the core library is statically linked, so an end user cannot replace it. Is that correct? And if so, is there a way to set up dynamic linking to a .so file that loads at runtime, that could (in theory, even if not very easily) enable and end user to change the core library file used by my apps?

Not really sure why anyone would really want to bother, of course, but if that’s what the licence requirements include then I assume we have to follow the rules?

I use both the Processing IDE with Android Mode & Android Studio, tending to export to Android Studio for final builds (to meet the ever changing rules that Google impose).

Does anyone here have experience publishing an Android App that uses Processing, but has it linked dynamically using a .so file?

Many thanks

Mark

AFAIK, if a user decides to use another Processing JAR file, that user would need to re-sign your APK file w/ their own key, since Android enforces signature integrity; thus becoming a different app id.

As long as you don’t explicitly disallow that, just maybe you’re already complying w/ the LGPL license?

In order to be sure your app 100% complies w/ LGPL, at startup, you could 1st check if there’s any “processing-core.jar” in known locations, like “/sdcard/” or “/storage/emulated/0/”:

new File(Environment.getExternalStorageDirectory(), "processing-core.jar");

You could also allow the user to specify a path for it on your app’s settings.

If none provided, just default to your APK’s bundled Processing.

P.S.: Not an Android dev. That’s as far as my knowledge reaches!

1 Like

Thanks for replying :+1:

I’ve done a bit of reading and it seems that because processing-core is inside the app/libs folder and listed as a dependency in the build chain, this is a generally understood and acceptable way to meet LPGL for library use on Android. The practicality of a user ever replacing the library is far from trivial, but it seems it can be done by decompiling an APK and somehow messing about with it. So, it can in theory be achieved and therefore meets the LPGL obligation :rofl:.

1 Like