Что такое platform sdk

25 SDK платформ для качественной работы мобильного приложения

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

В этом материале расскажем, что такое SDK и на что ориентироваться при выборе. А в конце мы собрали огромный список разных SDK платформ на все случаи жизни, чтобы вы не тонули в выдаче Google, как мы когда-то.

Что такое SDK и зачем оно нужно

SDK позволяет разработчикам мобильных приложений прокачать функции своих платформ. Программисты используют SDK, чтобы собирать более качественную аналитику по приложению, создавать пуш-уведомления, синхронизировать оплату, настраивать рекламу и смотреть, как работает приложение и где есть баги.

Software development kit (Комплект для разработки ПО) — это набор инструментов для программного обеспечения (в нашем случае для мобильного приложения). Для аналитики сайта используют Google Analytics, но эта штука только для Web и, чтобы не создавать код, который будет анализировать действия пользователей в мобильном устройстве, можно установить SDK для аналитики.

Простыми словами SDK — это готовый кусок кода, который позволяет прокачать ваше мобильное приложение.

Как выбрать тот самый SDK

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

Существует миллион разных SDK, и выбрать нужные может быть нелегкой задачей. Некоторые из SDK просто необходимы для правильной работы приложения, другие предлагают дополнительные функции, которые повысят качество работы мобилки с помощью фичей — необязательных, но очень полезных.

Нужно помнить о том, что слишком много установленных платформ SDK могут плохо сказаться на работе приложения: замедлить скорость работы, тратить заряд устройства пользователя, а также спровоцировать утечку пользовательских данных.

При выборе SDK стоит обратить внимание на:

Какой выбрать SDK?

Как мы уже говорили, отталкивайтесь от своих целей и основных функций вашего мобильного приложения.

Трекинг и аналитика

Основные и, можно даже сказать, обязательные SDK для аналитики эффективности работы приложения. Стоит отметить, что SDK для трекинга отслеживает источники установок, и с его помощью можно понять, какой из каналов эффективен, а какой нет. А SDK для аналитики исследует пользователей внутри вашего продукта: что они делают в приложении, куда заходят, что смотрят.

Стоит понимать, что это две разные вещи, но сейчас многие SDK предлагают обе функции одновременно, и вам не стоит устанавливать разные платформы, чтобы не захламлять свое приложение.

Основные системы SDK для аналитики и трекинга

Google Analytics — без нее никуда, очень часто эта платформа устанавливается по умолчанию на все приложения. Бесплатное решение со всеми базовыми функциями трекинга. Особенно если у вас помимо мобайла есть сайт, Google Analytics соединяет всю информацию по каналам и предоставляет более полные данные.

Flurry — позволяет отслеживать все то же самое, что и аналитика от Google. Большое преимущество платформы в том, что с событиями достаточно легко работать и строить по ним воронки.

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

Appsflyer — платный трекер, но можно использовать триал на 5000 неограниченных установок. С AppsFlyer удобно измерять конверсии и покупки внутри приложения, LTV и ROI.

App Metrica — аналитика от Яндекс.Метрики. Система умеет анализировать поведение пользователей, а благодаря интеграции со многими рекламными сетями трекинг происходит с большим количеством источников.

Adjust — если вы покупаете платную подписку, в качестве бонуса у вас появляется возможность отслеживать органические установки, а также создавать когорты для просмотра статистики по конкретному пользователю.

Mixpanel — очень дорогая платформа с мощной аналитикой. Сюда входит финансовая аналитика, детальная сегментация, построение воронок, когортный анализ и аналитика внутри приложения.

Тестирование

SDK для тестирования мобильного приложения помогают быстро и без лишних усилий отследить баги, собрать фидбек, провести А/Б тестирование, отследить поведение пользователей в реальном времени.

Удаленный доступ к реальным устройствам

Sauce Lab — позволяет тестировать мобильное приложение на реальных устройствах. Ребята предлагают тысячи iOS и Android устройств расположенных в США и Европе, так что вы сможете выбрать необходимый вам регион.

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

Сбор фидбэка

User Testing — с помощью этого SDK можно быстро получить отзывы реальных пользователей на ваше приложение.

А/Б тестирование

Optimizely — открытое SDK. Они предоставляют возможность использовать несколько функций, таких как аналитику и фичи по безопасности. Главное, что здесь можно проводить A/Б тестирование. Этот инструмент позволяет экспериментировать в режиме реального времени с любой частью вашего приложения.

Бета-тестирование

Чтобы повысить вероятность успешного релиза, необходимо много и тщательно тестировать мобильное приложение. Ваша команда разработки вряд ли сможет протестировать все фичи и сценарии на себе, а с помощью специальных SDK проверить качество работы приложения смогут тестировщики по всему миру. Для этого также существует множество SDK, расскажу о самых популярных из них.

Applause — платформа для тестирования приложений в реальных условиях с тестировщиками со всего мира. Applause собирает команды профессиональных тестировщиков для поиска неисправностей и багов в приложениях на разных устройствах.

Ubertesters — еще одно SDK для управления бета-тестами. Основное назначение этой платформы в дистрибуции приложения бета-тестировщикам, правда на платной основе.

Instabug — SDK со множеством функций, включает в себя инструмент для составления отчетов об ошибках. Также здесь есть возможность увидеть, как работает текущая версия по сравнению с предыдущими, и ознакомиться с видеозаписями сессий ваших пользователей.

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

Hockey App — платформа от Microsoft для дистрибуции мобильных приложений бета-тестерам и отслеживания падений в реальном времени. Также SDK позволяет собирать отзывы пользователей.

Crashlytics — достаточно популярный модульный SDK, предлагает несколько инструментов, каждый из которых можно интегрировать в приложение по отдельности. За что им отдельный плюс. Вся платформа работает с багами и тестированием.

Взаимодействие с пользователями

Carrot quest — SDK позволяет создать чат в приложении и настраивать автосообщения, а главное, начать сбор данных о пользователях: что они делают, куда заходят, и что смотрят.

Сбор данных помогает собирать информацию о пользователях, а наличие чата — создавать персонализированную коммуникацию.

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

Монетизация

Установка SDK для монетизации позволит сдавать в аренду рекламные баннеры и зарабатывать деньги с их показов. Но только помните о том, что реклама всех бесит, и не переусердствуйте с ней.

ironSourse — дает возможность выбирать вид рекламы: баннеры, полноэкранная реклама, видео, нативка, а также следить за аналитикой показов.

Applovin — в этой платформе можно настроить показы рекламы, а также заниматься привлечением пользователей.

Appodeal — помимо того, что в этой платформе можно настраивать рекламу, сервис предоставляет возможность проводить A/Б тестирование рекламы и определять ходовые варианты.

Прием платежей

Если ваше приложение предусматривает оплату товаров или услуг, скорее всего вам понадобится SDK для обработки и приема платежей, чтобы этот процесс был удобным и безопасным для пользователей.

Stripe — принимает множество разных карт от американской American Express до китайской Unionpay, а также позволяет делать переводы с Apple pay, Google pay, Alipay.

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

Fondy — платформа принимает платежи различных карт, а также поддерживает несколько валют.

Карты

При выборе SDK для работы с картами, определитесь для чего они вам? Что предлагает ваше приложение и зачем ему карты? Чтобы отметить вход в офлайн-магазин или офис? Для этого вам понадобится интеграция одного простого инструмента. Если же вам необходима полноценная навигация, значит вам нужен модульный SDK с функциями картирования, навигации, офлайн-карт и т. д.

Google maps — огромное количество разных инструментов в трех категориях: «карты», «маршруты» и «места». Подходит тем, кому действительно необходима продвинутая навигация.

Map.Kit — еще одна большая и многофункциональная платформа, но в этот раз от Яндекс.Карт: дает возможность выбрать практически любую функцию — от составления маршрута до поиска адресов. Отдельный плюс от меня за простой и понятный лендинг, где есть четкие разделы с документацией, тарифами, условиями использования и т. д.

