ios应用加载第三方动态库dylib时崩溃及解决办法
2015-03-19 12:41
381 查看
最近在开发一个App需要以root权限运行,其中用到一个第三方合作开发的动态库。用theos创建工程,编译,打包,安装都没有问题,但是在手机上点击运行的时候崩溃,崩溃日志如下:
出错的库:
正常的库:
附:如果不赋予这个App系统用户的权限,则不需要做上述修改就能正常运行,不知道这是为什么?还得进一步挖掘...
参考链接:http://qin.laya.com/tech_coding_help/dylib_linking.html
http://bbs.csdn.net/topics/350155746
{"bundleID":"com.yourcompany.packetcapturedemo001","app_name":"PacketCaptureDemo001","share_with_app_devs":false,"name":"PacketCaptureDemo001","app_version":"","is_first_party":true,"os_version":"iPhone OS 8.1.2 (12B440)","bug_type":"109","slice_uuid":"15567a86-44d4-32ec-b89e-e5c173a3b876","build_version":"1.0","adam_id":0} Incident Identifier: 6FC414F6-191C-4A20-ACA5-689298F9E918 CrashReporter Key: dcaf417a1be906ffdddba183c4131cf8a35d8c64 Hardware Model: iPhone5,2 Process: PacketCaptureDemo001 [1039] Path: /private/var/db/stash/_.pDSZup/Applications/PacketCaptureDemo001.app/PacketCaptureDemo001 Identifier: com.yourcompany.packetcapturedemo001 Version: 1.0 Code Type: ARM (Native) Parent Process: launchd [1] Date/Time: 2015-03-17 16:41:51.594 +0800 Launch Time: 2015-03-17 16:41:51.237 +0800 OS Version: iOS 8.1.2 (12B440) Report Version: 105 Exception Type: EXC_BREAKPOINT (SIGTRAP) Exception Codes: 0x0000000000000001, 0x00000000e7ffdefe Triggered by Thread: 0 Dyld Error Message: Library not loaded: libmt.dylib Referenced from: /private/var/db/stash/_.pDSZup/Applications/PacketCaptureDemo001.app/PacketCaptureDemo001 Reason: unsafe use of relative rpath libmt.dylib in /private/var/db/stash/_.pDSZup/Applications/PacketCaptureDemo001.app/PacketCaptureDemo001 with restricted binary Dyld Version: 353.6 Binary Images: 0x1fe67000 - 0x1fe8afff dyld armv7s <8ffd813a380c333bbd4a25e1dbe05715> /usr/lib/dyld 0x248e0000 - 0x24c0dfff CoreFoundation armv7s <5b54383b963a36369b45eaa35c3940be> /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation 0x24c0e000 - 0x24d38fff CoreGraphics armv7s <7f8833bf31b33242b32bb893c5832f42> /System/Library/Frameworks/CoreGraphics.framework/CoreGraphics 0x25626000 - 0x25828fff Foundation armv7s <6763b485b3b530f5ae7a6b8732110736> /System/Library/Frameworks/Foundation.framework/Foundation 0x27e9a000 - 0x2873cfff UIKit armv7s <94d79df43f8a3b519b7fbf2ca102b4ea> /System/Library/Frameworks/UIKit.framework/UIKit 0x32196000 - 0x32390fff libobjc.A.dylib armv7s <2f24d570e8253da29e77c4104a66ffff> /usr/lib/libobjc.A.dylib用otool -L DYLIB_NAME命令对比这个动态库和其他库,如下:
出错的库:
libmt.dylib: libmt.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1214.5.1) ... ...
正常的库:
libtest.dylib: /usr/lib/libtest.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1214.5.1) ... ...可见是库文件查找路径的问题,google查阅一番后,可通过install_name_tool命令修改库的查找路径,具体做法如下:
install_name_tool -id /usr/lib/libmt.dylib libmt.dylib再用otool -L libmt.dylib查看文件信息,如下:
libmt.dylib: /usr/lib/libmt.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1214.5.1) ... ...用此修改过的库文件替换原来的库文件,重新编译打包安装后,就可以直接运行了。
附:如果不赋予这个App系统用户的权限,则不需要做上述修改就能正常运行,不知道这是为什么?还得进一步挖掘...
参考链接:http://qin.laya.com/tech_coding_help/dylib_linking.html
http://bbs.csdn.net/topics/350155746
相关文章推荐
- LoadLibrary加载动态库失败的解决办法
- [iOS]xcode5中64位iphone5s引用第三方库报错的解决办法
- android加载动态链接库出现崩溃的现象的解决办法
- iGrimace iOS应用闪退或图标消失的解决办法
- 手动加载应用上下文无法自动终结的解决办法
- 苹果不允许 iOS 应用内置购买(IAP)使用第三方支付方式,那么跨平台的支付怎么解决这个问题?
- iOS程序崩溃原因以及解决办法(持续更新)
- iOS平台 加载webView出现 code = -999 错误分析和解决办法
- 【iOS知识学习】_tableview滑动时图片加载缓慢解决办法
- ios中UIImagepickcontroller在只支持横屏或者竖屏情况下崩溃解决办法
- [iOS]xcode5中64位iphone5s引用第三方库报错的解决办法
- iOS第三方平台不支持64位的解决办法
- 在rubymine中启动应用。产生 Library not loaded: libmysqlclient.18.dylib (LoadError) 错误的解决办法
- iOS 使用动态库(dylib)和动态加载framework
- 在rubymine中启动应用。产生 Library not loaded: libmysqlclient.18.dylib (LoadError) 错误的解决办法
- [iOS]xcode5中64位iphone5s引用第三方库报错的解决办法
- iOS第三方平台不支持64位的解决办法
- 关于ios 程序加载百度地图lib,出现链接错误:找不到符号 (null): _OBJC_CLASS_$_BMKMapManager的解决办法
- iGrimace iOS应用闪退或图标消失的解决办法
- 使用xcodebuild命令行编译iOS应用遇到的一个错误及解决办法