You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看通过System.loadLibrary加载的.so库的可用方法与类?

查看Android .so库导出方法/类的实用方式
  • 用nm命令(Linux/macOS环境)
    直接在终端运行nm -D 你的库文件名.so,输出里的符号中,T开头的是导出的全局函数,这通常就是你能通过JNI调用的方法。如果是C++编写的库,符号会被名字修饰(比如变成_Zxxxx这种形式),可以用c++filt工具解析:nm -D 你的库文件名.so | c++filt,就能看到还原后的函数名和类方法。

  • 用Android NDK的readelf工具
    如果你装了NDK,找到readelf工具路径(一般在NDK的toolchains/llvm/prebuilt/对应平台/bin下),运行readelf -s 你的库文件名.so,输出的符号表会包含更详细的信息,比如符号类型、大小、所属段,同样关注标记为FUNC且绑定为GLOBAL的条目,这些就是可调用的导出函数。

  • 反编译工具(IDA Pro/Ghidra)
    这类可视化反编译工具能直接打开.so文件,自动解析符号表、类结构和函数逻辑。你可以看到完整的导出函数列表,甚至能查看函数的伪代码,适合分析复杂的库。如果是JNI相关的类方法,还能定位到对应的JNI注册逻辑。

  • 动态调试(Android Studio + LLDB)
    在App加载.so后,用Android Studio attach到进程,打开LLDB控制台:

    • 输入image list可以查看当前加载的所有库;
    • 输入image lookup -n 函数名可以搜索特定导出符号;
    • 也可以用image dump symtab 你的库文件名.so直接输出该库的所有符号表。

注意:.so里的普通C++类如果没有被导出(未用extern "C"或未声明为全局可见),是无法直接看到的,只有JNI暴露的方法和全局导出的类/函数才会出现在符号表里。

内容的提问来源于stack exchange,提问作者Markusbug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 22:40:24