Что нужно помнить при работе с SDK, как делать не нужно:
👉 Разработка SDK != разработка клиентского приложения. Например, не стоит перехватывать UI у клиентского приложения, если внутри SDK возникла ошибка. Лучше, прокиньте состояние ошибки и дайте пользователям SDK самим решать как ее отобразить.
👉 Предоставление пользовательского интерфейса через SDK влечет за собой ряд проблем: Отсутствие гибкости, конфликты ресурсов, увеличение размера SDK и сложности в его обслуживании, а так же проблемы масштабируемости. Но если вам все-таки необходимо поставлять UI с SDK, то разделите свое SDK на 2 разных
package: UI и Core Logic с возможностью их раздельного использования. Не забудьте про Analytics Hooks в UI модуле!👉 Минимизируйте внешние зависимости. А если используете - то лучше всего их изолировать. Неприятно ради 1 библиотеки подключать RxJava и Lottie, для конвертации в свой формат. Не забывайте, что не все библиотеки предоставляют лицензию на использование в коммерческих целях, например, GPL лицензии
❗️Старайтесь избегать глобальных синглтонов. Неприятно, когда в приложении появляется утечка памяти, а я никак не могу на это повлиять, кроме как отказаться от вашего SDK.
👉 Пишите документацию и CHANGELOG
С какими неприятными последствиями спорных решений в SDK вы сталкивались?