Android как он внутри

всё относительно мобильных гаджетов и приложений

Модераторы: Olej, adminn, vikos

Правила форума
Все сообщения не по теме форума будут, без каких либо уведомлений, удаляться, а их авторы - убираться из регистрации.
Язык сообщений - исключительно русский.
Аватара пользователя
Olej
Писатель
Сообщения: 13935
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Android как он внутри

Непрочитанное сообщение Olej » 16 апр 2012, 12:55

О внутренней (Linux) начинке Android разрослась тема в Обсуждение дистрибутивов Linux, но там ей определённо не место. Поэтому переношу её сюда.

Вот вопросы из этой области:
- Какие стенды (аппаратные и программные) кому доступны (особенно аппаратные), и как ними воспользоваться?
- Как добраться до внутреннего устройства Android, и выполнять там Linux команды и диагностику?
- busybox & toolbox - что и откуда? как установить (если нет)? что входит в состав? ... насколько может варьироваться состав в разных вариантах Android?
- как доустановить Linux утилиты?
- как (и откуда) подготовить новую прошивку? как её залить? какие неприятности тут ожидают?
- сетевые интерфейсы Android...

Это ещё и не все вопросы по Android, но по которым мало попадается информации (или мне это так не везёт?).
Так что такая отдельная тема совершенно уместна.

Аватара пользователя
Olej
Писатель
Сообщения: 13935
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Android как он внутри

Непрочитанное сообщение Olej » 16 апр 2012, 13:07

Основные выжимки из предыдущих обсуждений:

1. для работы с Android из Linux хоста нам нужен SDK.
viewtopic.php?f=4&t=1558&start=0#p2517
Основной ресурс разработчиков Android, откуда берём SDK (и читаем комментарии к разным версиям) это здесь: http://developer.android.com/sdk/index.html
Но! здесь только последний релиз SDK, а может понадобится тот, который поддерживает ту версию Android, которая зашита на реальном устройстве, тогда все предыдущие релизы SDK смотрим здесь: http://developer.android.com/sdk/older_releases.html . Некоторую сложность представляет соотнести: какая версия Android требует какого релиза SDK,
Будем считать, что SDK у нас установлен и даже для разных версий Android (как и что - см. там в исходной теме).
После всяких подтягиваний тулзов это может быть такая немалая конструкция:

Код: Выделить всё

[olej@notebook android-sdk-linux_x86]$ du -hs
1,2G	.
Самые интересные нам приложения находятся в:

Код: Выделить всё

[olej@notebook android-sdk-linux_x86]$ ls tools 
adb_has_moved.txt  ddms         emulator-arm     hprof-conv  monkeyrunner       sqlite3
android            dmtracedump  emulator-x86     layoutopt   NOTICE.txt         traceview
ant                draw9patch   etc1tool         lib         proguard           zipalign
apkbuilder         emulator     hierarchyviewer  mksdcard    source.properties
Android SDK Manager:

Код: Выделить всё

[olej@notebook tools]$ ./android
...
Android_SDK_Manager.png
Android_SDK_Manager.png (83.55 КБ) 9971 просмотр
... и вот здесь (здесь adb постоянно нужен):

Код: Выделить всё

[olej@notebook android-sdk-linux_x86]$ ls platform-tools 
aapt  adb  aidl  dexdump  dx  lib  llvm-rs-cc  NOTICE.txt  renderscript  source.properties

Аватара пользователя
Olej
Писатель
Сообщения: 13935
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Android как он внутри

Непрочитанное сообщение Olej » 16 апр 2012, 13:17

Olej писал(а):Основные выжимки из предыдущих обсуждений:

1. для работы с Android из Linux хоста нам нужен SDK.
2. там же в составе SDK есть эмулятор Android. Создаём мы экземпляры эмулируемых Android-ов там же в Android SDK Manager (меню Tools => Android Virtual Device Manager):
Android_Virtual_Device_Manager.png
Android_Virtual_Device_Manager.png (43.79 КБ) 9971 просмотр
А запускаем нужные нам экземпляры:

Код: Выделить всё

[olej@notebook tools]$ ./emulator -avd MyAvd1
...
Android_Virtual_Device_Manager.png
Android_Virtual_Device_Manager.png (43.79 КБ) 9971 просмотр
Вложения
MyAvd1.png
(255.24 КБ) 9912 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 13935
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Android как он внутри

Непрочитанное сообщение Olej » 16 апр 2012, 13:26

