Android как он внутри
Модераторы: Olej, adminn, vikos
Правила форума
Все сообщения не по теме форума будут, без каких либо уведомлений, удаляться, а их авторы - убираться из регистрации.
Язык сообщений - исключительно русский.
Все сообщения не по теме форума будут, без каких либо уведомлений, удаляться, а их авторы - убираться из регистрации.
Язык сообщений - исключительно русский.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Android как он внутри
О внутренней (Linux) начинке Android разрослась тема в Обсуждение дистрибутивов Linux, но там ей определённо не место. Поэтому переношу её сюда.
Вот вопросы из этой области:
- Какие стенды (аппаратные и программные) кому доступны (особенно аппаратные), и как ними воспользоваться?
- Как добраться до внутреннего устройства Android, и выполнять там Linux команды и диагностику?
- busybox & toolbox - что и откуда? как установить (если нет)? что входит в состав? ... насколько может варьироваться состав в разных вариантах Android?
- как доустановить Linux утилиты?
- как (и откуда) подготовить новую прошивку? как её залить? какие неприятности тут ожидают?
- сетевые интерфейсы Android...
Это ещё и не все вопросы по Android, но по которым мало попадается информации (или мне это так не везёт?).
Так что такая отдельная тема совершенно уместна.
Вот вопросы из этой области:
- Какие стенды (аппаратные и программные) кому доступны (особенно аппаратные), и как ними воспользоваться?
- Как добраться до внутреннего устройства Android, и выполнять там Linux команды и диагностику?
- busybox & toolbox - что и откуда? как установить (если нет)? что входит в состав? ... насколько может варьироваться состав в разных вариантах Android?
- как доустановить Linux утилиты?
- как (и откуда) подготовить новую прошивку? как её залить? какие неприятности тут ожидают?
- сетевые интерфейсы Android...
Это ещё и не все вопросы по Android, но по которым мало попадается информации (или мне это так не везёт?).
Так что такая отдельная тема совершенно уместна.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Android как он внутри
Основные выжимки из предыдущих обсуждений:
1. для работы с Android из Linux хоста нам нужен SDK.
viewtopic.php?f=4&t=1558&start=0#p2517
После всяких подтягиваний тулзов это может быть такая немалая конструкция:
Самые интересные нам приложения находятся в:
Android SDK Manager:
... и вот здесь (здесь adb постоянно нужен):
1. для работы с Android из Linux хоста нам нужен SDK.
viewtopic.php?f=4&t=1558&start=0#p2517
Будем считать, что SDK у нас установлен и даже для разных версий Android (как и что - см. там в исходной теме).Основной ресурс разработчиков Android, откуда берём SDK (и читаем комментарии к разным версиям) это здесь: http://developer.android.com/sdk/index.html
Но! здесь только последний релиз SDK, а может понадобится тот, который поддерживает ту версию Android, которая зашита на реальном устройстве, тогда все предыдущие релизы SDK смотрим здесь: http://developer.android.com/sdk/older_releases.html . Некоторую сложность представляет соотнести: какая версия Android требует какого релиза SDK,
После всяких подтягиваний тулзов это может быть такая немалая конструкция:
Код: Выделить всё
[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
Код: Выделить всё
[olej@notebook tools]$ ./android
...
Код: Выделить всё
[olej@notebook android-sdk-linux_x86]$ ls platform-tools
aapt adb aidl dexdump dx lib llvm-rs-cc NOTICE.txt renderscript source.properties
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Android как он внутри
2. там же в составе SDK есть эмулятор Android. Создаём мы экземпляры эмулируемых Android-ов там же в Android SDK Manager (меню Tools => Android Virtual Device Manager): А запускаем нужные нам экземпляры:Olej писал(а):Основные выжимки из предыдущих обсуждений:
1. для работы с Android из Linux хоста нам нужен SDK.
Код: Выделить всё
[olej@notebook tools]$ ./emulator -avd MyAvd1
...
- Вложения
-
- MyAvd1.png
- (255.24 КБ) 9912 скачиваний
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Android как он внутри
Ещё один вариант запуска эмулятора предоставляет IDE для разработки под Android - IntelliJ IDEAOlej писал(а): 2. там же в составе SDK есть эмулятор Android.
(http://www.jetbrains.com/idea/ - там есть "community" вариант свободный для скачивания).
Как легко видеть, IntelliJ IDEA использует тот же эмулятор SDK: - удобство здесь в том, что можно одновременно изготавливать + отлаживать приложения Android ... может для кого-то и в том, что всё это из-под GUI делается.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Android как он внутри
Ещё один вариант рабочего стенда с Android - это запуск в VirtualBox виртуальной машины с Android, но не на ARM процессоре, а на x86, из отдельного проекта ... как всё это достаточно детально описано в теме: Android-x86Olej писал(а): 2. там же в составе SDK есть эмулятор Android.
(там в теме подробно описано где взять образ и какой, и как его установить в 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
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Android как он внутри
Ещё вариант создать исполняющую систему Android:Olej писал(а): 2. там же в составе SDK есть эмулятор 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
...
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Android как он внутри
Ну и последний (но первый по значимости) вариант исполняющей системы Android - это реализации в железе.Olej писал(а): 2. там же в составе SDK есть эмулятор 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
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Android как он внутри
Итого, у нас уже есть:
п.1. - установленный SDK
п.2. - исполняющая система Android (и даже несколько).
Теперь следующий шаг:
3. Связаться с работающей исполняющей системой Android.
Для этого переходим в SDK в каталог platform-tools:
- это я связал adb с работающим на VM (удалённый хост) Android-x86.
А это:
- пересмотрели все доступные (на сейчас) для связи исполняющие системы Android:
1. локальное (через USB) реальное устройство, планшет X5A (он же G11);
2. локальный эмулятор из SDK;
3. удалённо работающий в VM Android-x86;
Теперь (когда adb их видит) можно с ними связываться с помощью консоли adb, хоть поочерёдно, хоть со всеми одновременно.
P.S. да, ... adb - это: Android Debug Bridge.
п.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
А это:
Код: Выделить всё
[olej@notebook platform-tools]$ ./adb devices
List of devices attached
0123456789ABCDEF device
emulator-5554 device
192.168.1.21:5555 device
1. локальное (через USB) реальное устройство, планшет X5A (он же G11);
2. локальный эмулятор из SDK;
3. удалённо работающий в VM Android-x86;
Теперь (когда adb их видит) можно с ними связываться с помощью консоли adb, хоть поочерёдно, хоть со всеми одновременно.
P.S. да, ... adb - это: Android Debug Bridge.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Android как он внутри
Вот так вот можно (к примеру) командами Linux-хоста стянуть файл образа, используемый планшетом G11 (подключённым к Linux-хосту USB-шнурком):Olej писал(а): Теперь (когда adb их видит) можно с ними связываться с помощью консоли adb, хоть поочерёдно, хоть со всеми одновременно.
Код: Выделить всё
[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
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Android как он внутри
P.S. для тех, кто захочет попробовать себя на этом способеOlej писал(а):Ещё вариант создать исполняющую систему Android:Olej писал(а): 2. там же в составе SDK есть эмулятор Android.
- в QEMU под ARM (но не VirtualBox, который хоть и QEMU по коду, но умеет эмулировать только одну платформу х86) ...
- запустить VM из образа Android для ARM.
Я не нашёл (по интернет) загрузочного образа именно Android, ...
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
Код: Выделить всё
[olej@notebook MyAvd1.avd]$ ls *.img
cache.img userdata.img userdata-qemu.img
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей