DroidScript

Мост между App Inventor и Java

DroidScript
инструменты разработки под Android

Мост между App Inventor и Java

Специалисты из университета Сан-Франциско разработали сборку App Inventor, которая позволяет генерировать Java-код, эквивалентный созданным проектам.

Скажу сразу, данная возможность реализована в образовательных целях для демонстрации перехода от визуального программирования с использованием блоков к текстовому. Шаблон проектирования MVC здесь не используется, что упрощает знакомcтво с Java под Android, но текущая версия моста не гарантирует однозначного соответствия между блоками и кодом, а также корректную работу в целом ряде случаев, что приводит к сложностям. После экспорта экрана или проекта код для некоторых блоков или алгоритмов может быть обрезан или вообще отсутствовать. Однако, несмотря на эти недостатки, редактирование кода позволяет проще и быстрее решать задачи по сравнению с работой в редакторе блоков, что, собственно, и можно демонстрировать при помощи данного генератора Java-кода.

Заходим на сайт appinventor.org и переходим в раздел Learn|Java Bridge. Внизу страницы находится кнопка Start learning now, после нажатия на которую откроется страница с информацией по использованию генератора кода в Eclipse, Android Studio и др. При желании можно ознакомиться с ней и пошаговым примером, а мы сразу перейдём к варианту работы с Android Studio. Для исключения путаницы вначале проведём всю подготовительную работу:

  1. Скачайте файл библиотеки AppInventor-JavaLibrary.jar, ссылку на которую можно найти в аннотации на странице Learn|Java Bridge.
  2. Откройте страницу App Inventor Java Bridge (появится запрос на вход в аккаунт, как при использовании App Inventor 2). Отобразится знакомая IDE с названием App Inventor Java Bridge.
  3. Создайте новый проект, добавьте в него кнопку, а также действие при нажатии на неё.
  4. Запустите проект для проверки его работоспособности.
  5. Выберите пункт меню Build|Java Bridge и в появившемся диалоге кнопку JAVA FILE (сохранение в файле кода открытого экрана (по умолчанию его имя будет Screen1.java).

Итак, у нас есть библиотечный файл AppInventor-JavaLibrary.jar и файл исходного кода Screen1.java, которые нужно подключить к проекту в Android Studio:

  1. Откройте Android Studio и создайте в нём проект с пустой активностью (шаблон Blank Activity). Все опции можно оставить по умолчанию.
  2. Запустите на выполнение этот проект, чтобы убедиться в его работоспособности и отображения приветствия.
  3. Скопируйте полученный файл библиотеки AppInventor-JavaLibrary.jar в папку lib проекта и подключите его к проекту (щелкнуть правой кнопкой по данному файлу и выбрать пункт "Add as Library" в контекстном меню).
  4. Скопируйте файл Screen1.java в папку проекта, в которой находится файл MainActivity.java и подключите его в файле манифеста, заменив строку
    <activity android:name=".MainActivity">
    
    на
    
    <activity android:name=".Screen1">
  5. В файле Screen1.java укажите правильный путь к пакету (строка "package ..."). Его можно скопировать из файла MainActivity.java, если Screen1.java находится в той же папке.
  6. Запустите проект на выполнение. В случае успеха на устройстве отобразится экран проекта, идентичный тому, который был получен ранее при запуске его в App Inventor Java Bridge.

Как видно, результатом работы генератора кода в нашем случае является файл исходного кода, в котором интерфейс создаётся динамически. Это можно реализовать и на Java. Для чего тогда тратить время для изучения AI Java Bridge? Во-первых, AI Java Bridge позволяет продолжить разработку уже созданных ранее AI приложений, без их переписывания заново на Java. Во-вторых, он предоставляет разработчику более простой интерфейс для работы с объектами. Если разработчика устраивает App Inventor, то, наверно, и кодировать он бы предпочёл с использованием уже понятного ему API App Inventor, а не API Android.

AI Java Bridge следует рассматривать в качестве дополнительного сервиса, при помощи которого можно сделать разработку AI приложений более эффективной.

Оглавление  
© 2016 droidscript.ru admin@droidscript.ru