пятница, 15 апреля 2011 г.

Создание проектов android из командной строки

Разработка приложений для Android-устройств осуществляется с помощью инструментов, которые поставляются вместе с android-SDK (SDK - Software Development Kit - комплект средств разработки). Можно работать с этими инструментами через плагин для Eclipse, который называется ADT (Android Development Tools) или из командной строки. Разработка с помощью Eclipse является более предпочтительным и удобным методом. Но ради спортивного интереса разберемся как создавать и собирать проект из командной строки.

Основные шаги для разработки приложений с Eclipse или без него одни и те же:
  • Установить Eclipse (с плагином ADT) или другую IDE.
  • Создать виртуальные машины Android или подключить реальное устройств для загрузки созданных приложений
  • Создать проект Android. Проект Android содержит все исходные тексты и файлы ресурсов для приложения, которые затем собираются в apk-пакет.
  • Скомпилировать и запустить приложение. В Eclipse приложения компилируются, собираются в пакет и устанавливаются на устройство (или запускаются на виртуальном устройстве) по нажатию кнопки «Run». Чтобы собрать приложение из консоли используется ant, а для загрузки на устройство - adb.
  • Отладка приложения. Отладка приложений включает в себя использование JDWP-совместимого (Java Platform Debugger Architecture) отладчика вместе с отладчиком и средствами логирования из Android SDK.
  • Тестирование приложения Android SDK предоставляет инструменты для запуска и тестирования приложения на виртуальных или реальных устройствах.
