如何检查用于编译.ipa或.app文件的iOS SDK版本

如何检查用于编译.ipa或.app文件的iOS SDK版本,第1张

概述我只有.ipa文件(我没有build env)没有任何访问项目.我试图确定他们是否建立链接SDK 7.有没有办法或实用程序来检查.zip文件的SDK版本? 是.首先将ipa复制到像/ tmp这样安全的位置,然后解压缩: cd /tmp/cp ~/Music/iTunes/Mobile\ Applications/APPNAME.ipa .unzip APPNAME.ipa 然后使用otool查 我只有.ipa文件(我没有build env)没有任何访问项目.我试图确定他们是否建立链接SDK 7.有没有办法或实用程序来检查.zip文件的SDK版本?解决方法 是.首先将ipa复制到像/ tmp这样安全的位置,然后解压缩:
cd /tmp/cp ~/Music/iTunes/Mobile\ Applications/APPname.ipa .unzip APPname.ipa

然后使用otool查看它链接的框架版本:

otool -L Payload/APPname.app/APPname

这将给你如下结果:

Payload/APPname.app/APPname (architecture armv7):    /usr/lib/libxml2.2.dylib (compatibility version 10.0.0,current version 10.8.0)    /System/library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0,current version 992.0.0)    /System/library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0,current version 2372.0.0)    /System/library/Frameworks/CoreGraphics.framework/CoreGraphics (compatibility version 64.0.0,current version 600.0.0)    /System/library/Frameworks/AudioToolBox.framework/AudioToolBox (compatibility version 1.0.0,current version 359.0.0)    /System/library/Frameworks/MediaPlayer.framework/MediaPlayer (compatibility version 1.0.0,current version 1.0.0)    /usr/lib/libsqlite3.dylib (compatibility version 9.0.0,current version 9.6.0)    /System/library/Frameworks/SystemConfiguration.framework/SystemConfiguration (compatibility version 1.0.0,current version 499.0.0)    /System/library/Frameworks/CoreLocation.framework/CoreLocation (compatibility version 1.0.0,current version 1491.2.0)    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0,current version 228.0.0)    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0,current version 173.8.0)    /System/library/Frameworks/CoreFoundation.framework/CoreFoundation (compatibility version 150.0.0,current version 793.0.0)

对于不同的架构,可以重复该信息.

对于每个框架,“当前版本”是与编译应用程序时使用的SDK对应的内部版本号.对于Foundation.framework,您可以在NSObjCRuntime.h中查找这些.它包含一堆命名的常量,可以在iOS(或OS X)版本之间转换和otool给您的版本号.例如:

#define NSFoundationVersionNumber_iOS_5_0  881.00#define NSFoundationVersionNumber_iOS_5_1  890.10#define NSFoundationVersionNumber_iOS_6_0  993.00#define NSFoundationVersionNumber_iOS_6_1  993.00

常数不包括当前的iOS版本.你可以在运行时找到.创建一个新的测试项目并将其添加到某处:

NSLog(@"Foundation version: %f",NSFoundationVersionNumber);

这将打印出当前值.在iOS 7.0.4我得到1047.220000. (这适用于任何版本的iOS和Foundation,但如果可能,查找头文件中的值更容易).

数字并不总是完全匹配,因为iOS的每个次要版本都没有常量.但是两个版本号都随着时间的推移而增加.在这种情况下,上面的“当前版本”是992.0.0,我碰巧知道这个程序是为iOS 5.1.1编译的.根据您看到的当前版本,您可能需要进行类似的插值.为了比较,在几年前我知道的另一个应用程序,基础版本是678.24.0.查看这个确认应用程序的年龄:

#define NSFoundationVersionNumber_iPhoneOS_2_0  678.24

可能查找其他框架的版本号,但是我没有跟踪适当的头文件.如果你想要的是SDK版本,Foundation版本会告诉你你想知道什么.

附录:Matt Stevens pointed out to me也可以通过这样做直接查找版本:

otool -l Payload/APPname.app/APPname | fgrep --after-context=3 LC_VERSION_MIN_IPHONEOS

这给你的结果如下:

cmd LC_VERSION_MIN_IPHONEOS  cmdsize 16  version 5.0      sdk 6.0

这在上面提到的古老的iPhone OS 2.0应用程序中不起作用,但它对我尝试的其他一切都有效.我不知道这是添加什么版本,但它应该适用于几乎所有你遇到的应用程序.

总结

以上是内存溢出为你收集整理的如何检查用于编译.ipa或.app文件的iOS SDK版本全部内容,希望文章能够帮你解决如何检查用于编译.ipa或.app文件的iOS SDK版本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1113547.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存