MeteorJS. Создаем Android приложение

Некоторое время воюю с функционалом для сбора полноценного мобильного приложения.
Я конечно повторю уже существующие мануалы наверное, но кое что и от себя добавлю.

У меня была чистая свежеустановленная Ubuntu 14.

Установим Яву 
  1. INSTALL JDK
    Open Applicaction -> Accessories -> Terminal

  2. Type commandline as below…
    sudo apt-get install openjdk-7-jdk

  3. Type commandline as below…
    apt-cache search jdk
    (Note: openjdk-6-jdk is symbolically used here. You can choose the JDK version as per your requirement.)

  4. For “JAVA_HOME” (Environment Variable) type command as shown below, in “Terminal” using your installation path…
    export JAVA_HOME=/usr/lib/jvm/java-7-openjdk
    (Note: “/usr/lib/jvm/java-6-openjdk” is symbolically used here just for demostration. You should use your path as per your installation.)

  5. For “PATH” (Environment Variable) type command as shown below, in “Terminal” using your installation path…
    export PATH=$PATH:/usr/lib/jvm/java-7-openjdk/bin
    (Note: “/usr/lib/jvm/java-6-openjdk” is symbolically used here just for demostration. You should use your path as per your installation.)

  6. Check for “open jdk” installation, just type command in “Terminal” as shown below
    javac

  7. additionally For Ubuntu x64 → sudo apt-get install lib32z1 lib32stdc++6

    Создаем проект и заходим в папку проекта

  8. meteor create BlaBlaBla

  9. cd BlaBlaBla

    Устанавливаем среду разработки с эмулятором и добавляем платформу в проект

  10. meteor install-sdk android (wait a moment till the package will be downloaded)

  11. meteor add-platform android

    Пробуем запускать в эмуляторе

  12. meteor run android

    Что интересное пригодилось уже

  13. Настройки приложения, наследуемые от PhoneGap можно установить путем использования файла mobile-config.js и директивы App.setPreference. Я использовал ее для фиксации своего приложения в режиме Landscape
    App.setPreference(‘Orientation’, ‘landscape’);
    Ссілка на док -> http://docs.meteor.com/#/full/App-info

  14. С билдом .apk приложения пока не успешно, танцы с бубном продолжаются.

До конечной точки пока не добрался, остановился на разработке для эмулятора, пока в интернете не появится побольше мануалов. Если кто то сбилдит удачно и запустит на Девайсе, напишите плиз.

Что не выходит? Я чуть мобильные приложения побилживаю на кордове.

Я попробую сбилдить снова уже без виртуальной машины и напишу поподробнее.

Сейчас заметил интересную штуку.

После перезагрузки компьютера, хром успешно продолжает отображать контент страницы на localhost:3000

Сервер не запущен.

А в консольке сообщение
Document was loaded from Application Cache with manifest http://localhost:3000/app.manifest (index):1
Application Cache Checking event

Это плагин метеора appcache. Кстати, не нашел его в новой документации метеора. Это с ним у меня были проблемы с путями.

Я хочу сбилдить apk файл, который я могу установить/запустить на своем телефоне и протестить.

Я делаю деплой meteor deploy blabla.meteor.com
Я делаю билд meteor build /build --server http://blabla.meteor.com:80 (пробовал сервер просто blabla.meteor.com)
Я запускаю преобразование unaligned.apk в production.apk
~/.meteor/android_bundle/android-sdk/build-tools/20.0.0/zipalign 4 /build/android/unaligned.apk production.apk

Далее, заливаю production.apk на телефон, и при попітке установить вижу “приложение не установлено”
На телефоне разрешена установка любых “непонытных” приложений.

Возможно я не до конца понимаю, действительно ли этот apk и есть мое приложение.

Из нового - при попытке запуска на подключенном мобильном девайсе путем команды

meteor run android-device

получаю в результате ошибку :

ERROR: Failed to launch application on device: ERROR: Failed to install apk to device: 	pkg: /data/local/tmp/Bog-debug-unaligned.apk
Failure [INSTALL_FAILED_INVALID_APK]

Could not start the app on your device. Is it plugged in?
Try running again with the --verbose option.

Возможно что конфиг приложения неправильный, хотя странно что в эмуляторе работает.
Нагуглить ответ пока не получилось, много чего перепробовал, продолжаю мучать.

А в настройках девайса есть что-то вроде “разрешить дебаг по ЮСБи шнурку”? Может комп не имеет прав?

Версии SDK на компе (например SDK4 включает в себя 2,3,4) подходит под версию андроида на телефоне?

Ну меня больше интересует копирование и запуск apk на устростве.

Да, в dev тулзах на телефоне Дебаг по USB включен.
Там с этим дебагом через шнут ваще в интернете много историй курьезных. В плоть до того, что “usb кабель короткий” или “переключил в другой usb порт и все ок”.

Для билда использовал и build-tools/20.0.0 и build-tools/21.0.0
Не знаю где проверить в Метеоре “SDK4”.
Платформа в папке метеора .meteor/android_bundle/android-sdk/platforms/android-19

Хорошие новости.
Все же я добился своего и удачно запустил приложение на своем телефоне.

решение было найдено среди множества постов на ГуглФоруме Метеора
https://groups.google.com/forum/#!forum/meteor-talk

Билдим приложение, указываем локальный адрес (у меня был 192.168.0.35)

$ meteor build ../build --server <your-ip-address>:3000 --debug

Подключаем телефон к компу и заливаем unaligned.apk на телефон.

$ # copy ../build/android/unaligned.apk to device

Запускаем сервер на компе, с указанием айпи компа (у меня был 192.168.0.35).

 $ meteor run --mobile-server <your-ip-address>:3000

После этого уже начинаем установку unaligned.apk на мобильном.
Ушпешная установка, успешный запуск.

Всем хоршего дня :smile:

1 лайк

А какой смысл использовать JS для создания Android приложений? Будет проседать перфоманс в разы по сравнению с нативными приложениями. И еще, если понадобится использовать С/C++ код в приложении(использование FFMpeg или OpenCV) то как быть с метеором ?

Иметь единую кодовую базу для андроид, айос, и (или) мобильного сайта. Производительность действительно страдает, зато снижаются издержки на разработку, при этом охватывается больший рынок.