Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Пишем, собираем и запускаем HelloWorld для Android в блокноте

Anna | 3.06.2014 | нет комментариев
Когда я начал постигать Android, захотелось всецело написать и скомпилировать Android-приложение вручную — без применения IDE. Впрочем эта задача оказалась непростой и заняла у меня достаточно много времени. Но как оказалось — такой подход принёс огромную пользу и прояснил многие тонкости, которые скрывают IDE.

По-сути эта статья является переводом и переработкой статьи Building Android programs on the command lineпод современные на данный момент JDK (7) и Android SDK (API level 19). Помимо того, я многое упростил и добавил кое-что от себя.

Применяя только блокнот, мы напишем вовсе маленькое учебное Android-приложение. А после этого скомпилируем его, соберём и запустим на устройстве — и всё через командную строку. Заинтересовало? Тогда умоляю.

Введение

Я был поражён, насколько трудным и запутанным является шаблонное приложение в android studio. Оно легко нагромождено источниками. И в меньшей степени — кодом и скриптами. Правда всё что оно должно делать — это выводить на экран HelloWorld! Помимо того, в книгах и начальствах, которые я просмотрел, объясняется, как с поддержкой диалоговых окон сделать IDEA-шный либо эклипсовый HelloWorld — и от него теснее идёт последующее повествование. А что происходит «под капотом» — остаётся только гадать.

Длинные искания были примерно безрезультатны — на русском языке статей по данной теме я не нашёл, а на английском — была устаревшая информация и кое-что пришлось дорабатывать напильником, гуляя поstackowerflow и документации. Когда я разобрался, то решил восполнить пробел — внезапно кому-то сгодится? Собственно, так и возникла эта статья.

Мы сотворим свой шаблонный план, тот, что безупречно применять для обучения. Там не будет ничего лишнего, только всё самое нужное. А потом подробно разберём, как его собрать и запустить на вашем Android-устройстве. В конце статьи будет ссылка на скачивание архива с итоговым планом — если возникнут какие-то вопросы — можете свериться с ним.

Таким образом, вы будете на 100% знать и понимать состав вашего плана и процесс его сборки. Правда данный тестовый план предуготовлен для обучения, при маленький доработке его дозволено будет применять как крепкий основа для ваших реальных планов.

Подготовка

Для начала у вас должен быть установлен JDK 7 и android SDK. Конечный кстати необходимо чуточку настроить позже установки.

Основное требование перед прочтением этой статьи — помимо установленного софта вы обязаны теснее уметь запускать на вашем девайсе тот Helloworld, тот, что поставляется совместно с Eclipse либо Android Studio. Т.е. у вас должен быть настроен драйвер usb, включена отладка по usb на вашем девайсе и т.д… Либо же сделан и настроен эмулятор. Это вовсе элементарные вещи, и их рассмотрение выходит за рамки данной статьи — в сети довольно информации. Кстати прочитать пару глав из книг тоже будет не лишним — правда бы понимать, как устроен манифест, источники, да и вообще основы языка Java. А в этой статье я опишу то, о чём книги молчат.

Написание плана

Для начала, сделайте некоторую папку, где будет ваш план. Назовём её mytestapp. В ней сделайте ещё 4 папки — bin,obj,res и src.

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

Добавьте в него следующее:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.testapp">
    <uses-sdk android:targetSdkVersion="19" />

    <application android:label="TestApp">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Здесь всё легко. Мы намерены сделать приложение с именем TestApp, которое при старте запускает класс MainActivity. Осталось только написать данный маленький класс — и приложение готово. Если необходимо — отредактируйте в теге uses-sdk качество android:targetSdkVersion — поставьте ту версию, которая у вас.

Дальше — сделаем примитивный источник — строку Hello test app. Вообще-то мы могли обойтись и без источника, вставив эту строку прямо в Java код. Но некоторые шаги сборки работают с источниками, и Дабы увидеть увлекательные моменты — мы всё-таки поработаем с ними.

Давайте сделаем в папке res папку values. Все источники следует разбивать по папкам. Дальше — в ней сделаем пустой файл strings.xml. а в нём напишем

<resources>
    <string name="hello">Hello test app!</string>
</resources>

Вот и все источники, нам нужные. Легко, не так ли? Дальше сделаем внутри src папку com, в ней папкуexample, потом ещё ниже по иерархии папку testapp — а там теснее наш класс MainActivity.java. Добавим туда код

package com.example.testapp;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    TextView textView = new TextView(this);
    textView.setText(getString(R.string.hello));
    setContentView(textView);
  }
}

Конструкция каталогов должна получится такая

k!


В папке bin сейчас должен появится AndroidTest.unsigned.apk. И мы назвали его не легко так! У него нет цифровой подписи. Андроид воспрещает устанавливать и запускать приложения без подписи. Но сделать её не так-то сложно, как может показаться на 1-й взор

call %JAVA_HOME%/bin/keytool -genkey -validity 10000 -dname "CN=AndroidDebug, O=Android, C=US" -keystore %DEV_HOME%/AndroidTest.keystore -storepass android -keypass android -alias androiddebugkey -keyalg RSA -v -keysize 2048
call %JAVA_HOME%/bin/jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore %DEV_HOME%/AndroidTest.keystore -storepass android -keypass android -signedjar %DEV_HOME%/bin/AndroidTest.signed.apk %DEV_HOME%/bin/AndroidTest.unsigned.apk androiddebugkey


Собственно, эти строчки запускают 2 Java-утилиты, которые не имеют никакого отношения к Android SDK — но они нужны. Первая создаёт файл AndroidTest.keystore (проверьте его присутствие), а вторая — данный файл соединяет с AndroidTest.unsigned.apk. Получается файлAndroidTest.signed.apk. Вот такой дикий крафт файлов. Но некогда сделав bat-скрипт запускайте его — и он будет делать всё это в механическом режиме.

У вас, скорее каждого, будет предупреждение "Warning: No -tsa or -tsacert is provided and this jar...", но не обращайте внимание.

Запуск


Сейчас, когда мы наконец собрали наш apk-файл — можем его запустить. Подключите по usb ваше устройство, либо же запустите эмулятор. А после этого исполните

call %ADB% uninstall %PACKAGE%
call %ADB% install %DEV_HOME%/bin/AndroidTest.signed.apk
call %ADB% shell am start -n %PACKAGE%/%PACKAGE%.%MAIN_CLASS%


Собственно, первая строчка удаляет программку, если она теснее там есть. Для повторных запусков сгодится. Вторая — устанавливает APK на ваш девайс либо эмулятор. Третья же — запускает. Не пугайтесь обилия '%' в коде — это каждого лишь подстановка переменных — отличный подход.

Если всё прошло успешно, вы увидите что-то как бы этого:

Завершение


Позже сборки всех файлов дерево каталогов должно быть приблизительно таким.


Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB