Мне было интересно, можно ли загрузить zip-файл канала на устройство roku с помощью терминала. Кажется, это должно быть возможно, потому что для Eclipse доступен плагин, но моя цель — не использовать Eclipse, если это возможно. Любая помощь будет оценена по достоинству.
Программная загрузка канала Roku без плагина Eclipse
Ответы (3)
Конечно, вы можете использовать терминал, если ваша машина и Roku находятся в одной беспроводной сети.
- Включите режим разработчика на Roku, нажмите: «Домой» 3 раза, «Вверх» 2, «Вправо», «Влево», «Вправо», «Влево», «Вправо». Откроется экран разработчика, где вы сможете увидеть свой IP-адрес и установить пароль.
- В вашем пути ENV (.bash_profile или что-то еще) создайте переменную ROKU_DEV_TARGET и USERPASS. Установите IP-адрес Roku на ROKU_DEV_TARGET и пароль на USERPASS. убедитесь, что вы перезагрузили окно терминала, чтобы эти переменные env были доступны. Проверьте, набрав
ECHO $ROKU_DEV_TARGET
, и вы должны увидеть там свой IP-адрес. - Далее вам понадобится make-файл. Вы можете использовать тот, который предоставлен Roku. Загрузите Roku SDK и ознакомьтесь с examples/source/app.mk. Вы можете видеть, что он использует переменные, которые мы установили выше.
- Скопируйте файл app.mk в свой репозиторий, затем перейдите в этот каталог в терминале. запустите
make install
, и он сможет установиться на ваш roku.
ПРИМЕЧАНИЕ. Возможно, вам придется возиться с путями DISTREL, COMMONREL, SOURCEREL в app.mk в зависимости от настроек вашего репозитория.
Полезный совет: в другом окне терминала введите telnet $ROKU_DEV_TARGET 8085
, чтобы увидеть журнал консоли из roku.
Удачи!
Да, сборка и развертывание на устройстве Roku выполняется быстро и легко, так что даже make-файл кажется переусердствовавшим. Вот скрипт, который я использовал для Mac OSX:
#!/bin/bash
#ROKU_DEV_TARGET=192.168.1.25 # Roku 2XS
ROKU_DEV_TARGET=192.168.1.28 # put YOUR roku IP here
# wake up/interrupt Roku - workaround for fw5.4 crash
curl -sS -d '' http://$ROKU_DEV_TARGET:8060/keypress/Home
curl -sS -d '' http://$ROKU_DEV_TARGET:8060/keypress/Home
# build. zip _must_ change for Roku to accept re-deploy (grr!)
cd -- "$(dirname "$0")"
touch timestamp
zip -FS -9 -r bundle * -x run extras
# deploy
curl -f -sS --user rokudev:nuisance --anyauth -F "mysubmit=Install" -F "[email protected]" -F "passwd=" http://$ROKU_DEV_TARGET/plugin_install \
| python -c 'import sys, re; print "\n".join(re.findall("<font color=\"red\">(.*?)</font>", sys.stdin.read(), re.DOTALL))'
Я бы сохранил его как файл сценария с именем run
(помеченный как исполняемый с помощью chmod +x run
; см. https://stackoverflow.com/a/29710607/226086 для большего, например, «почему бы не .sh», что было моим первоначальным желанием), так что его также можно запустить двойным щелчком из Finder. Или из TextWrangler с помощью cmd-R, как было в моем случае.
PS. я даже не копировал один и тот же файл run
в каждый проект, а связывался с ним, но я забыл, была ли это мягкая или жесткая ссылка, которая работала с более новым TextWrangler.
Возможно, Roku изменил авторизацию и теперь использует Digest Auth. Вам нужно передать различные заголовки авторизации, чтобы он работал успешно. Вам нужно добавить Digest Username
, Realm
, nounce
, uri
, qop
, nc
, cnounce
и response
.
Скрипт для загрузки zip-файла в Roku -
curl -i -H 'Authorization:Digest username="...", realm="...", nonce="...", uri="/plugin_install", qop=auth, nc=, cnonce="", response="..."' --form [email protected] --form "mysubmit=Install" "http://IP/plugin_install"