Mapbox — быстроразвивающийся картографический сервис. Есть возможность использовать сервис бесплатно, если у вас до 50 тысяч активных пользователей. Платформа изначально разрабатывалась для создания собственных карт. В набор инструментов входит: создание и настройка (выбор цвета, границ) дорог, линий, географический названий, возможность работы с уже созданными картами, поддержка офлайн карт.

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

Надеемся, вам был полезен наш список, а если вы знаете еще какие-то крутые SDK, делитесь в комментариях!

Александра Каменских
Знакомлю читателей блога Carrot quest с лучшими зарубежными материалами.

Источник

Android SDK

Android SDK — это дополнительный набор инструментов Android Studio, которые помогают написать код, запустить тестирование и отладку, проверить работу приложения на различных версиях операционной системы и оценить результат в реальном времени. Также пакет позволяет пользователям получать информацию о состоянии операционной системы, читать логи и выявлять ошибки. Через SDK для Андроид можно восстанавливать программную оболочку и устанавливать сторонние прошивки.

Что такое Android SDK и для чего он нужен

Набор состоит из пакетов, необходимых для создания приложений. Вот основные, которыми могут воспользоваться разработчики на Android.

Android SDK Platform Tools. В группу входят такие инструменты взаимодействия с Android, как Android Debugging Bridge (ADB), Fastboot, Systrace и другие. ADB помогает найти ошибки в работе приложений, установить APK на смартфон. Fastboot — активировать быструю загрузку для управления мобильным устройством с компьютера, перепрошить гаджет, настроить доступ, параметры работы операционной системы. Systrace — получить информацию о запущенных процессах, проследить за активностью и объемом данных, которые отправлены по сети.

Эмулятор Android. Инструмент помогает протестировать приложения и опробовать функции последних версий Android.

Подробное описание Android SDK и необходимую документацию можно найти на официальном сайте в разделе User guide.

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

Установка доступна на устройствах с операционными системами Windows, Mac, Linux и Chrome OS. Для запуска персональный компьютер должен соответствовать минимальным системным требованиям.

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

Читайте также: Как пользоваться Android Studio

Где скачать Android SDK

Пользователи могут самостоятельно выбрать ОС и загрузить решение на официальном сайте разработчика. При нажатии на кнопку Download Options откроется список доступных версий. Если Android Studio не нужна, можно скачать базовые инструменты командной строки Android (аналог пакета Android SDK Tools, эта программа устарела). Для просмотра, удаления пакетов и установки доступных версий Android SDK предназначен SDK Manager.

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

Как установить Android Studio на Windows

Процесс инсталляции занимает 2–5 минут в зависимости от характеристик ПК. Для корректной установки необходимо:

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

После извлечения всех файлов на экране появится надпись Completed. Для завершения установки нужно нажать на кнопки Next и Finish.

Читайте также: Что выбрать: iOS- или Android-разработку?

Где скачать и как установить Java Development Kit

Для работы с Android SDK требуется загрузка Java Development Kit. Java Development Kit отвечает за графическое отображение исходного кода. Чтобы увидеть список версий Java, нужно перейти на официальный сайт Oracle. Для установки необходимо:

1. Выбрать версию. Последние версии Java доступны только для 64-битных систем. Их можно загрузить либо в компрессированном архиве, либо в инсталляционном файле.

2. Зарегистрироваться в системе Oracle. Если у пользователя есть учетная запись — пройти процедуру авторизации.

3. Скачать Java Development Kit для Android на ПК.

4. Выполнить все требования установочного файла, указав место хранения утилиты.

5. После завершения установки закрыть программу и перезагрузить компьютер.

6. Теперь можно приступать к настройке и работе с Android SDK.

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

Интерфейс и настройка

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

Чтобы произвести начальную настройку программного обеспечения, необходимо:

1. Запустить установленный софт SDK от имени администратора. После запуска программы высветится приветственное окно, в котором можно быстро создать проект.

2. Выбрать заголовок Create New Project и нажать на понравившийся шаблон (Activity). Можно работать с нуля или редактировать готовый проект. Activity отвечает за логику экрана приложения. Лучше установить либо No Activity, либо Empty Activity.

