четверг, 14 октября 2010 г.

Программирование под Android. С чего начать.

Появилась необходимость написать проект под Android. Засел за гугл и пару дней шерстил интернет на предмет полезной информации. Вот результаты.

Ресурсы Google
Android SDK. Здесь есть все необходимые инструкции для начала работы - что скачать и где, как установить и настроить. Если кратко, то вам потребуются SDK, JDK (5 или 6), IDE Eclipse (версии 3.4 или 3.5) и ADT Plugin for Eclipse, который ставится прямо из Eclipse.

The Developer's Guide. Детальное руководство по разработке под Android от разработчиков платформы. Есть и русский перевод, но он пока далеко не полон.
Android Training - серия уроков мастер-класса по разработке под Android.
Блог разработчиков Android - кладезь полезной информации. Ниже я перечислю некоторые статьи, которые меня особо заинтересовали.

FAQ: Common Tasks and How to Do Them in Android

Eclipse
Lars Vogel. Android Development Tutorial - Froyo - руководство по разработке приложений для Android на Eclipse. Детальное, с подробными картинками.

"С чего начать работу под Android" - как что настраивать, на русском и с картинками.

Update, март 2011. Внес и я свою лепту - постарался описать в отдельной статье процесс настройки Eclipse "от" и "до", включая генерацию цифровой подписи, автоматизацию сборки, подключение ProGuard и т.д.

Альтернативные IDE
Вместо Eclipse можно использовать коммерческую IDE IntelliJ IDEA 9 Ultimate Edition - плагин для Android в нее встроен. Update: в IntelliJ IDEA 10 плагин для android доступен и в бесплатной версии IDE.

Еще один вариант IDE - MOTODEV Studio for Android от компании Motorolla. IDE основана на Eclips. Подробнее можно прочитать в комментариях здесь.

Можно использовать и NetBeans IDE. Для этого потребуется скачать и установить соответствующий плагин NBAndroid. Правда, судя по всему, плагин пока довольно сыроват.

Update: до кучи ARM выпустила Development Studio 5 Community Edition — среду разработки для Android

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

Update: Доклад на Google I/O 2010, посвященный JIT-компилятору для Dalvik - A JIT Compiler for Android's Dalvik VM.

Языки программирования
Официальный язык программирования под Android - это Java 1.5. Кроме того, есть Android NDK, позволяющий разрабатывать критичные к производительности части Android-приложений на С и C++. Java и NDK - это по сути все, что предлагает Google.

Естественно, Java устраивает не всех. Появились и другие варианты разработки Android-приложений.

Прежде всего, это язык Scala, высокоуровневый скриптовый язык Hecl и диалект Lisp'а язык Clojure. Все они изначально были ориентированы на работу с JVM, так что их сравнительно быстро адаптировали и под Dalvik.

Можно программировать под Android на Rubby. Есть фреймворк Rhodes поддерживающий разработку под все типы смартфонов, включая Android, iPhone, Windows Mobile, RIM's BlackBerr и Symbian (на русском можно немножко почитать здесь, здесь и критика). Фреймворк бесплатен для разработки open-source приложений, разработка коммерческих приложений требует покупки лицензии.

Другой вариант программирования Ruby под Android - использование Rubotto. Это порт JRuby под Android. Совсем недавно вышел его первый публичный релиз. Впрочем, по словам разработчиков, это пока super-alpha, 0.01.

Третий вариант - воспользоваться Android Scripting Environment (ASE). ASE - это интерпретатор скриптовых языков, Помимо JRuby, он поддерживает Python, Perl, Lua, BeanShell, JavaScript, Tcl и shell.

Насчет .NET и Mono. Умельцам удалось запустить Mono на Android, однако о практическом применении такого трюка говорить пока не приходится. Разрабатывается коммерческое SDK Mono под Android - Monodroid, - которое позволит вести разработки приложений под Android на C# (поддержка VB в планах). В настоящее время проект находится на стадии закрытого бета-тестирования.

Библиотеку Qt тоже перетаскивают на Android. И, судя по всему, довольно успешно.

Статья в тему: Разработка под Android / Робот без кофеина.

Java
Java во многом схож по синтаксису с C# и C++. Тем, кто знает C# и/или C++, для изучения Java пригодятся следующие статьи: Википедия: сравнение C# и Java и
Сравнение ОО языков C#, Java и C++ (PDF)


Первый проект
Статей на тему "как написать первый проект под Android" - вагон и маленькая тележка. Вот, на мой взгляд, неплохие:Разработка интерфейса
"User Interface Guidelines" - рекомендации от Google.
Создание приложения в стиле Android - хорошая статья на хабре.
DroidDraw - дизайнер пользовательского интерфейса для Android.

android ui utils - комплект приложений. Включает 1) набор шаблонов для прототипирования интерфейса Android-приложения с помощью Pencil GUI prototyping tool; 2) Android Asset Studio - набор инструментов для создания иконок для Android-приложений; 3) Набор шаблонов иконок, удовлетворяющих рекомендациями google

