Android 运行 Dalvik 字节码类似于 C++ 中的内联汇编

Android run Dalvik bytecode like inline assembly in C++

我很好奇是否可以在 Java 中为 Android 运行 字节码,类似于在 中使用内联汇编的方式。在 C++ 中,我可以 运行 汇编并在程序中使用它的结果。

我不想在 运行 期间但在实际编译 apk 之前注入字节码。

// example of MSVC-syntax inline-asm syntax; not actually doing anything useful.
__asm { 
       mov bl, 2
       sub bl, 0
       div  bl 
       add   ax, 0
 }

无法在 Java 中嵌入内联汇编。 Java,指定了语言,该规范不包括内联汇编。但是,您的 Java 代码最终会编译成 dex 文件。

Android 平台只看到 dex 文件,并不关心它们是如何生成的。可以使用smali等工具手写dex字节码。此外,这种自定义 类 可以自由地与由 Java 或其他语言编译的 类 交互。但是请注意,Java 语言比字节码更严格,并且不能保证非 Java 字节码支持 Java 语言中保证的不变量。