在尝试寻找Android Jasper Reporting的答案时,我发现还有另外两个问题需要回答,我被要求作为问题而不是作为答案提出;):
我现在的问题是:“是否有任何编译器可以直接在设备上使用”以及“如何在不生根设备的情况下执行这些编译器。如果有人能给我一个提示,我将不胜感激......
我在这种方法上看了一点时间,发现可以直接在没有根的 Android 设备上创建 APK 的应用程序:
- TerminalIDE - https://play.google.com/store/apps/details?id=com.spartacusrex.spartacuside&hl=de
- JavaIDEdroid - http://code.google.com/p/java-ide-droid/
- 助手 - https://play.google.com/store/apps/details?id=com.aide.ui&hl=en
看起来他们正在使用来自 eclipse 的编译器和一个移植的 dex 转换器。现在我正试图弄清楚如何做同样的事情。
当然:获取源代码并查看它。但是,虽然我在连接服务器并试图解决它时遇到了奇怪的问题,但我还是按照请求在这里提出这个问题。希望既能帮助别人,也能得到自己的答案;)
我从我的 indigo 的插件目录中取出了 org.eclipse.jdt.core_3.7.3.v20120119-1537.jar 并尝试了以下代码:
org.eclipse.jdt.internal.compiler.batch.Main ecjMain = new org.eclipse.jdt.internal.compiler.batch.Main(new PrintWriter(System.out), new PrintWriter(System.err), false/*noSystemExit*/, null, progress);
System.err.println("compiling...");
ecjMain.compile(new String[] {"-classpath", "/system/framework", storage.getAbsolutePath()+"/Test.java"});
ecjMain.compile(new String[] {storage.getAbsolutePath()+"/Test.java"});
System.err.println("compile succeeded!!!");
有时会抛出无法找到 java.lang.Object 的异常,有时它会在以 100% 的使用率加热我的处理器时卡住什么也不做......
此时我无法弄清楚发生了什么以及为什么。由于我还有其他工作要做,所以这部分必须稍等。