Почему и как тестировать 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.

Где взять образы и исходники (практически)

Варианты по приоритету:

  1. Собрать из AOSP — самый чистый, но требует старой toolchain/среды.
  2. Использовать community‑архивы/восстановленные билды — быстрее, но проверяйте происхождение.
  3. Искать в архивных SDK/Internet Archive — иногда встречаются старые пакеты эмулятора.
  4. Попробовать android‑x86 — если вас устраивает «похожая» UI‑симуляция на x86.

Что искать: теги/ветки вида android-1.0 / release-1.0 в зеркалах AOSP или реконструированные сборки в архивах сообщества.

Как получить и запустить образ — краткая пошаговая инструкция

Вариант A — собрать из AOSP (рекомендуется для чистоты)

  1. Подготовьте окружение: отдельная VM/контейнер с Linux; используйте старую JDK (в некоторых ветках требуется Java 6/7).
  2. Инициализируйте репо с нужным манифестом/тегом:
    • repo init -u -b android-1.0
    • repo sync
  3. Сборка:
    • source build/envsetup.sh
    • lunch aosp_arm-eng
    • make -j$(nproc) После успешной сборки system.img окажется в out/target/product//.
  4. Запуск: старые system.img чаще запускаются старым бинарником эмулятора или напрямую через QEMU. Лучше взять архив старого эмулятора и использовать его вместе с сгенерированными образами.

Вариант B — использовать готовый community‑образ

  1. Скачайте проверенный образ из архива/репозитория сообщества.
  2. Запустите через старую версию эмулятора или через 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‑образы (быстрее). Скажите, какой вариант вам удобнее — я подготовлю точный список зеркал/архивов или детализированный скрипт для сборки под вашу ОС.