Комментарии 6
Все хорошо. Меня, например, устраивают плагины как отдельные приложения. (Если они не отдельные приложения то, что мешает положить все в одно приложение и правильно собрать).
Но нет ответа на главный вопрос как быть с кодом? Например, необходимо загрузить все классы из плагинов и работать с ними.
Пример: в главном приложении ICalculatorMethod. В главном приложении хочу вызывать
List res = Plugins.getAllCalcMethods();
А сам ICalculatorMethod, чтобы принимал и возвращал все типы (от Object,int до Drawable, NinePatch, Bitmap, Activity) корректно. Ресурсы принадлежат сугубо плагину и не достаются из центрального, а только через интерфейсы в виде Java объектов.
Но нет ответа на главный вопрос как быть с кодом? Например, необходимо загрузить все классы из плагинов и работать с ними.
Пример: в главном приложении ICalculatorMethod. В главном приложении хочу вызывать
List res = Plugins.getAllCalcMethods();
А сам ICalculatorMethod, чтобы принимал и возвращал все типы (от Object,int до Drawable, NinePatch, Bitmap, Activity) корректно. Ресурсы принадлежат сугубо плагину и не достаются из центрального, а только через интерфейсы в виде Java объектов.
Честно говоря не совсем понимаю зачем помещать код работы с ресурсами плагинов в сами плагины. Решение загрузки ресурсов описано выше, осталось собрать это в 1 универсальный класс работы с плагинами и поместить в основное приложение.
Если же Вы хотите сопроводить плагин дополнительным кодом, то это нужно смотреть в сторону DexClassLoader. В случае если есть спрос — могу обновить статью примером работающего класса подгружающего сторонние классы.
Если же Вы хотите сопроводить плагин дополнительным кодом, то это нужно смотреть в сторону DexClassLoader. В случае если есть спрос — могу обновить статью примером работающего класса подгружающего сторонние классы.
Сопроводите. В вашем примере подразумевается, что плагины пишет сам разработчик. Если мы говорим, о сторонних разработчиках, то тут Public API первично ресурсов.
Например метод Bitmap getImage(); — гораздо предпочтительнее, чем R.drawable.ddd, так как не ограничивает что картинка может генерироваться динамически.
Одним из примеров может служить, что Plugin добавляют кнопки к MainView, то есть есть кнопка и Handler. Хотелось бы узнать, если в коде plugin будет resources.getString(R.id.string_in_plugin) и мы код включим динамически в main app будет ли он корректно работать?
Вообщем как работать с ресурсами в коде плагина, если код будет подключен потом в main application.
Например метод Bitmap getImage(); — гораздо предпочтительнее, чем R.drawable.ddd, так как не ограничивает что картинка может генерироваться динамически.
Одним из примеров может служить, что Plugin добавляют кнопки к MainView, то есть есть кнопка и Handler. Хотелось бы узнать, если в коде plugin будет resources.getString(R.id.string_in_plugin) и мы код включим динамически в main app будет ли он корректно работать?
Вообщем как работать с ресурсами в коде плагина, если код будет подключен потом в main application.
Про загрузку кода есть ещё такая ссылка:
android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html
android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Пишем плагины для Android