Как вызвать Java-класс, как J2SE JVM делает в Android на рутованном устройстве? - PullRequest
1 голос
/ 04 января 2012

Мы строим платформу Android для встроенного продукта.По сути, вы можете думать об этом как о «укоренившемся окне андроида».

У нас есть код Java, разработанный для стандартной среды J2SE.Я портирую его на Android.Часть кода была помещена в службу Android и запущена в службе.Есть части, которые требуют, чтобы он работал с привилегиями суперпользователя.Как открытие файлов в папке / dev, привязка к портам tcp ниже 1024 и т. Д.

Мне интересно, могу ли я обернуть этот код в общедоступный класс Java в стиле J2SE и вызывать его с помощью dalvik напрямую (т.е.как "dalvik -classpathmycompany.MyWrapper ").
Я ценю любые ссылки, описывающие способ сделать это.

Спасибо

1 Ответ

2 голосов
/ 05 января 2012

Вы можете вызывать dalvik непосредственно из командной строки и выполнять класс стандартным статическим методом main (String [] args).

dalvikvm -cp <jar_file> <class_name>

Для полного примера, скажем, у вас есть следующее определение класса в Hello.java

public class Hello
{
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

А затем, чтобы запустить его на устройстве:

javac Hello.java
dx --dex --output=classes.dex Hello.class
zip Hello.zip classes.dex
adb push Hello.zip /sdcard/
adb shell dalvikvm -cp /sdcard/Hello.zip Hello
...