Olej писал(а): 2. там же в составе SDK есть эмулятор Android.
Ещё один вариант запуска эмулятора предоставляет IDE для разработки под Android - IntelliJ IDEA
(http://www.jetbrains.com/idea/ - там есть "community" вариант свободный для скачивания).
IntelliJ IDEA 10.5.png
IntelliJ IDEA 10.5.png (93.92 КБ) 9977 просмотров
Как легко видеть, IntelliJ IDEA использует тот же эмулятор SDK:
MyAvd1_2.png
(253.84 КБ) 9916 скачиваний
- удобство здесь в том, что можно одновременно изготавливать + отлаживать приложения Android ... может для кого-то и в том, что всё это из-под GUI делается.

Аватара пользователя
Olej
Писатель
Сообщения: 13935
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Android как он внутри

Непрочитанное сообщение Olej » 16 апр 2012, 13:37

Olej писал(а): 2. там же в составе SDK есть эмулятор Android.
Ещё один вариант рабочего стенда с Android - это запуск в VirtualBox виртуальной машины с Android, но не на ARM процессоре, а на x86, из отдельного проекта ... как всё это достаточно детально описано в теме: Android-x86
Изображение
(там в теме подробно описано где взять образ и какой, и как его установить в VirtualBox).

Для определённости сразу проверяем хост, на котором висит такой Android-х86 :

Код: Выделить всё

[olej@notebook platform-tools]$ ping 192.168.1.21
PING 192.168.1.21 (192.168.1.21) 56(84) bytes of data.
64 bytes from 192.168.1.21: icmp_req=1 ttl=64 time=0.349 ms
64 bytes from 192.168.1.21: icmp_req=2 ttl=64 time=0.350 ms
64 bytes from 192.168.1.21: icmp_req=3 ttl=64 time=0.256 ms
^C
--- 192.168.1.21 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.256/0.318/0.350/0.046 ms
(в данном случае и сам VirtualBox работает у меня в LAN на удалённом хосте 192.168.1.9 - статика, и VM на нём получил 192.168.1.21 по DHCP ... всё по-честному)

Аватара пользователя
Olej
Писатель
Сообщения: 13935
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Android как он внутри

Непрочитанное сообщение Olej » 16 апр 2012, 16:04

Olej писал(а): 2. там же в составе SDK есть эмулятор Android.
Ещё вариант создать исполняющую систему Android:
- в QEMU под ARM (но не VirtualBox, который хоть и QEMU по коду, но умеет эмулировать только одну платформу х86) ...
- запустить VM из образа Android для ARM.

Я не нашёл (по интернет) загрузочного образа именно Android, ... но нашёл (на QEMU в качестве образца: http://wiki.qemu.org/download/arm-test-0.2.tar.gz) образы Linux для ARM, чтоб посмотреть реализуемость такого способа:

Код: Выделить всё

# qemu-system-arm -kernel zImage.integrator -initrd arm_root.img
...
QEMU.png
QEMU.png (86.48 КБ) 9975 просмотров
Это не Android, но это уже модель того, как это должно работать.

Аватара пользователя
Olej
Писатель
Сообщения: 13935
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Android как он внутри

Непрочитанное сообщение Olej » 16 апр 2012, 16:22

Olej писал(а): 2. там же в составе SDK есть эмулятор Android.
Ну и последний (но первый по значимости) вариант исполняющей системы Android - это реализации в железе.
Но в этом и минус такого способа: все производители устройств Android а). городят там свои несовместимые конфигурации + б). добавляют проприетарные свои собственные компоненты в бинарном виде.

Я для сравнительной отработки использую вот такой "железный" девайс:
Вот безалаберная, но любопытная публикация: HSG X5A MID Android Tablet - http://kenzo.net.od.ua/droid/
X5A он же G11 - это мой планшет для экспериментов: http://www.pandawill.com/g11-android-2- ... -case.html - дёшево и не жалко , но то, что он вытворяет, можно легко, думаю, повторить, на любом девайсе, в том числе и на симуляторе.

Аватара пользователя
Olej
Писатель
Сообщения: 13935
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Android как он внутри

Непрочитанное сообщение Olej » 16 апр 2012, 16:37

Итого, у нас уже есть:
п.1. - установленный SDK
п.2. - исполняющая система Android (и даже несколько).

Теперь следующий шаг:
3. Связаться с работающей исполняющей системой Android.
Для этого переходим в SDK в каталог platform-tools:

Код: Выделить всё

[olej@notebook platform-tools]$ ./adb connect 192.168.1.21
connected to 192.168.1.21:5555
- это я связал adb с работающим на VM (удалённый хост) Android-x86.
А это:

Код: Выделить всё

[olej@notebook platform-tools]$ ./adb devices
List of devices attached 
0123456789ABCDEF	device
emulator-5554	device
192.168.1.21:5555	device
- пересмотрели все доступные (на сейчас) для связи исполняющие системы Android:
1. локальное (через USB) реальное устройство, планшет X5A (он же G11);
2. локальный эмулятор из SDK;
3. удалённо работающий в VM Android-x86;

Теперь (когда adb их видит) можно с ними связываться с помощью консоли adb, хоть поочерёдно, хоть со всеми одновременно.

