Як використовувати Android на звичайному комп’ютері


Xakep #240. Ghidra

Xakep #239. Розкрити та вивчити

Xakep #238. Забутий Android

Xakep #237. Даркнет 2018

Зміст статті
Як запустити мобільні програми на комп'ютері? У пакеті для розробника Android є спеціальний емулятор, що дозволяє помацати мобільну ОС. Одна проблема – він гальмує. Прямо скажемо, сильно гальмує. Але, на щастя, вже досить давно ведеться робота над цікавим проектом із портування платформи Android на платформу PC.
Android-x86
Як відомо, вихідні коди Android відкриті - така політика Google. Тому будь-який бажаючий у принципі має можливість взяти за основу вихідну версію мобільної ОС і почати розробку своєї власної гілки. Багато ентузіастів активно випускають патчі, що реалізують додатковий функціонал, якого немає в оригінальному Android.
Саме так з'явився проект "patch hosting for android x86 support". Розробник планували випускати патчі для підтримки платформи x86. Але після кількох місяців роботи вони зрозуміли, що здатні на більше, ніж просто постачати патчі. Так з'явився проект Android-x86 — спеціальна версія мобільної ОС для запуску на звичайному комп'ютері. Android-x86, як і Android, має різні гілки. Як тестова платформа обраний культовий нетбук Eee PC, але фактично не має значення, куди ти встановлюватимеш проект. Це може бути як комп'ютер, так і планшетник або ноутбук (до перевірених пристроїв відносяться ASUS Eee, Viewsonic Viewpad 10, Dell Inspiron Mini Duo, Q1U Samsung, Viliv S5, Lenovo ThinkPad x61 Tablet). Останній білд навіть має підтримку Wi-Fi.
Хакер #157. Гроші на багах у Chrome
Втім, якщо установкаAndroid на ноутбук - це, швидше, пустощі, то установка на віртуальну машину може принести цілком відчутну користь, особливо тим, хто хоче спробувати свої сили в розробці під Android, так як після встановлення їм буде набагато зручніше тестувати програми (правда, доведеться миритися з деякими обмеженнями, наприклад, з відсутністю емуляції акселерометра). Пропоную перейти до практики.
Налагодження через gsdserver
Не можу не відзначити, що Android-x86 пропонується із встановленим GDBserver'ом, який можна знайти в /sbin/gdbserver. Таким чином, ми маємо можливість використовувати GDB для налагодження додатків на віддаленій машині. Для цього, знову ж таки, необхідно підняти мережу між віртуальною та хостовою ОС як показано вище і запустити GDBserver:
Можна також скористатися опцією «attach pid», щоб приєднатися до процесу, який вже запущено. Далі ми можемо підключатися до нашої віртуалки зі звичайної машини. Запускаємо GDB:
І підключаємося до віддаленого сервера:
Встановлення на віртуалку
- Насамперед варто піти на офіційний сайт і вибрати відповідний образ. Всі образи є LiveCD.
- Вибравши відповідний ісошник (я завантажив android-x86-2.2-r2-asus_laptop.iso), можна приступати безпосередньо до встановлення під віртуальним оточенням, наприклад, під безкоштовним VirtualBox (www.virtualbox.org). Запускаємо його та створюємо нову віртуальну машину з наступними параметрами:
У налаштуваннях віртуальної машини потрібно прописати завантажений нами образ Android-x86 як DVD-привод. Після цього віртуалку можна запускати. Коли віртуальна машина завантажиться з LiveCD, ти бачиш меню для вибору варіантів завантаження. Щоб просто запустити та подивитися ОС, достатньо вибрати «Run Android-x86безвикористання». Оскільки нас більше цікавить установка Android як звичайна ОС, вибираємо останній пункт - "Installation - Install Android-x86 to harddisk".

