我试图从包含JNI胶合代码的共享库中提取相关的符号,但nm似乎没有足够的帮助。 方法签名不存在,所以我不知道哪些parameter passing。
有任何想法吗?
bash-3.2# ./arm-linux-androideabi-nm -D ~/Desktop/backup/whiteBox/libamplayerjni.so | grep Java 00030d6c T Java_com_farcore_playerservice_AmPlayer_GL2XScale 00030da8 T Java_com_farcore_playerservice_AmPlayer_close 00030d74 T Java_com_farcore_playerservice_AmPlayer_disable2X2XYScale ...
obdump也不是很有帮助
bash-3.2# ./arm-linux-androideabi-objdump -TC ~/Desktop/backup/whiteBox/libamplayerjni.so | grep Java 00030c00 g DF .text 00000008 Java_com_farcore_playerservice_AmPlayer_getDivxInfo 00030c08 g DF .text 00000008 Java_com_farcore_playerservice_AmPlayer_setIVolume 00030c10 g DF .text 00000008 Java_com_farcore_playerservice_AmPlayer_mute 00030c18 g DF .text 00000008 Java_com_farcore_playerservice_AmPlayer_unmute 00030c20 g DF .text 00000008 Java_com_farcore_playerservice_AmPlayer_setVideoBlackOut
使用Hyperv的Windows 8上使用Android x86 HAXM加速模拟器的更好方法
Adb在一段时间后停止检测我的手机
Android构build失败
Windows 7虚拟机上的Android Studio虚拟设备不兼容
编译安卓工具的Windows
如何使用包含®的目录名称使用adb pull
在我的MonoDevelop项目中,可能会导致“OutputPath属性未设置ProjectName.csproj”错误
Android:如何设置默认的root shell的bash?
由于JNI使用C调用约定(cdecl),函数签名中没有参数信息。 您需要分析相应的java(dalvik)代码来查找参数类型。
这是我的jni库:
00001408 g DF .text 0000000a Java_info_kghost_android_openvpn_FileDescriptorHolder_close 00001a14 g DF .text 00000198 Java_info_kghost_android_openvpn_ManagementSocket_read__ILjava_nio_ByteBuffer_2II 00001414 g DF .text 0000000c Java_info_kghost_android_openvpn_ManagementSocket_shutdown 000017c4 g DF .text 00000250 Java_info_kghost_android_openvpn_ManagementSocket_read__ILjava_nio_ByteBuffer_2IILinfo_kghost_android_openvpn_FileDescriptorHolder_2 0000142c g DF .text 00000200 Java_info_kghost_android_openvpn_ManagementSocket_write__ILjava_nio_ByteBuffer_2IILinfo_kghost_android_openvpn_FileDescriptorHolder_2 00001420 g DF .text 0000000a Java_info_kghost_android_openvpn_ManagementSocket_close 0000162c g DF .text 00000198 Java_info_kghost_android_openvpn_ManagementSocket_write__ILjava_nio_ByteBuffer_2II 00001bd4 g DF .text 000000d4 Java_info_kghost_android_openvpn_ManagementSocket_open
如果没有重载方法,则签名不会包含参数信息; 如果方法被重载,那么签名将包含函数名称中的参数信息。
在使用本地方法之前,您需要明确加载jni库:
System.loadLibrary("your-library-name");
确保你的库被放置在Android的LD_LIBRARY_PATH , /lib目录中,检查mmap( /proc/pid/maps )是否加载成功。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。