如何区分静态库和动态库
-
cd到.frame目录之下
cd xxx.framework
-
使用file命令
file xxx
-
输出信息若包含dynamically标识则代表是动态库
xxx: Mach-O universal binary with 2 architectures: [arm_v7:Mach-O dynamically linked shared library arm_v7] [arm64] xxx (for architecture armv7): Mach-O dynamically linked shared library arm_v7 xxx (for architecture arm64): Mach-O 64-bit dynamically linked shared library arm64
动态库导入问题
动态库中导入到工程与静态库不同,需要签名后导入,标准导入方式如下:
General-->Frameworks,Libraries,and Embedded Content
[iOS]Reason: image not found 错误
按标准导入方式导入即可解决。
网上有说在BuildPhases-->Link Binary With Libraries中将xxx.framework选项改为Optional,实测能运行通过,但是xxx.framework的实例创建后为nil,表明并没有将动态库install成功。
[iOS] App installation failed: Could not inspect application package
若导入动态库后出现,App无法安装到真机的情况,此情况可能与xxx.framework中的Info.plist文件有关。
Info.plist与动态库签名有关,若是消失或不匹配会导致App无法安装的问题。
iOS 真机 dyld: Library not loaded: 问题
第一种情况,App bundle identifer 安装描述文件mobileprovision过期
解决办法:重新生成mobileprovision
第二种情况,手机上安装了一个或多个包含此动态库的开发App
解决办法:删除所有开发App后,再次安装