Pull to refresh

Одна история разработки под Kindle

Reading time4 min
Views3.6K
В этой статье я хочу поделиться опытом разработки для Kindle 3 (ныне Kindle Keyboard). Эта статья не содержит какой-либо критики Амазона, его команды, сервисов и предоставленых мне в рамках программы материалов (в этом плане я связан соглашением участника программы бета-тестирования).

Немного истории


Зимой этого года я купил Kindle 3g. Устройство мне понравилось — у него был огромный потенциал. Память, wi-fi, 3g, линукс, микрофон (не задействован). Я тогда подумал — если бы время отклика экрана было ниже,­ то читалку вполне можно было использовать как замену планшету или телефону. В конце-концов — многие здесь пол-жизни смотрели чёрно-белый телевизор, и его вполне хватало.
После пары дней использования захотелось большего ­ русской клавиатуры и нормального плеера. Интернет сказал что всё это можно поставить, но нужен джейлбрейк. К тому времени я уже успел прочесть новости про удаление книжек Амазоном, и испугался (напрасно) что Амазон может прикрыть доступ к бесплатному 3g, или вообще отправить моему киндлу команду на самоуничтожение (шутка). К этому времени я уже пол-года занимался английским с репетитором, которая показала мне прекрасную программу Anki. Мне очень хотелось, чтобы её порт был на киндле. Кроме того, я начал ходить на бесплатные курсы по Java в Softserve IT Academy. Всё это вылилось в то, что для своего итогового проекта в академии я решил написать аналог Anki для киндла.

Программа бета-тестирования KDK


Я знал, что Амазон начал закрытое бета тестирование Kindle SDK (KDK). Подумав «чем чёрт не шутит», я отослал запрос на участие в программе.
Здесь я рисковал — не получи я место в программе, ­пришлось бы писать приложение «наощупь», используя SDK, извлечённый умельцами из самого киндла, без полноценной справки и javadoc. Как я понял потом — ­мне бы это сделать не удалось.
Переписка с менеджером из Амазона шла примерно месяц, он запросил описание работы приложения (в терминологии Амазона ­— active title, или киндлет), эскизы и график релизов каждой функциональности. Всё это я ему отправил, в программу меня приняли. Я обрадовался и начал кодить.

Немного о самом приложении


Приложение создано чтобы помочь пользователям в изучении каких-либо фактов, представленных в виде карточек вопрос-ответ. Card-based learning работает так: вы видите карточку с вопросом, вспоминаете ответ, и затем смотрите этот ответ на другой стороне карточки. После этого вы можете оценить своё знание (хорошо, средне, плохо, не знаю) и эта оценка повлияет на время следующего показа карточки. В приложении есть несколько примеров колод с картами, но предполагается, что пользователь будет сам создавать колоды, добавлять в них карточки и учить их. Языки интерфейса — русский, английский и немецкий. Поддерживаются раскладки с символами немецкого, испанского, русского и украинского языков. Есть встроенная помощь.
KDK, железо киндла и политика Амазона наложили некоторые ограничения на приложение. Их пришлось обходить, уходя от полной совместимости с Anki. Не получилось сделать совместимость по файлам (возможен только односторонний экспорт колод из Anki в виде tab-separated txt) и синхронизацию с колодами на сервере. Хак физической русской клавиатуры не работал в киндлетах, пришлось писать свои раскладки для альтернативных языков. Приложение тестировалось только на kindle 3/3g (keyboard) и kindle DX (последний — только в симуляторе).

Попытки связаться


Месяца через 3 я закончил разработку, провёл выпускную презентацию в академии и сообщил менеджеру что всё готово. Он попросил меня отправить приложение на рассмотрение и тестирование. Я отправил, и стал с нетерпением ждать ответа. С этого момента прошло 4 месяца. Никакого фидбека я не получил. Примерно через месяц я начал ненавязчиво напоминать о себе. Я писал менеджеру, писал, используя форму обращения в поддержку, писал на внутреннем форуме разработчиков. Ответ пришёл через 3 месяца, с просьбой устроить митинг по скайпу. Я снова обрадовался, и мы договорились о времени. Это странно, но найти в скайпе мы друг-друга не смогли — он не видел меня, а я видел его только как контакт в оффлайне. После двух попыток связаться через скайп менеджер попросил меня найти какой-нибудь конференц-номер в ЕС или США. Я почесал голову, но смог решить эту проблему, выслав менеджеру конференц-номер, и, заодно, номер своего мобильного (можно ведь недорого позвонить на него со скайпа). С этого момента письма начали возвращаться мне как undelivered.
Я снова написал на форум разработчиков, где мне ответил парень, такой же участник программы, как и я, но более удачливый. Он сказал что у него проблем со связью нет, и его приложения без проблем постятся в Amazon Market, принося небольшую, но всё-таки прибыль. Он же дал мне контакты другого менеджера, который впрочем тоже мне не ответил. Тут я подумал «хватит».

Хватит


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

В заключении


Я хочу выразить огромную благодарность разработчикам KDK, мне очень понравилось с ним работать. Я далеко не гуру разработки под мобильные устройства, но, по сравнению с другими средами разработки (Android SDK, xCode), KDK довольно дружественная. Это моё личное мнение.
Я также хочу выразить благодарность Softserve IT Academy, в которой я многому научился, и которая позволила расшевелить мой мозг после нескольких лет зацикленности на веб-разработке.
Ещё я благодарен моей жене, которая выполнила перевод для немецкого интерфейса.
И наконец — спасибо всем, кто развивает Anki.
Извините, если выглядит сильно пафосно, как-будто эпиграф к толстой книжке. Я уже заканчиваю.

Резюме


В программу бета-тестирования KDK попасть вполне реально, если есть проект полезного приложения (или игры). Зарабатывать деньги разработкой под киндл тоже вполне реально, такие люди существуют. Написать приложение на Java, не зная её в начале проекта, тоже можно, нужно только захотеть.
Tags:
Hubs:
+35
Comments7

Articles