Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!

Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 
Показаны сообщения с ярлыком setup. Показать все сообщения
Показаны сообщения с ярлыком setup. Показать все сообщения

среда, 7 марта 2012 г.

Java for fun: Установка Android окруения. Запуска эмулятора

Хотел описать, дак уже описано все...

Пишем HelloWorld приложение. Для этого надо установить JDK6, Android SDK, Eclipse и плагин под него для эмуляции android.
Но не все так просто... Видимо с момента написания статьи прошло много времени, а потому не все в ней осталось актуальным: линки с JDK не работают, между 3 и 4 пунктом надо было сделать кое что.

В общем скачал JDK - благо по запросу "Download Android SDK" Google выдает первым в списке то что надо.
Распаковал в папку (имя которой не содержит пробелы) Android в корень диска.

Установил переменные окружения:



Проверил, правильно ли подхватились они, запустив одно из приложений в консоли


Далее мои действия и действия предлагаемые в мануале расходятся по простой причине, как оказалось у меня нет ни одного target, которые нужны были для создания android virtual device, который нужен для запуска эмулятора. Че за target, какие такие avd? Help мне в помощь!

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Sanja>emulator
emulator: ERROR: You did not specify a virtual device name, 
  and the system directory could not be found.

If you are an Android SDK user, please use '@' or '-avd ' 
  to start a given virtual device (see -help-avd for details).

Otherwise, follow the instructions in -help-disk-images to start the emulator

C:\Documents and Settings\Sanja>emulator -help-avd

  use '-avd ' to start the emulator program with a given 
  Android Virtual Device (a.k.a. AVD), where  must correspond to the name
  of one of the existing AVDs available on your host machine.

See -help-virtual-device to learn how to create/list/manage AVDs.

  As a special convenience, using '@' is equivalent to using
  '-avd '.

C:\Documents and Settings\Sanja>emulator -avd Sasha
emulator: ERROR: unknown virtual device name: 'Sasha'
emulator: could not find virtual device named 'Sasha'

C:\Documents and Settings\Sanja>emulator -help-virtual-device

  An Android Virtual Device (AVD) models a single virtual
  device running the Android platform that has, at least, its own
  kernel, system image and data partition.

  Only one emulator process can run a given AVD at a time, but
  you can create several AVDs and run them concurrently.

  You can invoke a given AVD at startup using either '-avd '
  or '@', both forms being equivalent. For example, to launch
  the AVD named 'foo', type:

      emulator @foo

  The 'android' helper tool can be used to manage virtual devices.
  For example:

    android create avd -n  -t 1  # creates a new virtual device.
    android list avd                   # list all virtual devices available.

  Try 'android --help' for more commands.

  Each AVD really corresponds to a content directory which stores
  persistent and writable disk images as well as configuration files.
  Each AVD must be created against an existing SDK platform or add-on.
  For more information on this topic, see -help-sdk-images.

  SPECIAL NOTE: in the case where you are *not* using the emulator
  with the Android SDK, but with the Android build system, you will
  need to define the ANDROID_PRODUCT_OUT variable in your environment.
  See -help-build-images for the details.

C:\Documents and Settings\Sanja>android create avd -n Apofig -t 1
Error: Target id is not valid. Use 'android.bat list targets' to get the target
ids.

C:\Documents and Settings\Sanja>android create avd -n apofig -t 1
Error: Target id is not valid. Use 'android.bat list targets' to get the target
ids.

C:\Documents and Settings\Sanja>android list avd
Available Android Virtual Devices:

C:\Documents and Settings\Sanja>android list targets
Available Android targets:

C:\Documents and Settings\Sanja>android -help
Error: Flag '-help' is not a valid global flag. Did you mean to specify it after
 the verb/object name?

Usage:
  android [global options] action [action options]

Global options:
  -v --verbose  Verbose mode: errors, warnings and informational messages are pr
inted.
  -h --help     Help on a specific command.
  -s --silent   Silent mode: only errors are printed out.