3. Указать в появившемся окне настроек название проекта и пакета. Если в планах публикация в Google Play, во втором случае нужно подобрать уникальное наименование. В окне можно поменять директорию проекта, язык программирования (Java или Kotlin), указать минимальную поддерживаемую версию Android SDK. Чем она ниже, тем больше устройств будут поддерживать приложение.

Начните свой путь в IT

Попробуйте себя в программировании, аналитике данных, Data Science и других востребованных специальностях — получите все курсы для входа в IT по цене одного.

Чтобы добавить дополнительные инструменты Android SDK, нужно:

1. В открывшемся окне перейти во вкладку Tools и выбрать SDK Manager. Вкладка Tools расположена в верхней части установленного приложения.

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

2. После этого открыть вкладку SDK Tools. В ней представлена информация об установочных пакетах, можно скачать необходимые для работы.

Знакомство и базовая настройка Android Studio завершены.

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

Возможные ошибки при установке и запуске

Если устройство соответствует характеристикам, но программа выдает ошибку Skipping SDK Tools 11, были установлены старые компоненты Java, а затем добавлен софт SDK. Необходимо переустановить все компоненты, начиная с пакетов разработки от Java и заканчивая Android Studio. После удаления рекомендуется очистить остаточные файлы программой CCleaner (или аналогами).

Программа конфликтует с кириллицей, поэтому иногда возникает ошибка non-ASCII. Чтобы устранить ее, необходимо переименовать учетную запись.

Android SDK Tools — это функциональное программное обеспечение, помогающее разработчикам создавать оптимизированные приложения. Независимо от того, используется ли Java, Kotlin или C#, SDK позволяет запустить продукт и получить доступ к уникальным функциям операционной системы. Google активно поддерживает и продвигает открытое программирование, поэтому каждый желающий может попробовать себя в роли кодера для ОС Android.

Вы начнете с основ программирования, изучите Java, Kotlin, Android Studio, Git, UX/UI и PlayMarket.

Источник

Пакет SDK для приложений Windows

Пакет SDK для приложений Windows — это набор компонентов и инструментов для разработчиков, которые представляют новый этап развития платформы для разработки приложений Windows. Пакет SDK для приложений Windows предоставляет унифицированный набор API-интерфейсов и средств, которые можно единообразно применять для любого классического приложения в операционных системах Windows 11 и более ранних версий, вплоть до Windows 10 версии 1809.

Начало работы с пакетом SDK для приложений Windows

Пакет SDK для приложений для Windows предоставляет расширения для Visual Studio 2019 и Visual Studio 2022. К этим расширениям относятся шаблоны проектов, настроенные для использования компонентов пакета SDK для приложений для Windows в новых проектах. Кроме того, библиотеки пакета SDK для приложений Windows доступны через пакет NuGet, который можно установить в существующих проектах.

Рекомендации по конкретным версиям пакета Windows App SDK см. в статьях Каналы выпуска и Файлы для загрузки.

Функции пакета SDK для приложений для Windows

В следующей таблице описаны функции разработки, предоставляемые текущими выпусками пакета SDK для приложений для Windows. Дополнительные сведения о каналах выпуска пакета SDK для приложений для Windows, включая сведения о каждой из этих функций, см. в разделе Функции, доступные через канал выпуска.

Каналы выпуска пакета SDK для приложений Windows

В следующей таблице приведены общие сведения о различных каналах выпуска.

ВыпускОписание
СтабильныйЭтот канал поддерживается приложениями в рабочих средах. Он включает только стабильные API. По умолчанию документация по пакету SDK для приложений Windows описывает стабильный выпуск.
Предварительный просмотрЭтот канал предоставляет предварительную версию следующего стабильного выпуска. В период между выпуском предварительной и следующей стабильной версий могут быть реализованы критические изменения API. Документацию по использованию предварительного выпуска см. в руководстве по предварительным и экспериментальным версиям.
ЭкспериментальныйВ этом канале представлены экспериментальные функции на ранних этапах разработки. Экспериментальные функции могут быть удалены из следующего выпуска или не выпущены вообще. Документацию по использованию экспериментального выпуска см. в руководстве по предварительным и экспериментальным версиям.

