Урок 3. Изучите и создайте свое первое приложение
После установки Android SDK и платформы Android вы готовы создавать приложения для этой платформы. Урок 3 знакомит вас с первым приложением и показывает, как создать это приложение из командной строки.
Исследуя W2A
Полезно представить технологию, представив короткую программу, которая выводит какое-то приветственное сообщение. В листинге 1 представлен исходный код Java для небольшого приложения для Android, которое выполняет эту задачу.
Листинг 1. Привет от Android
package ca.tutortutor.w2a;
import android.app.Activity; import android.os.Bundle; import android.widget.TextView;
public class W2A extends Activity {
// Следующий метод вызывается при первом создании действия.
@Override
public void onCreate (BundlevedInstanceState)
{
super.onCreate (savedInstanceState);
TextView TV = новый TextView (это);
tv.setText («Добро пожаловать в Android.»);
setContentView (тв);
}
}
В листинге 1 показано содержимое исходного файла с именем W2A.java — приложения Android написаны на языке Java, что, вероятно, неудивительно, учитывая, что Android SDK зависит от устанавливаемого JDK. Список начинается с обязательной инструкции пакета, потому что каждое приложение Android связано с пакетом. Последующие операторы импорта идентифицируют три специфичных для Android типа, на которые ссылается W2A.java's W2A (Welcome to Android) W2A.java и которые помогают компилятору определить местонахождение этих типов.
Совет: ознакомьтесь с документацией по API Google Java, чтобы вы могли быстро найти специфичные для Android типы. Вы найдете эту документацию по адресу http://developer.android.com/reference/packages.html .
Приложения Android основаны на одном или нескольких компонентах, которые взаимодействуют друг с другом. Компоненты включают действия, широковещательные приемники, контент-провайдеров и услуги. Для краткости я игнорирую широковещательные приемники, контент-провайдеров и услуги.
Действие представляет собой часть пользовательского интерфейса приложения и описывается классом android.app.Activity . Перечисление 1 подклассов класса W2A Activity, что делает W2A специализированным действием.
Когда пользователь запускает приложение, Android создает экземпляр основного класса активности приложения (приложение может состоять из нескольких классов активности) и вызывает переопределенную версию этого класса метода void onCreate(Bundle savedInstanceState) для инициализации действия.
Если действие ранее сохраняло свое состояние до завершения, Android делает это состояние доступным для onCreate() , передавая аргумент экземпляра android.os.Bundle в savedInstanceState . В противном случае он передает нулевой аргумент (сохраненное состояние отсутствует).
onCreate() вызывает версию этого метода для суперкласса с переданным аргументом. Затем он создает экземпляр класса android.widget.TextView для создания виджета textview (элемент управления пользовательского интерфейса), который является степенью пользовательского интерфейса действия.
Примечание: onCreate() является примером метода обратного вызова жизненного цикла. Android вызывает onCreate() и другие методы в течение жизненного цикла приложения. Каждый метод обратного вызова жизненного цикла должен сначала вызвать метод с тем же именем в классе Activity .
Аргумент this передается конструктору TextView для подключения этого виджета к текущей деятельности. Текст, переданный в метод void setText(CharSequence text) TextView будет отображаться пользователю.
После создания и инициализации экземпляра виджета onCreate() вызывает метод void setContentView(View view) для Activity чтобы поместить экземпляр виджета, который также известен как представление, непосредственно в иерархию представления деятельности, чтобы виджет отображался.
Здание W2A
Давайте строить W2A. Сначала создайте проект W2A с помощью инструмента Android, который обеспечивает следующий синтаксис (разбитый на несколько строк для удобства чтения) для создания проектов:
android create project --target target_ID --name project_name --path /path/to/project/project_name --activity default_activity_name --package package_namespace
За исключением --name (или -n), должны быть указаны все следующие параметры:
-
--target(или -t) определяет цель сборки приложения.target_ID— это целое число, которое идентифицирует платформу Android. Получить это значение, вызываяandroid list targets. Поскольку вы установили только версию 2.3.3, эта команда должна вывести одну цель платформы Android 2.3.3, обозначенную как целое число 1. -
--name(или -n) определяет имя проекта. Это имя используется для получающегося в результате имени файла Android PacKage (APK). APK — это архив на основе ZIP, в котором хранятся файлы приложения и который установлен на устройстве. Его расширение файла.apk. -
--path(или -p) определяет каталог проекта. Каталог создается, если он не существует. -
--activity(или -a) определяет класс активности по умолчанию. Полученный файл класса создается внутри/path/to/project/project_name/src/package_namespace/и используется в качестве имени файла APK, если--name(или -n) не указано. -
--package(или -k) идентифицирует пространство имен пакета проекта, которое должно соответствовать правилам пакета, изложенным в спецификации языка Java.
Предполагая платформу Windows и иерархию C:prjdevW2A которой будет храниться проект W2A, следующая командная строка (разделенная на две строки для удобства чтения) создает этот проект:
android create project -t 1 -p C:prjdevW2A -a W2A -k ca.tutortutor.w2a
Эта командная строка создает несколько каталогов и добавляет различные файлы к некоторым из них. В частности, он генерирует следующую структуру файлов и каталогов в C:prjdevW2A :
-
AndroidManifest.xml— это файл манифеста на основе XML для создаваемого приложения. Манифест Android идентифицирует компоненты приложения APK, такие как подклассActivityкоторый ранее был указан с помощью--activity(или -a), и предоставляет другую полезную информацию для Android. -
ant.properties— это настраиваемый файл свойств для системы сборки Ant. Вы можете отредактировать этот файл, чтобы переопределить стандартные параметры сборки Ant и указать указатель на хранилище ключей и псевдоним ключа, чтобы инструменты сборки могли подписывать ваше приложение при сборке в режиме выпуска (обсуждается далее в этом уроке). -
bin— выходной каталог, используемый сценарием сборки Apache Ant. Сгенерированные APK хранятся здесь. -
build.xml— это скрипт сборки Apache Ant этого проекта. -
libsсодержит частные библиотеки, которые не требуются в этом проекте, но могут присутствовать для более сложных проектов. -
local.properties— это сгенерированный файл, содержащий местоположение домашнего каталога Android SDK. -
proguard.cfgсодержит данные конфигурации для инструмента SDK ProGuard, который позволяет разработчикам запутывать (скрывать) свой код (что делает его очень трудным для обратного инжиниринга) как интегрированную часть сборки релиза. -
project.properties— это сгенерированный файл, который идентифицирует целевую платформу Android проекта. -
resсодержит ресурсы проекта (изображения, строки, макеты и т. д.). Ресурсы не используются этим проектом. (Для краткости я не обсуждаю ресурсы в этом курсе.) -
srcсодержит исходный код проекта в виде ряда подкаталогов, которые отражают структуру пакета проекта.
src содержит catutortutorw2a каталогов catutortutorw2a , а w2a содержит скелетный исходный файл W2A.java . Замените содержимое этого файла на листинг 1.
Предполагая, что C:prjdevW2A является текущим, C:prjdevW2A это приложение, указав ant debug или ant release — ant умолчанию обрабатывает файл build.xml каталога:
-
ant debugсобирает приложение для тестирования и отладки. Инструменты сборки подписывают полученный файл APK с помощью ключа отладки, а затем оптимизируют APK сzipalignинструментаzipalignAndroid. -
ant releaseсоздает приложение для выпуска пользователям. Вы должны подписать полученный файл APK своим закрытым ключом, а затем оптимизировать APK сzipalignбазового инструментаzipalignSDK. (Эти задачи выходят за рамки этого урока.)
Примечание. Android требует от разработчиков подписывать свои APK закрытыми ключами сертификатов. Он использует сертификат для идентификации автора приложения и установления доверительных отношений между приложениями; Android не использует сертификат, чтобы определить, какие приложения могут быть установлены. Самозаверяющий сертификат является приемлемым — сертификаты не должны быть подписаны центрами сертификации. Поскольку специальный сертификат отладки используется для подписи APK, встроенного в режиме отладки, APK не может быть выпущен для общего доступа. Запись Википедии «Сертификат открытого ключа» ( http://en.wikipedia.org/wiki/Public_key_certificate ) знакомит вас с сертификатами.
Предполагая, что C:prjdevW2A является текущим каталогом, соберите W2A в режиме отладки, вызвав ant debug . Эта команда создает подкаталог gen, в котором хранится сгенерированный ресурсно-ориентированный файл R.java (который можно игнорировать), и создает W2A-debug.apk в подкаталоге bin. Мы установим этот APK и запустим его приложение на следующем уроке.
Рассмотрение
Следующие обзорные вопросы помогут вам освоить материал урока 3:
- Что такое деятельность?
- Определите пакет, в котором хранится класс
ActivityAndroid. - Какой метод действия Android вызывает для инициализации действия?
- Укажите синтаксис, который требуется инструменту
androidпри создании проекта Android. Какой из параметров этого синтаксиса является необязательным? - Определите файл и каталоги, созданные в каталоге проекта. • Как вы строите приложение проекта Android?