【问题标题】:porting javac and dx to android将 javac 和 dx 移植到 android
【发布时间】:2011-12-31 14:47:18
【问题描述】:

您好,我正计划将 javac 编译器和 dx 转换器移植到 android..这将是一项微不足道的任务还是有任何重大障碍?

我的想法是创建一个应用程序,以便人们可以在 android 设备上编译 java 源代码,甚至可以在相同的 android 设备上制作 android 应用程序......

这可能吗?

【问题讨论】:

  • 是的,可以在设备上构建apk,然后安装并运行

标签: android javac porting dx


【解决方案1】:

大多数人不会认为这是微不足道的。

您将javacdx 列为需要移植的内容。这些当然是要求。您需要创建一个javac 的 ARM 端口(以及它可能使用的所有系统库,但这些库不在 Android 上)。您还需要尝试创建一个可以在 Dalvik VM 上运行的 dx 版本,因为它是为 Java VM 编写的。

除此之外,您至少需要移植:

  • aapt 以及它可能使用的所有不在 Android 上的系统库
  • aidl 以及它可能使用的所有不在 Android 上的系统库
  • LLVM 编译器
  • Ant(用 Java 编写,但用于 Java VM,如果不进行修改,很可能无法在 Dalvik VM 上运行)
  • 构建过程使用的整个导入的 Ant 任务集(也是为 Java VM 编写的)
  • 这些 Ant 任务在构建过程中使用的其他 Java SDK 工具(例如,jarsignerkeytool

然后您需要创建一个可以调用 Ant 任务来进行构建的 Android 应用程序,记住 Android shell 相当有限,并且可以想象它自己的障碍会阻碍这个过程。这样的应用程序需要捕获stdoutstderr 并将结果报告给用户(例如,编译错误)。您可能还需要推出自己的微型 IDE,除非现有的文本编辑器足以满足您的需求。

我估计这需要超过 100 个工程师月。因此,如果您的公司为该项目分配了一支规模不错的团队,您可能会在一年左右的时间内完成。

【讨论】:

  • 大声笑,你让 1 人看起来很容易......但无论如何我会试着玩一会儿......谢谢你的详细信息。
  • 移植 dx 工具就像运行 dex 命令一样简单,从 android SDK dex dx.jar 并从命令行或从 java 类调用主类。它已经在 AIDE、Termux IDE、termux 等一些 android 应用程序上完成。我对 javac 使用了相同的过程,它适用于基本的 java.lang* 和 android.* 包。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-11
  • 2012-08-15
  • 2011-08-30
  • 1970-01-01
相关资源
最近更新 更多