Дополнительные сведения о каналах выпуска пакета SDK для приложений Windows см. в статье Каналы выпуска пакета SDK для приложений Windows.

Преимущества пакета SDK для приложений Windows, которые получат разработчики Windows

Пакет SDK для приложений Windows предоставляет широкий спектр API-интерфейсов Windows с реализациями, не зависящими от ОС, которые предоставляются разработчикам в виде пакетов NuGet. Пакет SDK для приложений Windows не предназначен для замены Windows SDK. Windows SDK будет работать так же, как и раньше, а многие основные компоненты Windows будут совершенствоваться с помощью API, которые предоставляются в выпусках ОС и Windows SDK. Мы рекомендуем разработчикам переходить на пакет SDK для приложений Windows в удобном для себя темпе.

Унифицированное использование API для разных платформ классических приложений

Разработчики, которые хотят создавать классические приложения для Windows, вынуждены выбирать между несколькими платформами и средами приложений. Хотя каждая из таких платформ предоставляет множество функций и API, которые могут использоваться приложениями, созданными с помощью других платформ, некоторые из них могут использовать только определенные платформы. Пакет SDK для приложений Windows унифицирует доступ к API-интерфейсам Windows из классических приложений Windows 11 и Windows 10. Независимо от выбранной вами модели приложений вы получите доступ ко всему набору API-интерфейсов Windows, представленных в пакете SDK для приложений Windows.

Мы планируем и дальше развивать пакет SDK для приложений Windows, устраняя пока сохранившиеся различия между разными моделями приложений. Пакет SDK для приложений Windows будет включать как API WinRT, так и собственные API-интерфейсы C.

Согласованные возможности в разных версиях Windows

Так как API Windows меняются с каждой новой версией ОС, разработчикам нужно использовать такие техники, как адаптивный к версии код, чтобы учесть все различия в версиях, которые может использовать аудитория приложения. Это приводит к усложнению кода и работы разработчиков.

Интерфейсы API пакета SDK для приложений Windows будут работать с ОС Windows 11 и более ранних версий, вплоть до Windows 10 версии 1809. Таким образом, если все ваши клиенты работают с Windows 10 версии 1809 или любой более поздней версии Windows, вы сможете применять новые API-интерфейсы и функции пакета SDK для приложений Windows сразу после их выпуска. При этом вам не придется писать дополнительный код для адаптации к разным версиям.

Увеличенная частота выпусков

Новые API и функции Windows ранее обычно были привязаны к выпускам ОС, которые выходили один или два раза в год. Пакет SDK для приложений Windows будет чаще предоставлять обновления, чтобы вы могли быстрее получать доступ к инновационным возможностям на платформе разработки Windows по мере их появления.

Стратегия развития для разработчиков

Новейшие планы по обновлению пакета SDK для приложений Windows см. в описании стратегии.

Отзывы и участие в разработке

Мы создаем пакет SDK для приложений Windows как проект с открытым кодом. На нашей странице Github вы найдете дополнительную информацию о том, как мы работаем над пакетом SDK для приложений Windows и как вы можете поучаствовать в разработке. Ознакомьтесь с руководством для участников, если вы хотите задать вопрос, начать обсуждение или предложить функцию. Мы стремимся к тому, чтобы пакет SDK для приложений Windows предоставлял разработчикам максимум преимуществ.

Источник

SDK тебе, SDK мне, SDK всем! Как делать SDK и зачем это нужно

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk

Наша компания делает сервис для хранения и обработки данных с промышленных устройств (насосы, буры и прочая промышленная техника). Мы храним данные наших клиентов и предоставляем функционал для их анализа: построение отчетов, графиков и еще много чего.

И в ходе работы мы заметили, что интеграция каждого нового клиента сильно затягивается, а количество различных ошибок постоянно возрастает. Тогда стало понятно, что пора с этим разобраться. Как показал анализ ситуации, IT отдел каждого нашего клиента разрабатывал свое решение для локального сбора данных с устройств и отправки к нам в сервис. Все усложняет то, что с учетом специфики отрасли, не всегда есть доступ к интернету и необходимо хранить данные локально и отправлять при первой возможности. И таких нюансов достаточно большое количество, что и приводит к росту количества ошибок.

И тогда мы поняли, что лучшим решением в данной ситуации будет разработать SDK и предоставлять его клиенту. Сразу же начал искать лучшие практики и рассуждения на тему разработки SDK и сильно удивился — в рунете об этом практически ничего нет, а в басурманских интернетах очень мало информации и она разрознена. Ну что ж, задача понятна, обдумана и реализована.

Пора определяться

Начнем с того, что определим, что такое SDK и зачем он может быть нужен.

SDK (от англ. software development kit) — комплект средств разработки, который позволяет специалистам по программному обеспечению создавать приложения для определённого пакета программ, программного обеспечения базовых средств разработки, аппаратной платформы, компьютерной системы, игровых консолей, операционных систем и прочих платформ. SDK использует преимущества каждой платформы и сокращает время на интеграцию.

Инженер-программист обычно получает SDK от разработчика целевой системы.

Что ж, логично. Простыми словами, SDK — это пакет библиотек, для того, чтобы клиент мог легко и быстро начать работать с вашей системой (в данной статье речь пойдет про наш сервис, но всё изложенное в статье применимо и к другим видам SDK) или выполнять однотипные действия.

Но, как и у любого подхода, у «Пути SDK» есть как преимущества, так и недостатки.

Преимущества

Высокая скорость интеграции нового клиента — вашим клиентам нужно писать меньше кода.

Переиспользование кода — один и тот же код используется сразу в нескольких местах. Можно сказать, что это дублирование предыдущего пункта, но речь идет о том, что логика работы везде одинокава, из чего следует

Предсказуемость поведения — использование одних и тех же библиотек приводит поведение систем к определенному стандарту, что сильно облегчает поиск и устранение ошибок и уязвимостей.

Качество кода — много где любят экономить на тестировании (жалко бюджета, горят сроки и прочие причины). Понятно, что в реальном мире покрыть тестами все участки проекта это учень трудоемкая задача. Но качественно протестировать все модули SDK, а затем использовать их — это путь повышения процента покрытия тестами, что приведет вас к снижению количества ошибок.

Документация — тот же сценарий, что и с тестами. Покрыть документацией весь проект достаточно проблематично. Переиспользование модулей SDK повышает процент покрытия документацией, что снижает порог вхождения новых сотрудников в проект и вообще помогает по жизни.

Все преимущества, по сути, это следствия самого главного — мы очень качественно пишем код один раз, а затем его переиспользуем.

Недостатки

Высокие требования к качеству кода SDK — следствие главного преимущества. Ошибка в SDK породит ошибки во всех системах, его использующих.

Установка ограничений — SDK — это набор библиотек для реализации стандартных сценариев. Иногда разработчики SDK полагают, что кроме реализации одного из предусмотренных сценариев клиенту ничего не потребуется, что клиенту проще сделать все с нуля самостоятельно, чем строить пьедестал из костылей для SDK.

Dependency hell и обновления — при расширении функционала (например, кастомизации решения под конкретного клиента), вы выпустите новую версию библиотеки. Но существуют зависимости, различные наборы версий библиотек у разных клиентов, и нужно очень тщательно следить за обратной совместимостью или строгим версионированием.

Когда SDK действительно нужен

У вас есть несколько стандартных сценариев, которые реализуются заново из раза в раз — собственно, наш случай.

Внутренние разработки — в разных проектах вы используете системы логирования, конфигурирования систем, работу с HttpRequest, БД, файлами? Выработайте внутренний SDK — набор библиотек для внутреннего использования. Вы в любой момент можете расширить функционал SDK, но скорость разработки новых проектов, процент покрытия тестами и документацией вырастет, а порог вхождения новых разработчиков снизится.

Когда SDK скорее всего будет лишним

Сценарии использования не определены или постоянно меняются — оставьте реализацию кастомных решений клиентам и помогите им. Не надо городить вундервафлю, которая будет только мешать. Очень актуально для молодых компаний и стартапов.

Вы не умеете делать качественно — у меня для вас плохая новость: пора учиться. Но отдавать кривое решение клиенту это очень, очень неправильно. Клиентов надо уважать, в конце концов.

Итак, мы определились, что такое SDK, с его преимуществами и недостатками и когда он нам нужен. Если после этого вы поняли, что SDK действительно нужен — приглашаю вас встать на «путь SDK» и разобраться, а каким он должен быть и как его, черт подери, делать?

«А вы любите Lego?» — Модульность

Представим все возможные сценарии использования SDK (вы же уже определились, зачем он вам нужен, правда?) и сделаем по библиотеке на сценарий. Чем не выход? Но это плохой подход, и так мы делать не будем. А будем так:

Например, с учетом специфики задачи, нам необходимо, чтобы вся логика задавалась из конфигов. Реализуем модуль работы с конфигами (чтения, записи, обновления, валидации и обработки конфигураций) и будем использовать его во всех остальных модулях.

А для реализации стандартных сценариев мы действительно сделаем модули — этакие «управляющие» модули, каждый из которых реализуют один конкретный сценарий, используя другие модули того же SDK. Таким образом для реализации стандартных сценариев клиент должен лишь подключить управляющий модуль сценария (а он сам подтянет все зависимости), а для реализации нестандартных — используем базовые модули, так же переиспользуя код.

Именно этим обусловлено то, что SDK не должен быть одной библиотекой (хотя очень хочется, понимаю. Ведь когда весь SDK в одной библиотеке, можно забыть о зависимостях и всем, что с ними связано), а быть комплектом библиотек. Дополнительным плюсом данного подхода будет уменьшение «веса» программы клиента — он будет тянуть тяжеловесный SDK, а подтянет только необходимые модули.

Но не стоить плодить модули как попало, ведь чем больше модулей, тем больше головной боли от их зависимостей! Т.е. важно правильно разбить логику на модули, соблюдая баланс между решением «все в одном» и «на каждую функцию свой модуль».

«А что, так можно было?!» — Универсальность

Предоставьте клиенту различные интерфейсы для работы с вашей библиотекой. Приведу пример:

Если предоставить только синхронную версию, то при реализации асинхронного приложения клиент вынужден будет делать асинхронные обертки вашего синхронного метода. Если предоставить только асинхронную версию — ситуация похожа. Дайте клиенту и то и другое и он скажет вам спасибо.

Приятным плюсом будут дженерики. Например, у нас есть класс для работы с конфигурациями, реализующий методы упаковки конфига в строку, загрузки конфига из файла и т.д. Конфигурация конкретного модуля будет наследоваться от нашего базового класса, но для работы с новым классом нам необходимо также предоставить методы распаковки.

Таким образом мы предоставили клиенту аж три реализации, которые он может использовать. Дженерики очень удобны, но при работе с динамическими типами их можно вызывать только через рефлексию, что накладно. Общий принцип универсальности, надеюсь, понятен.

«Родитель 1, Родитель 2, Дети[ ]» — Именование

Что самое трудное в работе программиста? Выдумывать имена для переменных.

И тем не менее… Правильное именование модулей, классов, свойств и методов сильно помогут тем, кто будут с вашим SDK работать. Пример, не требующих комментариев:

Kinect 2.0 SDK example

Всё ясно из названий классов и методов. А если есть автодополнение кода в вашей IDE, то зачастую можно и в документацию не заглядывать, если и так все понятно.

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

Документация, в SDK, как правило, проста и лаконична. Она обычно делится на две части: Tutorial — пошаговый курс в стиле “Построим город за 10 минут” и раздел Reference — справочник по всему, что можно сделать с помощью данного SDK.

Мы выбрали самый простой путь — summary + articles. Мы добавляем Xml атрибуты для методов и классов, которые светятся в intellisense как подсказки. Используя Docfx мы строим документацию по этим атрибутам и получаем подробную и удобную документацию, которую дополняет статьями, описывающими сценарии использования и примеры.

«— Чтобы чисто было! — Как я буду вилкой-то чистить?» — Тестирование

Что можно сказать про тестирование в рамках обсуждения SDK… Must have! Лучшим решением будет TDD (несмотря на то, что я негативно отношусь к данному подходу, в данном случае я решил использовать именно его). Да, долго. Да, нудно. Но зато в будущем вы не повеситесь от постоянных падений SDK на стороне и следствий этого падения.

Основной сок ситуации заключается в том, что отдавая SDK клиенту вы теряете контроль: вы не можете быстро пофиксить ошибку, сложно эту самую ошибку найти, да и выглядеть в такой ситуации вы будете достаточно глупо. Поэтому — тестируйте. Тестируйте лучше. И еще раз. И, на всякий случай, протестируйте ваши тесты. И тесты тестов. Так, что-то я увлекся, но важность тестирования SDK, надеюсь, понятна.

«Жертва, которая не могла противостоять своему прошлому, была поглощена им» — Логи

Поскольку вы отдаете SDK сторонней компании, в следствие чего теряете контроль над ситуацией, в случае ошибки (на этапе тестирования вы все-так решили «и так сойдёт», да?) вас ждет достаточно долгий и болезненный процесс поиск этой самой ошибки. Именно тут вам на помощь придут логи.

Логируйте все, абсолютно все, а в случае возникновения ошибки запросите у вашего клиента логи. Таким образом вы сэкономите много времени и сможете не потярять лицо перед клиентом.

«Alarm! Achtung! Attention!» — Ошибки

Что такое platform sdk. Смотреть фото Что такое platform sdk. Смотреть картинку Что такое platform sdk. Картинка про Что такое platform sdk. Фото Что такое platform sdk
Долго размышляя на тему ошибок я пришел к интересному выводу — ни один метод в вашем SDK не должен отдавать ошибку, не описанную в документации. Согласитесь, очень неприятно, когда вы подключаете стороннюю библиотеку для работы с HttpRequest, а она вываливает на вас какой-нибудь NullPointerException и StackTrace, который уводит в недра библиотеки. И вам приходиться погружаться в эти самые «недра», пытаясь понять, насколько глубока кроличья нора, и в чем, собственно, проблема.

Поэтому я предлагаю следующее решение — декларируйте закрытый список возможных исключений и документируйте их. Но, т.к. нельзя быть увереннным, что вы предусмотрели все, оберните метод в try-catch, а пойманную ошибку — в задекларируему. Например, ConfigurationException, который будет содержать InnerException — пойманную ошибку. Это позволит стороннему разработчику поймать все возможные ошибки, но в случае чего быстро разобраться в чем дело.

Версии или «как не укусить себя за хвост»

Во избежание проблем в будущем крайне рекомендую использовать строгое версионирование. Выберете подходящую вам систему построения версий и используйте ее. Но если новая версия библиотеки не имеет обратной совместимости — это необходимо указать. Как это разруливать — думать вам. Но подумать об этом точно стоит.

«Паровозик, который смог» — Deploy

Необходимость актуальности документации и версий порождают требование к корректности деплоя. В своем решении мы используем следующее решение (костыли, но работают).
Когда надо выпустить нвый релиз, разработчик дергает bat’ник с указанием номера релиза, а затем батник:

На выходе получаем обновленную версию сайта с документацией, откуда можно скачать архив с последней версией SDK.
В планах на будущее — упаковка всего в Nuget пакеты и публикация в локальный Nuget репозиторий.

Рекоммендую обратить внимание на этот пункт, ведь вы можете существенно снизить количество головной боли, вызванной отсутствием актуальной информации о новой версии библиотеки.

«-А так можешь? — Фигня. Смотри как надо!» — Примеры & toolkit

Заключение

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

Спасибо за прочтение, буду рад вашим комментариям. Надеюсь, эта статья будет для вас полезной.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *