android - 是否可以获取共享对象的版本?

标签 android c++ linux adb

我正试图追踪我的软件产品线中的错误。我有两个发布版本 2.0.962 和 2.0.966。这些版本之间的唯一区别是 lib.so 文件。为了弄清楚从哪里开始查找 lib.so 的源代码树,我需要知道它在每个发布版本中的版本号。

是否有打印共享对象版本的命令行工具?

最佳答案

我从未进行过原生 android 编程,但由于 Android 使用 Linux 内核,因此使用的可执行文件格式很可能是“ELF”。对于ELF而言,文件中并没有存储Shared object的版本信息。因此,除非文件名本身是类似 "libXXX.VERSION.so" 的内容,否则没有其他方法可以找出共享对象的版本号。这种技术通常在 Linux 中使用。

我对解决您的问题的建议是:

  1. 尽可能使用修改日期来区分共享对象
  2. 使用 dlopen() 或类似工具打开共享对象并尝试查看正在导出的函数。

来源:http://man7.org/linux/man-pages/man5/elf.5.html 注意:可执行文件中的E_VERSION是ELF格式的版本,不是可执行文件的版本。

关于android - 是否可以获取共享对象的版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31463787/

相关文章:

C Linux (Ubuntu) - msgsnd() 和 msgrcv() errno 22 (EINVAL)

android - 从 ArrayList 中获取字符串并保存在共享首选项中

android - ORMLite id 生成

java - JNI 返回 Signal 7 函数试图从 C++ 调用 Java

c++ - 用 extern 声明全局变量

linux - 有没有办法仅通过命令行将本地计算机上的文件复制到远程 Linux?

c++ - "Cannot execute binary file"在 Ubuntu for Windows 平台上使用 Eclipse 运行已编译的 c++ 程序时

java - 如何在firebase数据库中搜索

android - 所有 Android 资源文件夹的完整列表?

c++ - 抽奖分类程序上的 EXC_BAD_ACCESS