Android 上的 JiBX(或任何其他构建时字节码操作库)

Posted

技术标签:

【中文标题】Android 上的 JiBX(或任何其他构建时字节码操作库)【英文标题】:JiBX on Android (or any other build-time bytecode manipulating library) 【发布时间】:2010-10-31 19:21:25 【问题描述】:

我正在考虑将JiBX 用于必须在Blackberry 和RIM 上运行的项目。虽然似乎J2ME 使用JiBX 已被社区考虑(根据 JiBX jira 票证),但 android 相对较新。

因此,问题是:是否有人在 Android 上使用 JiBX 或任何其他需要在构建时修改您的类字节码的库取得任何成功(或问题)?

已经有关于如何在 Android 上运行此类库的讨论(与使用运行时字节码检测的库相比),但我没有看到太多关于人们实际尝试这样做的报告。

【问题讨论】:

【参考方案1】:

它不会工作,因为 android 不执行字节码。 Android 的 java 运行时使用基于寄存器的虚拟机 (Dvalik),它执行 .dex 文件而不是类文件。理论上你可以生成这些而不是 java 字节码。

【讨论】:

虽然 Dalvik 确实运行特殊的字节码格式 .dex,但有一个名为 dx 的 google 提供的工具可以将标准 java 字节码转换为 .dex 格式(查看 developer.android.com/guide/developing/tools/…)。因此,从理论上讲,任何进行编译后编译时字节码操作、生成标准兼容 java 字节码的库仍然适用于 android —— dx 工具只是将生成的字节码转换为 .dex。【参考方案2】:

是的,我已经使用 JiBX 在 android 应用程序中构建了一个原型。将 jibx jar 添加为 android 项目库后,它们将自动打包到 dex 中。事实上,JiBX 绑定适用于 Android。我只需要包括 3 个罐子。 Jibx-run.jar、jibx-ws-0.9-bata.jar 和我生成的绑定 jar。然后android应用程序可以进行soap客户端调用,xml到对象的绑定由jibx在内部处理。

【讨论】:

【参考方案3】:

好的,所以我决定只在 XMLPull api 之上编写 xml 解析代码,没有任何花哨的技巧。

如果我的模式变得比现在更复杂(而且我有时间),我很想尝试编写一个基于 ANTLR 的 XML 解析器生成器来为各个模式生成解析器的实际 Java 代码。

目前,afaik,移动端的 java 生成比移动端的字节码生成更安全、更好。

【讨论】:

以上是关于Android 上的 JiBX(或任何其他构建时字节码操作库)的主要内容,如果未能解决你的问题,请参考以下文章

Android / iOS 上的模拟多人游戏技术

Android 预构建 UI 组件列表 [关闭]

如何使用 iText 或 android 上的其他库创建 PDF 文件?

Android - 从图像中裁剪文本(使用 openCV 或其他任何东西)

未解决的参考@HiltAndroidApp 或 Android 中的任何其他 Hilt 注释

使用 Firebase 或任何其他方式在 Android 设备上显示通知