P.S. да, ... adb - это: Android Debug Bridge.

Аватара пользователя
Olej
Писатель
Сообщения: 13935
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Android как он внутри

Непрочитанное сообщение Olej » 16 апр 2012, 17:19

Olej писал(а): Теперь (когда adb их видит) можно с ними связываться с помощью консоли adb, хоть поочерёдно, хоть со всеми одновременно.
Вот так вот можно (к примеру) командами Linux-хоста стянуть файл образа, используемый планшетом G11 (подключённым к Linux-хосту USB-шнурком):

Код: Выделить всё

[olej@notebook platform-tools]$ ./adb -s 0123456789ABCDEF shell cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00a00000 00080000 "boot"
mtd1: 00500000 00080000 "kpanic"
mtd2: 09600000 00080000 "system"
mtd3: 00400000 00080000 "splash"
mtd4: 02800000 00080000 "cache"
mtd5: 12300000 00080000 "userdata"
mtd6: 00a00000 00080000 "recovery"
mtd7: 00100000 00080000 "misc"
mtd8: 00100000 00080000 "tcc"
[olej@notebook platform-tools]$ ./adb -s 0123456789ABCDEF shell ls -l /dev/mtd
crw------- root     root      90,  17 2009-09-02 04:30 mtd8ro
crw-rw-rw- root     root      90,  16 2009-09-02 04:30 mtd8
crw------- root     root      90,  15 2009-09-02 04:30 mtd7ro
cr--rw---- radio    diag      90,  14 2009-09-02 04:30 mtd7
crw------- root     root      90,  13 2009-09-02 04:30 mtd6ro
crw------- root     root      90,  12 2009-09-02 04:30 mtd6
crw------- root     root      90,  11 2009-09-02 04:30 mtd5ro
crw------- root     root      90,  10 2009-09-02 04:30 mtd5
crw------- root     root      90,   9 2009-09-02 04:30 mtd4ro
crw------- root     root      90,   8 2009-09-02 04:30 mtd4
crw------- root     root      90,   7 2009-09-02 04:30 mtd3ro
crw------- root     root      90,   6 2009-09-02 04:30 mtd3
crw------- root     root      90,   5 2009-09-02 04:30 mtd2ro
crw------- root     root      90,   4 2009-09-02 04:30 mtd2
crw------- root     root      90,   3 2009-09-02 04:30 mtd1ro
crw------- root     root      90,   2 2009-09-02 04:30 mtd1
crw------- root     root      90,   1 2009-09-02 04:30 mtd0ro
crw------- root     root      90,   0 2009-09-02 04:30 mtd0
[olej@notebook platform-tools]$ ./adb -s 0123456789ABCDEF pull /dev/mtd/mtd2 system.G11
2355 KB/s (157286400 bytes in 65.199s)
[olej@notebook 16]$ file system.G11
system.G11: VMS Alpha executable
[olej@notebook 16]$ ls -l system.G11
-rw-r--r-- 1 olej olej 157286400 апр.  16 16:46 system.G11

Аватара пользователя
Olej
Писатель
Сообщения: 13935
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Android как он внутри

Непрочитанное сообщение Olej » 17 апр 2012, 10:55

Olej писал(а):
Olej писал(а): 2. там же в составе SDK есть эмулятор Android.
Ещё вариант создать исполняющую систему Android:
- в QEMU под ARM (но не VirtualBox, который хоть и QEMU по коду, но умеет эмулировать только одну платформу х86) ...
- запустить VM из образа Android для ARM.

Я не нашёл (по интернет) загрузочного образа именно Android, ...
P.S. для тех, кто захочет попробовать себя на этом способе ;-)
1. emulator Android в каталоге tools SDK - это и есть QEMU ... о чём они и сами на сайте пишут...
2. непонятна только форма команды запуска QEMU и использования в ней файлов образов (.img)
3. сами файлы образов (после создания экземпляра эмулятора в SDK) тоже легко находятся в каталоге в SDK вида system-images/android-14/armeabi-v7a (в зависимости от версии Android созданного эмулятора)...

Код: Выделить всё

[olej@notebook armeabi-v7a]$ ls
build.prop  kernel-qemu  NOTICE.txt  ramdisk.img  source.properties  system.img  userdata.img
4. а ещё некоторые частные образы (.img), такие как образ SD-карты, найдёте в каталоге $HOME/.android/avd/<имя_эмулятора>.avd:

Код: Выделить всё

[olej@notebook MyAvd1.avd]$ ls *.img
cache.img  userdata.img  userdata-qemu.img
Т.е. вопрос для уточнения только в том: как и какие из этих файлов-образов указать в команде ручного запуска QEMU?, и как параметрами этого ручного запуска изменять режимы запуска эмулятора?

Ответить

Вернуться в «Android»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей