我的第一个猜测是
*.so
(unix) 或 *.dll
(win) 是一个共享库。至少这是我用 C 编写代码的用法。
现在上下文正在为Android开发,是用Java->Dalvik风格完成的。
我对“
shared library
”这个词感到不明确。在 java 中, *.jar
文件或 *.dex
文件似乎包含共享代码和库代码。
有没有参考资料可以告诉我
shared library
是什么意思?
一个非常具体的问题是 Android 开发者
aapt
打包东西有选项 --shared-lib
--共享库 制作一个共享库资源包,应用程序可以在运行时加载该资源包来访问库资源。暗示 --非常量 ID。
我现在不知道共享库是什么意思。我知道有这个
JNI
界面,一些 Android NDK
东西可能也有 *.so
文件,这可能意味着,但我真的不确定。
在使用 Java 编写代码的 Android 开发人员中,他编写的类被编译为 Java 字节码(与构建过程中自动创建的其他类一起捆绑在 jar 中)。创建后,该字节码将转换为 Dalvik 字节码 (.dex),该字节码包含在应用程序包 (apk) 中。
除了 Java 代码之外,还可以使用用 C 代码编写的“本机库”对应用程序进行编程,并使用针对设备特定架构的 android-ndk 进行编译,生成 .so 文件(动态链接)或 .a 库(静态链接) 。通常这样做是为了解决性能问题或重用用 C 编写的库并避免将它们移植到 Java。正如您在问题中所说,此绑定是通过 JNI 库完成的。
这些库必须包含在应用程序包 (apk) 中,并由应用程序在运行时使用 System.loadLibrary() 加载。