Перед вами музыкальный плеер с поддержкой плагинов.
Задачи:
-
Дополните реализацию
MusicAppкодом для загрузки плагинов и управления их жизненным циклом.- Изучите KDoc (комментарии с документацией) к имеющимся типам. Контракты описаны в документации.
- Плагины должны загружаться в раздельных class loader'ах, дочерних по отношению к загрузчику самого приложения.
На каждый
MusicPluginPath– по одному загрузчику классов.
-
Творческая часть: напишите свой плагин (или плагины)
- Можно реализовать один плагин с интересной функциональностью, которую можно найти в популярных плеерах
(как
UsageStatsPlugin). А можно реализовать несколько несложных плагинов, которые взаимодействуют друг с другом и предоставляют "точки расширения" для других плагинов (какConsoleControlsPlugin+ConsoleHandlerPlugin+BasicConsoleControlsPlugin). Во втором случае общие интерфейсы можно добавить в главный модуль, чтобы они оказались в родительском загрузчике и были видны всем плагинам. - Хотя бы один написанный плагин должен поставляться отдельным модулем
- Посмотрите, как оформлен
third-party-plugin, и добавьте новый модуль таким же образом. Обратите внимание на свойствоthird-party-plugin-fileи то, как оно задаётся в разных случаях.
- Посмотрите, как оформлен
- Напишите тесты для новых плагинов.
- Можно реализовать один плагин с интересной функциональностью, которую можно найти в популярных плеерах
(как
-
Требование: программа должна запускаться (и работать корректно) в том числе из "дистрибутива", который можно собрать с помощью
./gradlew installDist. Собранный "дистрибутив" можно найти по путиbuild/install/plugin-support-hwи запустить из него./plugin-support-hw(в UNIX-подобных ОС) илиplugin-support-hw.bat(Windows). Если программе нужны дополнительные ресурсы, настройте их упаковку вbulid.gradle.ktsв секцииapplication { distributions { ... } }