Почему и как тестировать Android 1.0/1.1 сегодня
Android 1.0 (API 1) и 1.1 (API 2) — первые коммерческие релизы 2008–2009 гг.; сегодня их используют для ретро‑тестов и исследований. Готовых образов в современном SDK почти нет: либо собрать из AOSP, либо найти community‑архивы/зеркала и запускать в старом эмуляторе или QEMU.
Что это за версии и зачем они нужны
Android 1.0 — первая стабильная коммерческая версия (HTC Dream/G1). Android 1.1 — небольшое обновление с багфиксами и парой функций (сохранение вложений, улучшения для карт). Практическое применение сегодня: исторические исследования, проверка совместимости старого софта, ретро‑демонстрации интерфейса, восстановление бэкапов старых проектов.
Ключевые ограничения:
- Очень ограниченное API и устаревший WebView/TLS.
- Аппаратные ожидания: ARM11‑класса CPU, десятки–сотни MB RAM.
- Современные приложения почти наверняка не запустятся без адаптации.
Если нужна только демонстрация UI — хватит community‑образа или x86‑эмуляции; для «чистой» проверки API и бинарной совместимости лучше собирать из исходников AOSP.
Где взять образы и исходники (практически)
Варианты по приоритету:
- Собрать из AOSP — самый чистый, но требует старой toolchain/среды.
- Использовать community‑архивы/восстановленные билды — быстрее, но проверяйте происхождение.
- Искать в архивных SDK/Internet Archive — иногда встречаются старые пакеты эмулятора.
- Попробовать android‑x86 — если вас устраивает «похожая» UI‑симуляция на x86.
Что искать: теги/ветки вида android-1.0 / release-1.0 в зеркалах AOSP или реконструированные сборки в архивах сообщества.
Как получить и запустить образ — краткая пошаговая инструкция
Вариант A — собрать из AOSP (рекомендуется для чистоты)
- Подготовьте окружение: отдельная VM/контейнер с Linux; используйте старую JDK (в некоторых ветках требуется Java 6/7).
- Инициализируйте репо с нужным манифестом/тегом:
- repo init -u
-b android-1.0 - repo sync
- repo init -u
- Сборка:
- source build/envsetup.sh
- lunch aosp_arm-eng
- make -j$(nproc)
После успешной сборки system.img окажется в out/target/product/
/.
- Запуск: старые system.img чаще запускаются старым бинарником эмулятора или напрямую через QEMU. Лучше взять архив старого эмулятора и использовать его вместе с сгенерированными образами.
Вариант B — использовать готовый community‑образ
- Скачайте проверенный образ из архива/репозитория сообщества.
- Запустите через старую версию эмулятора или через QEMU; при ошибках пробуйте разные комбинации kernel/system.img/ramdisk.
Вариант C — эмуляция на x86 (если приемлемо)
- Поискать реконструкции на базе x86; функционал UI будет доступен, но это уже не «оригинальный» ARM‑стек.
Не запускайте непроверенные образы на основной машине. Используйте изолированную VM/контейнер, особенно для образов из community‑источников.
Частые ошибки
- Repo sync падает из‑за недоступных веток/манIFESTов — используйте зеркала или архивы.
- Несоответствие версии Java/компилятора — создайте VM с более старой ОС/Java.
- Современный эмулятор не стартует с древним system.img — ищите архивы старых emulator binaries.
- Сетевые тесты ломаются из‑за старых TLS/CA — придётся проксировать трафик или подменять корневые сертификаты.
FAQ
- Нужно ли мне собирать из AOSP? Если важна чистота и законность — да. Для быстрых демонстраций хватит community‑образа.
- Можно ли запустить эти версии в Android Studio? Нет: SDK Manager не хранит такие платформы; потребуется старый эмулятор/ручной запуск.
- Как проверить безопасность образа? Используйте хэши/подписи, запускайте в изоляции и анализируйте сетевые вызовы через прокси.
Резюме: Android 1.0/1.1 — исторические релизы, для тестов лучше подготовить отдельную VM и либо собрать из исходников AOSP (максимальная корректность), либо использовать проверённые community‑образы (быстрее). Скажите, какой вариант вам удобнее — я подготовлю точный список зеркал/архивов или детализированный скрипт для сборки под вашу ОС.