Тестирование
Ссылки на тему тестирования Android приложений собраны в отдельной статье. Отладка приложений
Как использовать логгирование - Android – application debug logging. Существует утилита для удобной раскраски логов.

Инструменты обратного реинжиниринга/диассемблирования: android-apktool и dedexer.

Как отлаживать виджиты (нужно переключиться в DDMS режим и выбрать виджет-процесс для отладки).

Приложения можно отлаживать не только на эмуляторе, но и на Android x86. См. статьи на Хабре:
Быстрая альтернатива эмулятору Android и Подробное руководство по установке Android-x86.


Защита Android-приложений
Защита внедрена, защита взломана.
Интересный блог, статья про SlideLock.

Тонкости
Разработка под Android, грабли большие и не очень. Толковая статья на хабре.

Примеры приложений
Примеры от разработчиков Android: List of Sample Apps
Коллекция приложений на Google Code: Sample Applications for the Android platform

Виджеты
Информация от разработчиков Android: блог, руководство разработчика.

О чем умолчала документация (в частности, как обходить баги в реализации виджетов).

Примеры: hello-widget, статья на хабре, виджет, отображающий ситуацию на Российском валютном рынке, слайдшоу-виджет, периодически меняющий свою картинку, погода.

Блог разработчиков Android
Блог разработчиков Android содержит массу интересной информации. Вот некоторые интересные, на мой взгляд, статьи:
Multithreading For Performance - мультипоточность как средство повышения производительности.
Apps on SD Card: The Details - в Android 2.2 появилась возможность устанавливать приложения на SD-карты.
Making Sense of Multitouch - о мультитач, жесты и куча примеров.
Track memory allocations - как использовать DDMS для контроля списка созданных объектов.
Window Backgrounds & UI Speed - как ускорить запуск вашего приложения.
Introducing home screen widgets and the AppWidget framework - о виджитах, появившихся в SDK 1.5.

и так далее.

Конкуренты
Разработка для Android vs Windows Mobile - интересная статья на Хабре ("Android SDK рвёт на куски Windows Mobile SDK").
Исполнительный директор Nokia высказал отношение компании к платформе Android (статья на хабре)

Пишите в первую очередь под платформы которые популярны в США и не тратьте свои силы на остальные ("... в данное время никого из американских заказчиков не интересуют ни Windows Phone 7, ни Symbian, ни Bada, ни WebOS.")

Форумы
StackOverflow - сюда идти в первую очередь :)
Android Forums - русское сообщество ОС Android.
Форум "Мобильные устройства" на RSDN

Книги
На английском: Reto Meier. Professional Android 2 Application Development (Wrox Programmer to Programmer) и другие.

На русском: Голощапов А. Google Android: программирование для мобильных устройств

Несколько книг - годовая подписка: The Busy Coders Guide to Advanced Android Development и др.

Update. отличная ссылка по теме: [Перевод] Android Development Tutorial

Update А вот еще ряд полезных ссылок, преимущественно с Хабра
Продуктивность в Android — сторонние библиотеки (список полезных библиотек).

Разработка под Android / Реклама для вашего Android приложения (о способах монетизации).

Presentation:Beginning Android Development (видео).

Google / Получение денег с AdSense через Rapida Online на банковский счет (как получать деньги с Android Market).

Разработка под Android / [Из песочницы] Тестирование Android приложений (про тестирование пользовательского интерфейса в Android).

Разработка под Android / OpenGL — это просто!

What new Android developers need to know (что должен знать разработчик под Android - к каким вопросам нужно быть готовым на собеседовании, когда устраиваешься на работу).

Что нужно знать Android-разработчику (про монетизацию, политику Google, глюки маркета и т.д.)

Как выкачать исходники Android под Windows.
Андроид живые обои. Как делать? / Разработка под Android / Хабрахабр

12 комментариев:

  1. спасибо, статья очень помогла

    ОтветитьУдалить
  2. Спасибо! Эта статья мне очень пригодится.

    ОтветитьУдалить
  3. Супер! Огромное спасибо! Сам бы все не нашел, или нашел, но лень понимаешь ли... Сам пробую писать приложения под Android статья очень помогла.

    ОтветитьУдалить
  4. спасибо за инфо! как раз понадобилось.

    ОтветитьУдалить
  5. Кучка ссылок и ничего о собственной практике и почти ноль рекомендаций. 3 из 10

    ОтветитьУдалить
  6. качественный выбор ссылок. спасибо!

    ОтветитьУдалить
  7. Может кому-нибудь пригодиться: android-arsenal.com
    На сайте собран большой список различных библиотек.

    ОтветитьУдалить
  8. http://androidev.ru/blog/193.html
    http://img.prntscr.com/img?url=http://i.imgur.com/g4jXZ6A.png

    ОтветитьУдалить
  9. А на сайте: www.superplayers1.ru можно посмотреть курс по созданию карточной игры

    ОтветитьУдалить