Проект содержит в себе исходные коды программы и файлы ресурсов. SDK инструменты ожидают определенной структуры проекта, чтобы правильно его собрать, поэтому настоятельно рекомендуется создать проекты с помощью Eclipse (с плагином ADT) или с android из командной строки. Есть три типа проектов, все они имеют одну и ту же структуру, но различаются по функции: Проекты приложения - это основной тип проекта. Содержимое таких проектов собирается в apk-пакет и устанавливается на устройство. Тестовые проекты — содержат код для тестирования приложений и проектов. Проект библиотеки — содержат исходные коды и ресурсы, на которые будут ссылать другие приложения. Это полезно, когда некоторый код, можно использовать повторно. Библиотека проектов не могут быть установлены на устройстве, однако, они включаются в apk-пакеты на этапе сборки. Проекты Android включают в себя следующие папки и файлы:
src/ - содержит все исходные коды, причем файлы должны располагаться в директории src/your/package/namespace/ActivityName.java
bin/ - директория для результата сборки, здесь будет лежать собранный apk-пакет
jni/ - содержит исходные коды, разработанных с помощью NDK (Native Development Kit — набор инструментов, который позволяет встраивать части кода на других языках программирования (например C/C++)
gen/ - содержит автоматически генерируемые с помощью ADT файлы, такие как файл R.java или интерфейсы созданные из файлов AIDL.
assets/ - этот каталог пуст, его можно использовать для хранения любых файлов. Содержимое каталога компилируются в apk-пакет как есть, сохраняя оригинальные имена файлов. С каталогом можно работать как с любым другим каталогом файловой системы с помощью URI, и читать файлы в виде потока используя AssetManager. Например, здесь можно хранить текстуры и данные для игр.
res/ - содержит ресурсы приложения, может содержать подкаталоги:
* anim/ - xml-файлы, которые компилируются в анимацию объектов.
* color/ - xml-файлы, которые описывают цвета
* drawable/ - растровые файлы (PNG, JPEG, GIF или), и xml-файлы, описывающие Drawable объекты
* layout/ - xml-файлы с разметкой экрана (Activity)
* menu/ - xml-файлы с разметкой меню
* raw/ - также каталог для произвольных файлов. Отличие между хранением файла здесь и каталога assets/ только в способе доступа к ним. Эти файлы обрабатываются aapt и на них можно ссылаться из приложения с помощью идентификатора ресурса в классе R. Например, здесь можно хранить MP3 или Ogg файлы.
* values/ - xml-файлы многих типов ресурсов. В отличии от других ресурсов в каталоге res/, файлы этого каталога не имеют идентификатора. Например,в этом каталоге могут храниться строки.
* xml/ - содержит xml-файлы с разметкой для других компонентов приложения, Например, для окна настроек (PreferenceScreen) или виджета (AppWidgetProviderInfo).
libs/ - содержит библиотеки
AndroidManifest.xml - файл, описывающий характер применения каждого из компонента приложения.
build.properties - Настраиваемые свойства системы сборки. В этом файле можно определить настройки используемые ant и указать ключ для подписи приложения, когда оно собирается как релиз. При использовании Eclipse этот файл не нужен.
build.xml — файл сборки ant для проекта. Также не используется при разработки с помощью Eclipse
default.properties - Этот файл содержит параметры проекта. Этот файл является неотъемлемой частью проекта, крайне не желательно изменять его вручную.

Попробуем создать проект из командной строки. Я это делаю под линуксом (Fedora 14), но не думаю, что в других ОС действия будут сильно отличаться.

Для создания проекта используется инструмент android, который находится в папке android-sdk-linux_x86/tools/ Вызов выглядит так:
android create project \ 
--target <target_ID> \ 
--name <your_project_name> \ 
--path path/to/your/project \ 
--activity <your_activity_name> \ 
--package <your_package_namespace>
где target - это "build target" приложения. Он определяет версию Android (в также версии некоторых библиотек, например Google APIs), на которых будет собираться приложение. Чтобы посмотреть все доступные варианты, можно вызвать android list targets. name — название проекта. Этот атрибут необязателен, его значение будет использоваться в качестве названия apk-пакета. path — директория для проекта. Если указанная директория не существует она будет создана. activity — название Activity класса. Этот класс будет создан в /src// . Также будет использоваться в качестве названия apk-пакета, если name не указан package — пространство имен (namespace) проекта. Попробуем: 1. Для удобства занесем каталоги android-sdk-linux_x86/tools/ и android-sdk-linux_x86/platform-tools/ в PATH. 2. Создадим проект:
android create project --target 6 --name SimpleApp --path SimpleApp 
--activity SimpleApp --package mj.android 
Эта команда создает папку SimpleApp, а в ней следующие файлы и папки:

3. Для изменения изменения существующего проекта используется команда android update project
android update project 
--name <project_name> 
--target <target_ID>
--path <path_to_your_project>
Как видим, после создания проекта мы можем изменить ему таргет и имя. Path — директория, где находится проект. Попробуем:
android update project --name SimpApp --target 7 --path ./SimpleApp
Отмечу, что name меняет только название проекта и то, как будет называться apk-пакет, он не меняет название класса Activity и название папки. 4. Следующий шаг - сборка. Есть два варианта сборки: в режиме отладки и в режиме релиза для создания окончательного пакета для выпуска. Независимо от варианта сборки, приложение должно быть подписано, чтобы его можно было установить на эмулятор или на устройство. Для сборки проекта Android используется инструмент ant, который компилирует и создает apk-пакет. В режиме отладки пакет автоматически подписывается ключом инструментов SDK, так что такой пакет сразу готов для установки, но его нельзя будет распространять. В режиме релиза приложения необходимо подписать самостоятельно собственным закрытым ключом с помощью Keytool и Jarsigner. Соберем наше приложение в режиме отладки:
ant debug
(Инструмент ant не входит в android SDK, поэтому если его нет, то копать сюда http://ant.apache.org/) Если все прошло успешно, то в папке bin/ проекта появится файл SimpApp-debug.apk, это пакет, который можно установить на эмулятор или на устройство. 5. Установим на эмулятор. Для начала надо создать виртуальную машину. Она создаются также с помощью инструмента android. Вызываем android без параметров. Открывается окно Android SDK and AVD Manager.

Нажимаем 'New' вводим имя и таргет. Для создания машины этого достаточно, но при необходимости можно ввести и другие параметры. Нажимаем 'Start' и запускаем созданную машину. Виртуальные машины стартуют довольно медленно, дожидаемся когда увидим что-то такое:

Устанавливаем и запускаем наш пакет с помощью инструмента adb
adb install bin/SimpApp-debug.apk
После установки, запускаем установленную программу на эмуляторе.

Если виртуальных машин и подключенных устройств несколько, то необходимо указать на какую машину установить приложение с помощью опции -s.
adb -s emulator-5554 install path/to/your/app.apk
Посмотреть доступные виртуальные машины и устройства можно с помощью adb devices.

Комментариев нет:

Отправить комментарий