我有一个我想在Android智能手机上使用的C库
我已经初步成功使用SWIG包装库API,以便我可以从Java调用本机C函数(SWIG为我自动生成所有C和Java JNI代码)。
所以我可以在x86笔记本电脑上编写Java应用程序,并让它调用本机共享库。
我的下一步是使用Android NDK为我的目标智能手机平台(可能是ARM)制作本机共享库
最终,我将开发一个Android GUI来与库进行交互。
但作为一项临时措施,是否有可能以某种方式从智能手机上的终端运行Java应用程序?
这将允许我使用我在智能手机上的笔记本电脑上使用的相同Java“线束”应用程序来查看它是否在下一步编写Android GUI之前是否有效。
更新
我忘记了虽然android使用java语言它不使用java字节码 - 它的dalvik捆绑在.apk中,所以我想到能够打开终端并运行java工具,例如。
$ java harness
没有任何意义
我确实发现谷歌应用程序商店中有一个Android终端模拟器(Jack Palevich),但不确定如何将其发送到avd emualtor(我目前没有智能手机)
答案 0 :(得分:1)
我认为你可以测试android.os.Exec.createSubprocess()api。 演示代码:
Class<?> execClass = Class.forName("android.os.Exec");
Method createSubprocess = execClass.getMethod("createSubprocess", String.class, String.class, String.class, int[].class);
int[] pid = new int[1];
FileDescriptor fd = (FileDescriptor)createSubprocess.invoke(null, "/system/bin/yourexecfile", "/", null, pid);
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fd)));
String output = "";
try {
String line;
while ((line = reader.readLine()) != null) {
output += line + "\n";
}
}
catch (IOException e) {}
可以使用路径“/ system / bin”。但我不确定其他路径,但你可以测试。 祝好运! ^ - ^