Expertus metuit
Программирование для Android, часть третья: первое приложение
Опубликовано 2012-02-13 в 18:20

Работа с проектами в eclipse, создание первого android-приложения, структура apk-файлов

А статья уже довольно сильно устарела, часть скриншотов точно не соответствует реальности, часть текста тоже. Такие дела.

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

Как и в любой интегрированной среде разработки, в Eclipse ADT создание работающего приложения сводится к трём шагам:

  1. создание андроид-проекта в Eclipse (минимальный шаблонный проект);
  2. написание программного кода, рисование дизайна и т.п.;
  3. «компиляция» проекта в окончательный apk-файл.

Создание первого проекта

Для начала запускаем eclipse (например, командой eclipse-adt, которую мы делали в прошлой статье), открываем Android SDK Manager (WindowAndroid SDK Manager) и устанавливаем версию платформы Android 2.3.3 (модуль Android 2.3.3 (API 10)/SDK Platform). Если он уже установлен, идём дальше.

Проект содержит все необходимые вещи для приложения: программный код, инструкции по сборке, ресурсы (например, картинки), описания интерфейсов, документацию и т.д. Создаём первый проект, через меню: FileNewAndroid Project, после чего открывается вот такой диалог:

Первый шаг создания андроид-проекта

Внешний вид этого диалога практически одинаков для всех типов проектов: вам нужно выбрать название проекта (в нашем случае это «first project»), каталог, в котором проект создавать (нас вполне устраивают значения по умолчанию). Жмём Next > и видим следующий шаг:

Второй шаг создания андроид-проекта

Здесь нам предлагается выбрать, под какую версию андроид-платформы мы хотим создать проект, в списке доступны установленные в SDK модули для разных версий платформы, а выбрать вы можете только одну. На скриншоте вы видите, что доступны три версии: Android 2.2, Android 2.3.3 и Android 4.0.3. Выбираем версию 2.3.3., жмём Next > и попадаем на следующий экран:

Третий шаг создания андроид-проекта

На этом экране мы задаём информацию о нашем приложении, заполните так, как показано на скриншоте. Совсем коротко об этих полях. Application Name — это название проекта, обычная строка текста. Package Name — это название пакета, по сути индентификатор приложения, его пространство имён (namespace в терминологии Java), способ его формирования стандартен для Java-приложений (подробнее об этом можно почитать в официальной документации по Java). Оставляем крыжик в поле Create Activity, значение этого поля также оставляем по умолчанию, я позднее расскажу, что такое Activity. В поле Minmum SDK мы можем выбрать минимальную версию андроида, на которую можно будет поставить приложение, по сути это поле дублирует предыдущий экран. Поле и крыжик Crate a Test Project пока отключаем. Всё нужное заполнили, жмём Finish. Пару секунд Eclipse будет создавать шаблонный проект с выбранными параметрами, после чего он появится во вьюшке Package Explorer. Если вы эту вьюшку потеряли, вспонимаем, как открыть её через меню WindowShow ViewPackage Explorer).

Раскрываем папку с проектом в Package Explorer и начинаем изучать, при этом окно Eclipse у вас должно выглядеть примерно так:

Только что созданный первый андроид-проект

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

src — здесь лежит ваш программный код на языке Java.

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

Android 2.3.3 — это контейнер с классами выбранной платформы.

res — здесь лежат ресурсы вашего приложения (картинки, строки локализации, макеты интерфейса).

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

proguard.cfg — это файл конфигурации для системы ProGuard, инструмента из SDK для оптимизации и защиты приложения. Про этот файл и вообще систему ProGuard я расскажу как-нибудь потом, пока этот файл не трогайте, пусть лежит.

project.properties — это файл для сборочной системы Ant, он автоматически пересоздаётся при модификации свойств проекта, так что не стоит в него писать.

На остальные файлы и контейнеры пока не обращайте внимания.

Сборка и запуск проекта

Несмотря на то что мы не написали ни строчки кода, мы вполне можем уже запустить только что созданный проект! Для запуска нужен девайс, либо виртуальный, либо реальный. Реального у нас пока нет, поэтому запустим виртуальный. Нам необходимо создать новый виртуальный девайс на основе версии платформы Android 2.3.3. Делается это через * AVD Manager (меню WindowAVD Manager*). Вспоминаем из прошлой главы, как создавать виртуальные устройства и создаём (запускать пока не надо).

Для запуска приложения есть несколько эквивалентных способов:

  1. Через меню выбрать RunRun.
  2. Нажать кнопку Run на панели инструментов.
  3. Нажать хоткей Ctrl+F11 (если вы его ни на что не переопределили).

Делаем что-нибудь одно, на экране должен появиться диалог выбора, как именно мы хотим запустить проект, выбираем пункт Android application. Eclipse автоматически находит подходящий девай — наш недавно созданный виртуальный девайс, — запускает его, копирует туда скомпилированное приложение из проекта и запускает внутри виртуального девайса. Если виртуальный девайс уже запущен, приложение будет отправлено туда. Вот как это выглядит на экране (клик по ссылке откроет скриншот в полном размере):

Результат запуска в эмуляторе