Valid actions are composed of a verb and an optional direct object:
-   list               : Lists existing targets or virtual devices.
-   list avd           : Lists existing Android Virtual Devices.
-   list target        : Lists existing targets.
- create avd           : Creates a new Android Virtual Device.
-   move avd           : Moves or renames an Android Virtual Device.
- delete avd           : Deletes an Android Virtual Device.
- update avd           : Updates an Android Virtual Device to match the folders
of a new SDK.
- create project       : Creates a new Android project.
- update project       : Updates an Android project (must already have an Androi
dManifest.xml).
- create test-project  : Creates a new Android project for a test package.
- update test-project  : Updates the Android project for a test package (must al
ready have an AndroidManifest.xml).
- create lib-project   : Creates a new Android library project.
- update lib-project   : Updates an Android library project (must already have a
n AndroidManifest.xml).
- update adb           : Updates adb to support the USB devices declared in the
SDK add-ons.
- update sdk           : Updates the SDK by suggesting new platforms to install
if available.

C:\Documents and Settings\Sanja>

Пришлось гуглить - так вышел на серию статей об Android разработке.
Почему именно Android? Чем он лучше других?
Создание рабочей среды для разработки приложений под Android
Создание нового приложения для Android
Прочиал, переварил и вам советую.

Итак по совету Автора, потребовалось запустить SDK Manager.


И произвести выбор необходимых мне компонентов.


Загрузка заняла некоторое время


Да, как пожелаешь...


Правда я так и не понял что перезапустилось, но ладно. Вот менеджер в результате


А еще папок стало заметно больше.


Ну теперь совсем другое дело! Есть таргеты

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Sanja>android list targets
Available Android targets:
id: 1 or "android-8"
     Name: Android 2.2
     Type: Platform
     API level: 8
     Revision: 2
     Skins: HVGA, WQVGA400, WQVGA432, WVGA854, QVGA, WVGA800 (default)

C:\Documents and Settings\Sanja>

а значит я могу создать и avd и запуститься под ним. Создавая avd я сознательно выбрал Yes на "Do you wish to create a custom hardware profile" ничего не меняя (все равно система придложила параметры по умолчанию) я узнал, что можно было бы поменять. Так, любопытства ради.

C:\Documents and Settings\Sanja>android create avd -n Apofig -t 1
Android 2.2 is a basic Android platform.
Do you wish to create a custom hardware profile [no]y

SD Card support: Whether the device supports insertion/removal of virtual SD Car
ds.
hw.sdCard [yes]:

Abstracted LCD density: Must be one of 120, 160 or 240. A value used to roughly
describe the density of the LCD screen for automatic resource/asset selection.
hw.lcd.density [160]:

DPad support: Whether the device has DPad keys
hw.dPad [yes]:

Accelerometer: Whether there is an accelerometer in the device.
hw.accelerometer [yes]:

Maximum horizontal camera pixels
hw.camera.maxHorizontalPixels [640]:

Cache partition size
disk.cachePartition.size [66MB]:

Audio playback support: Whether the device can play audio
hw.audioOutput [yes]:

Track-ball support: Whether there is a trackball on the device.
hw.trackBall [yes]:

Maximum vertical camera pixels
hw.camera.maxVerticalPixels [480]:

Proximity support: Whether there is an proximity in the device.
hw.sensors.proximity [yes]:

Camera support: Whether the device has a camera.
hw.camera [no]:

Battery support: Whether the device can run on a battery.
hw.battery [yes]:

Audio recording support: Whether the device can record audio
hw.audioInput [yes]:

Touch-screen support: Whether there is a touch screen or not on the device.
hw.touchScreen [yes]:

GPS support: Whether there is a GPS in the device.
hw.gps [yes]:

Cache partition support: Whether we use a /cache partition on the device.
disk.cachePartition [yes]:

Keyboard lid support: Whether the QWERTY keyboard can be opened/closed.
hw.keyboard.lid [yes]:

Keyboard support: Whether the device has a QWERTY keyboard.
hw.keyboard [yes]:

Max VM application heap size: The maximum heap size a Dalvik application might a
llocate before being killed by the system. Value is in megabytes.
vm.heapSize [16]:

Device ram size: The amount of physical RAM on the device, in megabytes.
hw.ramSize [0]:

GSM modem support: Whether there is a GSM modem in the device.
hw.gsmModem [yes]:

Created AVD 'Apofig' based on Android 2.2,
with the following hardware config:
hw.lcd.density=240
vm.heapSize=24

C:\Documents and Settings\Sanja>

Теперь вызовом команды

C:\Documents and Settings\Sanja>emulator @Apofig

запустился эмулятор!

Немного понаблюдав за картинкой


вскоре дождался другой (пора менять мой компутер)


После эмулятор завис на несколько часов :)... Вот как бы и все, что получилось сделать...

воскресенье, 16 октября 2011 г.

