Ошибка доступа к Android API при запуске Java-программы непосредственно из архива dex на Android
Можно запустить простую старую Java-программу на Android напрямую без 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-интерфейсы действительно доступны при запуске программы таким способом?