Как стать автором
Обновить

Комментарии 6

Все хорошо. Меня, например, устраивают плагины как отдельные приложения. (Если они не отдельные приложения то, что мешает положить все в одно приложение и правильно собрать).
Но нет ответа на главный вопрос как быть с кодом? Например, необходимо загрузить все классы из плагинов и работать с ними.

Пример: в главном приложении ICalculatorMethod. В главном приложении хочу вызывать
List res = Plugins.getAllCalcMethods();

А сам ICalculatorMethod, чтобы принимал и возвращал все типы (от Object,int до Drawable, NinePatch, Bitmap, Activity) корректно. Ресурсы принадлежат сугубо плагину и не достаются из центрального, а только через интерфейсы в виде Java объектов.
Честно говоря не совсем понимаю зачем помещать код работы с ресурсами плагинов в сами плагины. Решение загрузки ресурсов описано выше, осталось собрать это в 1 универсальный класс работы с плагинами и поместить в основное приложение.
Если же Вы хотите сопроводить плагин дополнительным кодом, то это нужно смотреть в сторону DexClassLoader. В случае если есть спрос — могу обновить статью примером работающего класса подгружающего сторонние классы.
Сопроводите. В вашем примере подразумевается, что плагины пишет сам разработчик. Если мы говорим, о сторонних разработчиках, то тут Public API первично ресурсов.

Например метод Bitmap getImage(); — гораздо предпочтительнее, чем R.drawable.ddd, так как не ограничивает что картинка может генерироваться динамически.
Одним из примеров может служить, что Plugin добавляют кнопки к MainView, то есть есть кнопка и Handler. Хотелось бы узнать, если в коде plugin будет resources.getString(R.id.string_in_plugin) и мы код включим динамически в main app будет ли он корректно работать?
Вообщем как работать с ресурсами в коде плагина, если код будет подключен потом в main application.
НЛО прилетело и опубликовало эту надпись здесь
Хм, да, действительно. Наверно мой мозг автоматические решил найти замену слову «скачивание», т.к. оно уже употреблялось в соседних предложениях до и после вызвавшего у Вас недоумение :) Но найти корректный синоним ему не удалось.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации