android 中不同的罐子有什么意义?

What would be the point with different jars in android?

我知道x86和armeabi-v7a原生库的区别。

但是,我在 x86 和 armeabi-v7a 文件夹中发现了一个包含不同 jar 库的应用程序。据我所知,Java 程序是跨平台的或独立于平台的。 那么不同的罐子有什么意义呢?

该库可能使用 Renderscript 或以某种方式与 Android NDK 交互。一旦您离开 Java 世界并深入研究 C/C++ 世界,突然您的代码 可以 在使用预编译代码时变得依赖于平台。

使用 NDK 时,您必须在构建时为不同的体系结构编译代码的单独版本,Android 将根据系统的体系结构选择正确的版本。因此每个 jar 文件很可能包含预编译代码,如提到的 CommonsWare。

编辑

一些预编译代码示例:

  • Database library - 此人用 C++ 编写了一个数据库库,因为它比使用 Java.
  • 更快
  • Digital Image Processing - 可以对位图执行操作的专用代码,在 C 中的执行速度比 Java.

所有这些预编译的代码片段都针对不同的体系结构编译成二进制文件,这样它们就可以 运行 而无需先进行解释。它们通常从 C/C++ 代码访问,这些代码尚未预编译但位于包含预编译代码的应用程序中的某个位置。它允许关键功能独立存在于这些二进制文件中。