探寻不同版本号的SDK对iOS程序的影响
PDF版本号:http://pan.baidu.com/s/1eQ8DVdo
结论:
代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UIScreen *mainScreen = [UIScreen mainScreen];
CGRect frm = [mainScreen bounds];
UIWindow *win = [[UIWindow alloc] initWithFrame:frm];
win.backgroundColor = [UIColor blueColor];
self.window = win;
[win release];
[self.window makeKeyAndVisible];
return YES;
}
问题:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUHJvdGVhcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
说明:
xcode版本号:4.6.3 VS 5.0.2设备:iPhone 5s,iOS 8.0可运行文件名称:APIDiff-SDK61表示使用iOS SDK 6.1 编译出的可运行文件APIDiff-SDK70表示使用iOS SDK 7.0编译出的可运行文件IPA文件名称:APIDiff-SDK61.ipa表示iOS SDK 6.1编译出的安装包APIDiff-SDK70.ipa表示iOS SDK 7.0编译出的安装包
分析:
分析一:确认是可运行程序引起
验证方法:
用APIDiff-SDK70.ipa中的可运行程序替换APIDiff-SDK61.ipa中的可运行程序,
然后使用codesign命令又一次签名,
打包。安装到手机上后发现状态条是透明的。
说明区别确实在可运行程序中。
又一次签名方法:
codesign -f -s "证书名" --resource-rules Payload/*.app/ResourceRules.plist Payload/*.app
分析二:比較二进制区别
分析三:比較代码区别
分析四:比較UIKit版本对程序的影响
既然代码没有区别,
我们首先会想到是不是因为UIKit版本号不同而引起的程序外观不同。
尽管程序是动态链接的UIKit,
而且设备上仅仅有一个版本号的UIKit库,
可是我们还是要验证下。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUHJvdGVhcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
分析五:使用MachOView逐项比較
走到这里。多少有点儿黔驴技穷了。
问题就在那里而我们却找不到原因。
那就上最原始的工具:体力劳动,使用MachOView一项一项的对照。
从"__LINKEDIT"
--->"LC_DYLD_INFO_ONLY"
--->"LC_LOAD_DYLINKER"
--->"LC_VERSION_MIN_IPHONEOS"
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUHJvdGVhcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
TODO:这样的区别又是怎样影响了程序的外观
这样的区别又是怎样影响了程序的外观,可能的原由于:
1、UIKit中会读这个属性。
可能性极小。UIKit仅仅是一个库,
而如上的区别会首先被载入器获得,
离UIKit还非常远。
2、SpringBoard及其相关服务。
可能性大。
①:SpringBoard几其服务本身就有画图的职责;
②:点击桌面上的图标,程序是由SpringBoard启动的。
只是不打算继续验证了。到这里已经满足了我的探知欲,欲望更强的兄弟能够继续分析。^_^
探寻不同版本号的SDK对iOS程序的影响的更多相关文章
- 使用Olami SDK 语音控制一个支持HomeKit的智能家居的iOS程序
前言 HomeKit是苹果发布的智能家居平台.通过HomeKit组件,用户可以通过iphone.iPad和ipod Touch来控制智能灯泡,风扇.空调等支持HomeKit的智能家居,尤其是可以通过S ...
- IOS程序启动原理
1.Info.plist 建立一个工程后,会在Supporting files文件夹下看到一个“工程名-Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 常见属性(红色 ...
- 写给iOS程序员的命令行使用秘籍
http://www.jianshu.com/p/44d3b8f713f2 Mac OS是Unix系统的分支,有着强大的命令行功能.很多事情在命令行下处理会事半功倍,所以我就iOS程序员可能会用到的功 ...
- ios程序开发杂记
ios程序开发杂记 一.程序构建 与一般的程序构建无太大区别,都是源文件编译链接这一套,通常是在mac上做交叉编译,也就是利用xcode里带的ios编译工具集去生成arm架构的ios程序(或是x86的 ...
- Info.plist和pch文件的作用,UIApplication,iOS程序的启动过程,AppDelegate 方法解释,UIWindow,生命周期方法
Info.plist常见的设置 建立一个工程后,会在Supporting files文件夹下看到一个“工程名-Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 注:在旧 ...
- 移动端影像解决方案Adobe Creative SDK for ios
移动端影像解决方案Adobe Creative SDK for ios 2015-12-20 分类:整理 阅读(390) 评论(0) 老牌影像界泰斗不甘落寞,正式推出了Adobe Creative ...
- iOS基础 - iOS程序启动原理
一.UIApplicationMain 在main.m的main函数中执行了UIApplicationMain这个方法,这是ios程序的入口点 int UIApplicationMain(int ar ...
- 使用OLAMISDK实现一个语音输入数字进行24点计算的iOS程序
前言 在目前的软件应用中,输入方式还是以文字输入方式为主,但是语音输入的方式目前应用的越来越广泛.这是一个利用 Olami SDK 编写的一个24点iOS程序,是通过语音进行输入. Olami SDK ...
- iOS程序自动检测更新的实现
本文转载至 http://blog.csdn.net/davidsph/article/details/8931718 App Store自动更新itunes 之前项目需要用到app自动更 ...
随机推荐
- sql 和xml
一·常用基本功能 表结果: 1. 1 <row> 2 <ID>1035</ID> 3 <Rate>6.12</Rate> 4 <Dat ...
- Hibernate 悲观锁(Pessimistic Locking)
在日常开发中并发应该是比较常遇到的业务场景,Hibernate给我们提供了并发操作,接下来简单介绍一下Hibernate悲观控制. 悲观锁:用户其实并不需要花很多精力去担心锁定策略的问题,通常情况下, ...
- 解决关于stack溢出的问题
开发中经常遇到: 前端遇到Uncaught RangeError: Maximum call stack size exceeded错误 后台遇到java.lang.OutOfMemoryError: ...
- 【递推】hdu5927 Auxiliary Set
题意:给你一棵树.q次询问,每次给你一些非关键点,其他的点都是关键点,让你输出树中既不是关键点,也不是关键点的lca的点的数量. 对每次询问的非关键点按照深度从深到浅排序,依次处理,最开始每个点受到的 ...
- [CodeForces-178F]Representative Sampling
题目大意: 给你n个字符串,要求从中选出k个字符串,使得字符串两两lcp之和最大. 思路: 动态规划. 首先将所有的字符串排序,求出相邻两个字符串的lcp长度(很显然,对于某一个字符串,和它lcp最长 ...
- 读书笔记_Effective_C++_条款二十六:尽可能延后变量定义式的出现时间
这个条款从字面意思还是很好理解的,就是在使用这个变量前才去定义,而不是很早就定义了它,而在很后面的时候才去使用.这个条款只适用于对变量声明位置没有要求的语言,比如C++.对于像C或者一些脚本语言,语法 ...
- 模板引擎之hogan.js
hogan.js 语法简单,且支持循环数据: 基本语法: 1. 标签可以嵌套使用 2. {{data}} 转义的变量,不会渲染html标签 3. {{{data}}} 不转义的变量,会渲染html标签 ...
- Delphi插件创建、调试与使用应用程序扩展
Delphi插件创建.调试与使用应用程序扩展 翻译 : MiracleZ 有没有使用过Adobe Photoshop?如果用过,你就会对插件的概念比较熟悉.对外行人来说,插件仅仅是从外部提供给应用程 ...
- Unity 网络请求(1)
using UnityEngine; using System.Collections; public class Scene1 : MonoBehaviour { //下载图片的容器 private ...
- 关于warning: Clock skew detected. Your build may be incomplete. 的解决方法
今天发现电脑的系统时间不对,因此将时钟进行了改动,回头编译Linux kernel的时候,提演示样例如以下的warning: warning: Clock skew detected. Your ...