Можно запускать обычную старую java-программу на андроид напрямую без apk. (см. подробные инструкции в комментарии JesusFreke здесь: Как выполнить файл dex в android с помощью команды?)
Он работает как шарм, если в программе используются классы JDK. Но когда я попытался обратиться к простому API-интерфейсу Android, как в приведенном ниже коде:
import android.os.Build;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World, API v" + Build.VERSION.SDK_INT);
}
}
... запуск его после инструкций JesusFreke дает следующую ошибку:
java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String android.os.SystemProperties.native_get(java.lang.String, java.lang.String) (tried Java_android_os_SystemProperties_native_1get and Java_android_os_SystemProperties_native_1get__Ljava_lang_String_2Ljava_lang_String_2)
at android.os.SystemProperties.native_get(Native Method)
at android.os.SystemProperties.get(SystemProperties.java:64)
at android.os.Build.getString(Build.java:693)
at android.os.Build.<clinit>(Build.java:38)
at android.os.Build.access$000(Build.java:31)
at android.os.Build$VERSION.<clinit>(Build.java:152)
at HelloWorld.main(HelloWorld.java:5)
Есть ли способ исправить это? В общем, какие API-интерфейсы действительно доступны при запуске программы таким образом?