Java for fun: Пишем приложение на Android: Первый запуск

Привет.Попишем немного под Android.

Идея проекта проста как двери. Я программист, а потому часто забываю, сидя за компом, сделать важные вещи - попить водички, сходить размяться, позвонить домой семье, сделать перерыв, сходить покушать, уделить время другим сегодняшним задачам. Нужно напоминать. Это все можно было реализовать под Windows и установить на рабочий компьютер. Более того такая программа уже есть, и это все не то. Смартфон - это не рабочий компьютер, это что-то похожее на зубную щетку - ближе к телу что-ли, а потому приложение-напоминалка, написанное для смартфона, будет полезнее (чем то же, но для стационарного компьютера).

Итак все начинается с установки окружения. Много времени уделять этому не стану - в сети полно мануалов по установке рабочего окружения. Скажу лишь только, что надо установить Eclipse IDE for Java Developers (у меня Indigo), JDK6, Android SDK, плагин ADT для Eclipse. Ну и все. Если будут с этим проблемы - дай знать, и я напишу мануал на эту тему.

Итак окружение же установлено - будем создавать проект. Открываем рабочий workspace в Eclipse (рабочий workspaсe - вот завернул). Создаем там новый Android проект.



Он имеет какую-то структуру. Предлагаю проглянуть ее по диагонали, чтобы если найдем какой-то код в сети, то знать приблизительно куда его вставить.




Некоторые из них автоматически генерируются системой - нам легче :)

Итак первое что хотелось бы сделать - это при запуске выдавать диалог, с одним единственным сообщением "сходи отдохни!". Вторым шагом зацепим таймер. Третьим - сделаем возможным конфигурировать интервалы. Далее - больше сообщений. Потом еще что-то :) Но для начала - простой диалог при запуске.

Посмотрим насколько самодостаточно генерированное Eclipse приложение - запустим его.

Для начала нам надо подключить телефон через USB кабель к компьютеру и настроить его. После подключения телефон предложит (либо нет) выбрать режим подключения


Так же надо сделать доступной отладку через USB


Добраться до этих двух окошек настроек, должно быть не сложно - после подключения телефона к компьютеру на его task bar (или как он там называется) засветятся две иконки.


Растянем окно с текущими задачами, там можно добраться до соответствующих настроек.


Чтобы это все получилось, на компьютере должен быть установлен драйвер Android устройства


Вообще-то при подключении телефона к компьютеру Windows определит новое устройство, и тут надо бы указать драйвер из папки


А драйвер этот скачивается при обновлении AndroidSDK. Для этого запускаем Android SDK and AVD manager


Потом выбираем драйвер и жмем установить


После установки появится папка с драйвером.

Могут быть трудности типа Windows не может найти драйвер, тогда в свойствах нового неизвестного оборудования (телефон без установленного драйвера в Windows Device Manager будет отмечен как устройство с иконкой - желтый вопросительный знак - вот его свойства и надо посмотреть)


Теперь откроем файл android_winusb.inf на редактирование и добавляем туда две строки одинаковые строки в два раздела (код берется из свойств устройства)


После этого Windows должна найти в папке "...\android-sdk-windows\extras\google\usb_driver" драйвер


Если и это не помогло - пиши в комменты к посту, попробуем разобраться.

Хух, после этого всего шаманства можно пробовать запустить Android приложение через Eclipse.


Запуск прокатил не с первого раза, но со второго все получилось.


На экране я заметил вот такую картинку.


Кстати, чтобы сделать скриншот с телефона надо запустить "Dalvik Debug Monitor". Делается это просто запуском команды ddms в консоли


Консольное приложение находится в папке с установленной AndroidSDK


И если оно не запустилось, то вероятно в переменных окружения Windows не прописана переменная ANDROID_HOME


+ в переменной Path не указана папка tools


Если все ок, то увидим окно дебаггера, где выберем подключенное устройство + меню Device->Screen Capture.


А дальше сохраним скриншот


Итак наше приложение работает. Но я хотел диалоговое окно с кнопкой OK, а не окно на весь экран. Исправим!

Вот то, что я хочу сделать :) Только чтобы текст был мой, а не какой-то там "Ой! Ошибка!"


Правильно иль нет я создал диалог - узнаем в будущем, пока мне достаточно - я увидел на экране то, что хотел.

Кстати вот книга, в которой я подглядел код для создания диалогового окна. Хороша для новичков.

Продолжение, как всегда, следует...