05 October 2016
Android plugin dependencies update
When Corona Labs initially implemented plugins and opened up the Corona Marketplace to the community, plugin developers could include any external library needed by a plugin. This opened up a world of possibilities for plugin developers, but it also introduced some dependency issues for Android that now need to be addressed.
Plugin dependencies on iOS aren’t an issue because of how Apple structures their libraries and frameworks. On Android, however, dependencies can lead to problems where different plugins want to use different versions of supporting libraries.
Google, for instance has two main libraries that other plugins frequently need to use: Android Support Library and Google Play Services. To complicate things, there are multiple versions of these library files available.
Typically a plugin developer will use the latest version of these libraries when they initially build a plugin. Over time, newer versions of the libraries are released, but plugins are not updated to use these latest versions. This results in plugins that simply don’t work together. Naturally, as the number of plugins in the marketplace grows, the number of incompatibilities will grow as well. So, over the past few months, our engineers have been working to solve this problem.
In the coming weeks, we intend to introduce Dependency Plugins. These are special plugins that address the various incompatibilities between Android libraries. Essentially, plugin developers will be able to specify plugin dependencies in the
metadata.lua of their plugin submission to ensure compatibility with other plugins.
Once plugins start using these new Dependency Plugins, you should see fewer plugin conflicts. However, as plugins become more dependent on Google Play Services, it will be important for Android devices to have Google Play Services enabled. Thus, if your app user has explicitly disabled Google Play Services and tries to run a Corona app, they will be prompted to re-enable it before your
main.lua code runs (a dialog message will guide them through the process).
We will publish an announcement once the changes to the plugin framework are finalized. In the meantime, please join us in Corona Forums to discuss further.