Загалом, на цьому етапі ми досягли поставленої мети - завантажили Android на звичайному комп'ютері. Для тих, хто любить ставити все останнє, скажу, що версія 4.0 має статус devel, так що в ній можуть бути різні недоробки. Наприклад, чомусь одночаснопоказуються графічна оболонка та консоль. Не знаю, чи баг це чи фіча, але працювати в такій ОС дуже незручно. Образ 3.2RC2 хороший всім, крім того, що в ньому відсутня підтримка Ethernet, яка мені була потрібна для налагодження додатків. Але якщо мета всієї витівки просто погратися з Android, то сміливо можеш вибирати його. Я ж зупинився на гілці 2.2.
Звук. Після встановлення Android-x86 звук часто перестає працювати. Я теж виявив цю проблему, коли зайшов на YouTube подивитися ролики. На щастя, все виявилося не так страшно, і заміна звукової карти в налаштуваннях віртуальної машини на Intel HD Audio дозволила усунути збій. Якщо просте рішення не допомагає, на офіційному сайті викладено FAQ, де описано, як змусити працювати ICH AC97 під VirtualBox.
Інсталім програми
Якщо потрібні лише програми
Спеціально на той випадок, якщо потрібно запустити лише Android-програми (скажімо, популярні іграшки), створений багато в чому унікальний проект Bluestacks, розробка якого ведеться спільно з компанією AMD. Ідея в тому, щоб не емулювати ОС Android, а відтворити оточення мобільної ОС для нативного виконання програм. Що дає? Ти можеш запускати ігри у повноекранному режимі, і вони реально не гальмуватимуть. Платформа дозволяє запускати десять програм, які йдуть у комплекті з нею, а також встановлювати додаткові. Це дуже просто. Заходимо до папки із встановленою програмою, знаходимо файл HD-ApkHandler.exe і створюємо для нього ярлик на робочому столі. Далі скачуємо цікавий для нас додаток для Android (у вигляді apk-пакета) і перетягуємо його на щойно створений ярлик. Все, програма встановлена - її можна запускати. Деякі програми, щоправда, не встановляться через проблеми зсумісністю. Деякі інші, наприклад Angry Birds і Fruit Ninja, позначені компанією BlueStacks як «преміум-додатки», які можна буде встановити лише за умови використання платної версії програми. Однак купа інших ігор встановиться та запуститься без проблем.
Налаштування для налагодження
Отже, ми встановили вісь, погралися з інтерфейсом Android, встановили програми, які хотіли подивитися, - час переходити до серйозніших занять. Я спочатку збирався використовувати таку систему як платформу для тестування програм, що розробляються, тому розповім, як це робиться.
Насамперед нам знадобиться налаштувати мережу, причому в нашому випадку вона не зовсім стандартна. Android-система повинна мати доступ в інтернет (що просто необхідно при написанні мережних додатків), а також ще одне підключення до локальної мережі, через яке ми могли б зв'язатися з нашою віртуальною машиною для налагодження програм. Ethernet потрібен, щоб налаштувати NAT у віртуальній машині та повноцінно користуватися інтернетом.
Отже, відкриваємо розділ «Мережа» і налаштовуємо там два адаптери:
Для продовження потрібно ребутувати систему. За промовчанням Android x86 не може працювати з двома адаптерами мережі, але це легко виправити. Йдемо в меню для запуску програм, переходимо до «Settings -> Configure Ethernet» та вибираємо «eth0 dhcp», після чого знову перезавантажуємо віртуалку. Після завантаження потрібно перейти в консоль. Робиться це дуже просто, за допомогою комбінації Alt+F1…F6 (Alt+F7 поверне нас у графічний інтерфейс). У консолі необхідно виконати такі команди:
Тепер, як ти бачиш, у нас піднято два інтерфейси: один для виходу в мережу, інший для налагодження програм. Залишається лише налаштувати останню.
Shortcut'и дляшвидкої навігації
- Кнопка Windows відповідає кнопці Home в Android;
- Esc відповідає кнопці "Назад" в Android;
- F2 відповідає кнопці Menu;
- F3 відповідає кнопці пошуку;
- Alt + F1 - перемикання в консольний режим;
- Alt + F7 — переключення в режим GUI.
Налагодження програм
Для подальших дій нам знадобиться Android SDK, який доведеться завантажити.
Тут emulator-5554 – дефолтний емулятор від Google, а 192.168.56.101:5555 – наша віртуальна машина.

Більш детальну інформацію про утиліту ADB та всі її параметри ти можеш подивитися на офіційному сайті.