feat: downloader plugin system
Feature description
A plugin system for downloaders should be implemented.
Motivation
Maintaining plugins for many different APK providers is a burden that would be better dealt with by the community.
Implementation details
(The arrow labeled null is pointing to "Select downloader")
Plugins are jar files that can be loaded by DexClassLoader. They can be imported from local storage or downloaded from a remote source just like patch bundles. Plugins will have a manifest.json file which contains information about the plugin such as the name and which class to load. The specified class will implement the AppDownloader interface. A repository class will manage all plugins. Plugin information can be stored using room database if needed.
Acknowledgements
- [X] This request is not a duplicate of an existing issue.
- [X] I have chosen an appropriate title.
- [X] All requested information has been provided properly.
- [X] The issue is solely related to the ReVanced Manager
Please add implementation details to the issue.
Done