注意你的lib库的deployment target!

简介:    大家都知道一个应用的deploymenttarget是决定了应用所能工作的设备系统的最低版本,所以我们在设置该target的时候都设置成了项目所支持的系统最低版本(为了最大程度的兼容),如果设置的高了,在低版本的设备上是无法正常安装的,所以对于应用的deployment target的设置我们大家一般都不会犯错误。

   大家都知道一个应用的deploymenttarget是决定了应用所能工作的设备系统的最低版本,所以我们在设置该target的时候都设置成了项目所支持的系统最低版本(为了最大程度的兼容),如果设置的高了,在低版本的设备上是无法正常安装的,所以对于应用的deployment target的设置我们大家一般都不会犯错误。但是对于应用依赖于lib库时情况又有所不同:无论我们lib库所设置的deployment target是多少,这个lib都可以正常的被加载,工程也会顺利的通过编译,并且安装到设备上(决定能否安装到设备上的唯一因素就是应用的deployment target,而跟其依赖的lib库的deployment target 无关)。在这种情况下,很可能导致我们忽略一些问题,我举个例子:

应用a, 设置deployment target 4.3, 依赖库b,b的deploymenttarget 7.0;我们把a打到一部ios7的设备上运行不会有任何问题;在ios5的设备上运行则会崩溃;我们连接真机调试的时候很可能看到以下的日志:lazy symbol binding failed: Symbol not found:_objc_setProperty_nonatomic.

我们可能会觉得奇怪,这个方法不是我调用的呀?没错,你没有调用这个方法,是系统自己调用了这个方法,而且这个方法是6.0才开始有的,系统更改了属性的底层实现,而在你的设备的系统上不支持该方法,所以就会报这个错误。

 

结论:我们所依赖的lib库的deployment target不应该高于应用的deployment target,否则很可能报错,而且这个错误不一定是你直接调用的方法,很可能是系统底层代码。

 

操作建议:在没有技术要求的情况下(如lib库依赖于某个版本的新功能),不要采用默认的deployment target,而是尽可能的把lib库的deployment target设置低一些,这样能够最大程度的保证兼容低版本的设备,也避免上述的奇怪问题的产生。

目录
相关文章
|
2月前
|
开发框架 .NET Windows
【App Service】在App Service中配置Virtual applications and directories,访问目录中的静态文件报错404
【App Service】在App Service中配置Virtual applications and directories,访问目录中的静态文件报错404
|
5月前
|
Perl
pod spec lint编译时报The 'Pods-App' target has transitive dependencies that include static binaries错误问题
pod spec lint编译时报The 'Pods-App' target has transitive dependencies that include static binaries错误问题
43 1
|
5月前
target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target S
target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target S
87 0
|
应用服务中间件 nginx 数据安全/隐私保护
安装Nginx报错:make: *** 没有规则可以创建“default”需要的目标“build”。 停止。
安装Nginx报错:make: *** 没有规则可以创建“default”需要的目标“build”。 停止。
420 0
|
Ubuntu 计算机视觉 Python
已解决 ImportError:/opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so:undefined symbol:PyCobject Type。
已解决 ImportError:/opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so:undefined symbol:PyCobject Type。
285 0
已解决 ImportError:/opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so:undefined symbol:PyCobject Type。
|
Python
解决loaded more than 1 DLL from .libs和No metadata found in lib\site-packages两个错误
解决loaded more than 1 DLL from .libs和No metadata found in lib\site-packages两个错误
505 0
|
C++
编译JDK11:ERROR: Build failed for target ‘default (exploded-image)‘ in configuration ‘windows-x86_64
编译JDK11:ERROR: Build failed for target ‘default (exploded-image)‘ in configuration ‘windows-x86_64
256 0
|
API iOS开发 容器
App Extensions篇之Share Extension
这里主要是对App Extension的一些介绍以及详细给大家介绍一下Share Extension,后期会添加其他的Extension介绍。
3417 0
|
iOS开发 MacOS
如何解决npm命令报错Missing write access to /usr/local/lib/node_modules
如何解决npm命令报错Missing write access to /usr/local/lib/node_modules
如何解决npm命令报错Missing write access to /usr/local/lib/node_modules
That command depends on command in Target 'XXX': script phase “[CP] Copy Pods Resourc 报错解决方法
That command depends on command in Target 'XXX': script phase “[CP] Copy Pods Resourc 报错解决方法
176 0