App Inventor родился как академический эксперимент MIT и превратился в устойчивый конструктор мобильной логики. Я применяю его для экспресс-прототипирования, когда нативный код Kotlin избыточен, а сроки поджимают. В образовательных проектах этот подход хорошо дополняет разработка Android приложения для учебного процесса. При выборе направления для учебного прототипа полезно учитывать различия экосистем, которые раскрывает сравнение Android vs iOS.

Инфраструктура запуска
Платформа живёт в браузере. Достаточно открыть ai2.appinventor.mit.edu, авторизоваться через Google-аккаунт и подключить телефон по Wi-Fi или через ADB. Для полноты опыта устанавливаю Companion APK: он отображает интерфейс в реальном времени, обновляя UI каждого изменения без перекомпиляции.
Слева панель компонентов: кнопки, поля ввода, датчики, веб-запросы. Я перетаскиваю компонент, настраиваю свойства справа, определяю мерки в dp. Для точной верстки применяю контейнер TableArrangement, а для плотных рядов — горизонтальный LinearArrangement.
Блоки и события
Сцену кодирования заменяет цветной редактор Blockly. Каждый блок — пластиковая деталь, снабжённая пазами, ограничивающими типы данных. Ошибку статической природы почти исключает ортогональность конструкции: несовместимые типы физически не стыкуются. Событие Button1.Click запускает сериализацию модели в JSON, служебный блок cal Web 1.Post Text отправляет полезную нагрузку серверу.
Для взаимодействия между активностями подключаю блок ActivityStarter. Он принимает строку intent и flags, схожие с параметрами android.content.Intent. Нужен прямой вызов камеры? Указываю action android.media.action.IMAGE_CAPTURE и получаю Bitmap в событии After Activity. Грани пользовательского сценария расширяет компонент Extension: через Java или Kotlin пишу jar, загружаю его в IDE, и новая функциональность возникает в палитре.
Отладка и выпуск
Лайфцикл Companion снабжён логом Logcat, доступным в браузере. Фильтрую теги, отслеживаю исключения. Для профилирования времени кадра встраиваю метод SystemClock.elapsedRealtime в блок Clock.Timer. При физическом лаге интерфейса рассматриваю индекс Константы Тьюринга — число блоков, исполняемых за кадр.
Экспорт APK запускается опцией Build → App (save apk). Сервер MIT компилирует dex, подписывает одной-двумя парами ключ/хэш и выдаёт ссылку. Для распределения через Google Play скачиваю keystore, переименовываю его в release.keystore, а затем выполняю jarsigner. Ограничения: единственный процесс, отсутствие глубокого доступа к NDK, вес рантайма около 7 МБ. Зато время до MVP измеряется часами, а не спринтами.
App Inventor занимает нишу учебного прототипирования и закатанного разгона. Он не заменит Sublime-Kotlin-Gradle стек при серьёзной задаче, зато экономит когнитивную нагрузку там, где главенствует идея, а не синтаксис. Я часто сравниваю блоки с лего-пластинками: дизайн-мышление торжествует, суровая герменевтика платформы скрыта за ярким графическим фасадом.