Что же было сделано средой разработки только что? Во-первых, проект был скомпилирован в apk-файл пакета, если бы где-то в коде содержались синтаксические ошибки, Eclipse показал бы соответствующее сообщение. Во-вторых, полученный apk-файл был скопирован на устройство, установлен там и запущен. Если мы на виртуальном девайсе пройдём в список установленных приложений, то увидим там наш проект:

Наш пакет в списке приложений

Структура APK-файла, манифест

Скомпилированный APK-файл создаётся в каталоге bin нашего проекта, вот он:

% cd ~/android/eclipse-workspace/first\ project/bin/
% ls -l first\ project.apk 
-rw-r--r-- 1 cancel cancel 13282 Фев 13 20:37 first project.apk

Этот файл на самом деле является ZIP-архивом с расширением .apk:

% unzip -l first\ project.apk 
Archive:  first project.apk
  Length      Date    Time    Name
---------  ---------- -----   ----
  520  2012-02-13 20:37   res/layout/main.xml
1508  2012-02-13 20:37   AndroidManifest.xml
1176  2012-02-13 20:37   resources.arsc
3966  2012-02-13 20:37   res/drawable-hdpi/ic_launcher.png
1537  2012-02-13 20:37   res/drawable-ldpi/ic_launcher.png
2200  2012-02-13 20:37   res/drawable-mdpi/ic_launcher.png
1980  2012-02-13 20:37   classes.dex
  585  2012-02-13 20:37   META-INF/MANIFEST.MF
  638  2012-02-13 20:37   META-INF/CERT.SF
  776  2012-02-13 20:37   META-INF/CERT.RSA
---------                     -------
14886                     10 files

В архиве лежит файл со скомпилированным исходным кодом из java-файлов — classes.dex, также там лежит манифест AndroidManifest.xml, файлы ресурсов (картинки) и прочая служебная информация о пакете, используемая андроидным девайсом для работы приложения.

Манифест (файл AndroidManifest.xml) является очень важным элементом проекта, он представляет собой XML-файл, в котором описаны свойства приложения (название, описание), зависимости и требования к платформе на девайсе, фичи, которые предоставляет пакет и другие подобные вещи. Для редактирования манифеста можно пользоватся встроенным в ADT редактором, для его запуска просто откройте файл AndroidManifest.xml для редактирования, вот как это может выглядеть (клик откроет картинку в полном размере):

Редактор манифеста проекта в Eclipse ADT

В центральной области Eclipse открыт редактор манифеста, внизу вы должны заметить кнопки-табы для переключения между секциями манифеста: Manifest, Application, Permissions, Instrumentation; а последняя кнопка — AndroidManifest.xml — позволит редактировать XML-код манифеста вручную. Сейчас я не буду подробно описывать значения всех полей, так как для этого придётся очень сильно погружаться во внутреннюю структуру андроидного приложения, поэтому быстро пробежимся по табам манифеста.

Manifest

Здесь у нас главная системная информация о приложении.

Поле Package
имя главного неймспейса.
Поле Version code
номер версии приложения в виде целого числа, каждая следующая версия приложения должна иметь бо́льший, чем предыдущие; именно это значение используется системой для сравнения версий, например.
Поле Version name
версия приложения в виде произвольной строки, здесь допускается практически что угодно, система это поле использует только в качестве описания.
Поля Shared user id и Shared user label
используются для группировки разных приложений от одного производителя, приложения, у которых совпадают Shared user id и которые подписаны одинаковым сертификатом, могут получать доступ к ресурсам друг друга. (О сертификатах и подписанных пакетах речь пойдёт в следующих главах)
Поле Install location
здесь определяется, можно ли будет приложение ставить на SD-карточку.

В блоке Manifest extras можно добавить дополнительные опциональные элементы в манифест, например, какие размеры экранов поддерживает приложение.

Дальше в этом окне идут ссылки на операции с пакетом (экспорт APK-файла, например), документацию или другие табы редактора манифеста.

Application

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

Permissions

На этой странице задаются требуемые приложением пермиссии/разрешения. О пермиссиях чуть подробнее.

Пермиссии определяют, какие именно ресурсы девайса требуются для работы данного приложения. К примеру, приложение может требовать использования камеры, это задаётся пермиссией android.permission.CAMERA, а требование отсылки СМС — пермиссией android.permission.SEND_SMS. Если приложение не затребовало пермиссию android.permission.CAMERA, то оно не сможет пользоваться камерой девайса для получения фотографий.

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

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

Ссылки

Читайте в следующей части: java-классы проекта, макеты интерфейсов, ресурсы, доступ к ресурсам из кода

← предыдущая часть | следующая часть →

Комментарии

Текст комментария (допустимая разметка: *курсив*, **полужирная**, [ссылка](http://example.com) или <http://example.com>) Посетители-анонимы, обратите внимение, что более чем одна гиперссылка в тексте (включая оную из поля «веб-сайт») приведёт к блокировке комментария для модерации. Зайдите на сайта с использованием аккаунта на twitter, например, чтобы посылать комментарии без этого ограничения.
Имя (обязательно, 50 символов или меньше)
Опциональный email, на который получать ответы (не будет опубликован)
Веб-сайт
© 2006—2023 Sergey Stolyarov | Работает на pyrengine