DalvikVM и Nokia N9
скромный перевод того что было найдено в интернетах =)
Тут быстрое описание того как запустить на Java приложение «Hello World» в виртуальное машине Dalvik VM на MeeGo Harmattan. Для этого потребуется открытое ядро(Nitdroid Open Mode Kernel), файлы nitdroid и немного терпения.
1. Если вы хотите избежать предупреждения о потере гарантии при каждой загрузке, уберите его (это нужно сделать до того как вы прошьете открытое ядро т.к. в open mode это предупреждение переходит в режим только для чтения и удалить его можно только перепрошивкой устройства, а так же вы на сможете установить код блокировки) – это не обязательный шаг а только косметическое изменение.
2. Прошейте открытое ядро (стоит также почитать раздел «известные ограничения» в посте) – это работает на N950 и N9.
3. Включите аппарат и замените загрузочный (preinit) скрипт который позволяет загрузку Nitdroid (и снова почтите предупреждение)
4. Теперь скачайте архив с Nitdroid (на данный момент последняя альфа 5 но мне больше повезло с альфой 4) и извлеките содержимое в /home/nitdroid – в этом посте очень подробно описан процесс установки, а так же прошивки и замена загрузчика.
5. Перезагрузитесь в Nitdroid (вообще это опционально, но это проверит работоспособность Nitdroid)
6. Перезагрузитесь обратно в Harmattan – все дальнейшие команды следует выполнять с правами суперпользователя (используйте devel-su)
7. Монтируем /dev и/sys в Nitdroid:
mount --bind /dev/ /home/nitdroid/dev/ mount --bind /sys/ /home/nitdroid/sys/
8. Делаем chroot в Nitdroid:
/usr/sbin/chroot /home/nitdroid
9. Настроим некоторые переменные окружения (не все из них необходимы, их можно найти в разделе «setup the global environment» в init.rc – сохраним setupenv.sh в /home/nitdroid/ это сохранит нам немного нажатий)
export PATH=/system/bin:/system/xbin:/usr/sbin:/usr/bin:/sbin:/bin export LD_LIBRARY_PATH=/system/lib export ANDROID_BOOTLOGO=1 export ANDROID_ROOT=/system export ANDROID_ASSETS=/system/app export ANDROID_DATA=/data export EXTERNAL_STORAGE=/mnt/sdcard export ASEC_MOUNTPOINT=/mnt/asec export LOOP_MOUNTPOINT=/mnt/obb export BOOTCLASSPATH=/system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/sys
10. Стартуем Dalvik VM:
/ # /system/bin/dalvikvm
Dalvik VM requires a class name
Окей, этой были 10 шагов для старта Dalvik VM, но мы забыли про Hello World. Для этого нам будет нужен Android SDK(и соответствующий Java SDK) и следуйте интсрукции «Basic Dalvik VM Invocation»
11. Создайте в редакторе файл Foo.java со следующим содержимым
public class Foo { public static void main(String [] args) { System.out.println("Hello, world"); } }
12. Теперь компилируем:
Javac Foo.java
13. Используем утилиту “dx” (из Android SDK) для упаковки Foo.class (сгенерированный с помощью javac) в .jar
dx --dex --output=foo.jar Foo.class
14. Посмотрим что у нас получилось:
% less foo.jar Archive: foo.jar Length Method Size Cmpr Date Time CRC-32 Name -------- ------ ------- ---- ---------- ----- -------- ---- 72 Defl:N 70 3% 2012-10-23 15:51 1294a38f META-INF/MANIFEST.MF 732 Defl:N 404 45% 2012-10-23 15:51 b6e3654e classes.dex -------- ------- --- ------- 804 474 41% 2 files
15. Копируем то что получилось на ваш Harmattan девайс
16. Подключаемся по SSH к аппарату заходим как root и копируем .jar файл в директорию Nitdroid:
cp /home/user/MyDocs/foo.jar /home/nitdroid/
17. Делаем chroot в Nitdroid и настраиваем окружение.
18. Наконец запускаем Dalvik VM запускаем класс “Foo” из “foo.jar”:
/ # /system/bin/dalvikvm -cp foo.jar Foo
19. Profit =)