首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS App 启动性能优化

导语 本文介绍了如何优化 iOS App启动性能,分为四个部分: 第一部分科普了一些和App启动性能相关的前置知识 第二部分主要讲如何定制启动性能的优化目标 第三部分通过在WiFi管家这个具体项目的优化过程...如何测量启动过程耗时 冷启动比热启动重要 当用户按下home键的时候,iOSApp并不会马上被kill掉,还会继续存活若干时间。...这种持续存活的情况下启动App,我们称为热启动,相对而言冷启动就是App被kill掉以后一切从头开始启动的过程。我们这里只讨论App启动的情况。...其实我也没有太深究过这个问题,但是,当用户点击了一个App的图标时,iOS做动画到闪屏图出现的时长正好是这个数字,我想也许跟这个有关。 针对不同规模的App,我们的目标应该有所取舍。...挖掘最后一点性能优化 由于WiFi管家是一个具有WiFi连接能力的App,因此有可能在后台过程中完成冷启动过程(实际上是在用户进入系统的WiFi设置时,iOS启动WiFi管家,以便请求WiFi密码)。

2.2K92

iOS App启动过程

启动流程如图 ?...图中,虚线之上的部分是out-of-process的,在App下载安装和版本更新的时候会去执行,out-of-process会做如下事情: Rebase 和 Bind 有两种主要的技术来保证应用的安全:...App启动的时候,程序会被影射到逻辑的地址空间,这个逻辑的地址空间有一个起始地址,而ASLR技术使得这个起始地址是随机的。如果是固定的,那么黑客很容易就可以由起始地址+偏移量找到函数的地址。...程序启动逻辑 最后 dyld 会调用 main() 函数。main() 会调用 UIApplicationMain(),程序启动。 main.m文件,此处就是应用的入口了。...程序启动时,先执行main函数,main函数是ios程序的入口点,内部会调用UIApplicationMain函数,UIApplicationMain里会创建一个UIApplication对象 ,然后创建

2.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS App 启动必 crash 监控

    摘要 在 iOS 11 Beta 刚刚发布时,有用户在微博反馈:升级到 iOS 11 Beta 后,微信读书 App 遇到启动必 crash 的绝境,无法使用。...用户看到的界面,是我们开源的 iOS 启动连续闪退保护方案 提示。 调试发现,是一段 iOS 11 不兼容的代码引发的问题。我们通过修改不兼容代码,解决了问题。...我们设计了一个特征值以判断这个问题,并扩展了 iOS 启动连续闪退保护方案,提供了日志上报接口,帮助开发者在第一时间发现启动必 crash 问题。...特征值设计 在每次检测到 crash 后,我们需要生成一个特征值,帮助判断 App 是否遇到启动必 crash。特征值应该包括: 时间维度:衡量最近几次 crash 的时间间隔是否连续。...ti 表示最近 i 次crash,与最近 i+1 次 crash 的 App 存活时间的差值。

    1.7K30

    iOS APP启动图问题浅析

    介绍 为了适配iPad Pro(iOS14 beta)这类设备键盘显示覆盖不全问题,我们需要更改启动图的方式,目前适配方式有2种: 1....第1种方法猜测应该是iOS系统图片渲染的bug,第2种方式是苹果官方推荐,应该是属于iOS13.6系统beta版的bug,第3种方式目前iOS正式版和beta版都不会有问题,故我们采用第3种方式适配。...为保证iPhone和iPad机型显示清晰,启动图的尺寸可以选择1242*2688 4. App 启动图命名避免使用Launch关键字 5....启动图放在App根目录,并且命名加上@3x,如sogouAppLaSC@3x.png 以上是根据本次适配启动图遇到的问题及解决方案,如果有不准确的地方或其他解决方案欢迎大家留言一起讨论。...另外iOS系统会缓存启动图,卸载后重装启动图会读取缓存中内容,至于缓存的机制是什么?以后可以和大家一起探讨。

    1.5K20

    iOS 优化App启动时间-启动详解(上篇)

    这篇文章你能学到什么 ---- 理论: 我们在进入mian()函数之前发生了什么事情 Mach -O的格式 虚拟内存基础知识 二进制Mach -O怎么被加载和准备 实用部分: 怎么去计算启动时间 优化启动时间...Mach -O、虚拟内存速成课 ---- 主要简单的介绍了Mach -O和虚拟内存的知识,下文在app启动的时会有很多相关的术语,不知道会懵逼。...在iOS上,当内存不足的时候,会尝试释放那些只读的Page,因为只读的Page在下次被访问的时候,可以再从磁盘读取。...APP启动 ---- app启动的时候,内核会把app映射到一个新的内存空间,开始地址是随机的。 ? 然后内核通过Dyld来加载动态库。...App启动的时候,程序会被影射到逻辑的地址空间,这个逻辑的地址空间有一个起始地址,而ASLR技术使得这个起始地址是随机的。如果是固定的,那么黑客很容易就可以由起始地址+偏移量找到函数的地址。

    2.5K30

    iOS App启动治理:来自美团外卖的实践

    美团外卖iOS客户端从2013年11月开始,历经几十个版本的迭代开发,产品形态不断完善,业务功能日趋复杂;同时外卖App也已经由原来的独立业务App演进成为一个平台App,陆续接入了闪购、跑腿等其他新业务...二、冷启动定义 一般而言,大家把iOS启动的过程定义为:从用户点击App图标开始到appDelegate didFinishLaunching方法执行完成为止。...(美团外卖iOS多端复用的推动、支撑与思考),公司的一些新兴业务也陆续集成到外卖App当中。...+load优化 目前iOS App中或多或少的都会写一些+load方法,用于在App启动执行一些操作,+load方法在Initializers阶段被执行,但过多+load方法则会拖慢启动速度,对于大中型的...外卖App线上的数据则更加明显,同样的机型(iPhone 7 Plus)和系统版本(iOS 12.0),进程创建时间比叶子节点dylib中的+load方法执行时间早688ms。

    1.2K20

    iOS App启动治理:来自美团外卖的实践

    美团外卖iOS客户端从2013年11月开始,历经几十个版本的迭代开发,产品形态不断完善,业务功能日趋复杂;同时外卖App也已经由原来的独立业务App演进成为一个平台App,陆续接入了闪购、跑腿等其他新业务...二、冷启动定义 一般而言,大家把iOS启动的过程定义为:从用户点击App图标开始到appDelegate didFinishLaunching方法执行完成为止。...的演进(美团外卖iOS多端复用的推动、支撑与思考),公司的一些新兴业务也陆续集成到外卖App当中。...+load优化 目前iOS App中或多或少的都会写一些+load方法,用于在App启动执行一些操作,+load方法在Initializers阶段被执行,但过多+load方法则会拖慢启动速度,对于大中型的...外卖App线上的数据则更加明显,同样的机型(iPhone 7 Plus)和系统版本(iOS 12.0),进程创建时间比叶子节点dylib中的+load方法执行时间早688ms。

    1.4K31

    分分钟解决iOS开发中App启动广告的功能

    allluckly.cn 前不久有朋友需要一个启动广告的功能,我说网上有挺多的,他说,看的不是很理想。...想让我写一个,于是乎,抽空写了一个,代码通俗易懂,简单的封装了一下,各种事件用block回调的,有俩种样式的广告,一种是全屏广告,另一种是下面露logo的,类似网页新闻的启动广告。...All rights reserved. // iOS开发学习app下载https://itunes.apple.com/cn/app/it-blog-for-ios-developers/id1067787090...All rights reserved. // iOS开发学习app下载https://itunes.apple.com/cn/app/it-blog-for-ios-developers/id1067787090...技术交流群:534926022(免费) 511040024(0.8/人付费) 推荐一款学习iOS开发的app_____|______| | 传送门 版权归©Bison所有 如需转载请保留原文超链接地址

    3.4K41

    分分钟解决iOS开发中App启动广告的功能

    前不久有朋友需要一个启动广告的功能,我说网上有挺多的,他说,看的不是很理想。...想让我写一个,于是乎,抽空写了一个,代码通俗易懂,简单的封装了一下,各种事件用block回调的,有俩种样式的广告,一种是全屏广告,另一种是下面露logo的,类似网页新闻的启动广告。...self.window = window; _secondsCountDown = 0; [window makeKeyAndVisible]; //获取启动图片...NSDictionary *)launchOptions { /* FullScreenAdType 全屏广告 * LogoAdType 带logo的广告类似网易广告,值得注意的是启动图片必须带...initWithWindow:self.window andType:LogoAdType andImgUrl:@"http://www.uisheji.com/wp-content/uploads/2013/04/19/app-design-uisheji-ui-icon20121

    1.3K60

    iOS App启动治理:来自美团外卖的实践

    美团外卖iOS客户端从2013年11月开始,历经几十个版本的迭代开发,产品形态不断完善,业务功能日趋复杂;同时外卖App也已经由原来的独立业务App演进成为一个平台App,陆续接入了闪购、跑腿等其他新业务...二、冷启动定义 一般而言,大家把iOS启动的过程定义为:从用户点击App图标开始到appDelegate didFinishLaunching方法执行完成为止。...五、规范启动流程 截止至2017年底,美团外卖用户数已达2.5亿,而美团外卖App也已完成了从支撑单一业务的App到支持多业务的平台型App的演进(美团外卖iOS多端复用的推动、支撑与思考),公司的一些新兴业务也陆续集成到外卖...+load优化 目前iOS App中或多或少的都会写一些+load方法,用于在App启动执行一些操作,+load方法在Initializers阶段被执行,但过多+load方法则会拖慢启动速度,对于大中型的...外卖App线上的数据则更加明显,同样的机型(iPhone 7 Plus)和系统版本(iOS 12.0),进程创建时间比叶子节点dylib中的+load方法执行时间早688ms。

    98640

    App 启动优化

    (Cold start) 冷启动是指APP在手机启动后第一次运行,或者APP进程被kill掉后在再次启动。...可见冷启动的必要条件是该APP进程不存在,这就意味着系统需要创建进程,APP需要初始化。在这三种启动方式中,冷启动耗时最长,对于冷启动的优化也是最具挑战的。因此本文重点谈论的是对冷启动相关的优化。...在最近任务给App加锁和启动方式有什么关系 某些厂商为了用户体验提供了给APP上锁的功能,目的就是让用户自己做主是上锁的APP不被杀,启动的时候不会处于冷启动方式,但是加锁也不是万能的,Low memory...killer在内存极度吃紧的情况下也会杀死加锁APP,在此启动时也将以冷启动方式运行。...这其中的道理简单说就是学习用户的使用习惯,提前将App进程创建好,当用户打开APP时不会出去冷启动

    1.4K10

    iOS获取app图标和启动图片名字(AppIcon and LaunchImages name)

    在某种场景下,可能我们需要获取app的图标名称和启动图片的名称。...比如说app在前台时,收到了远程通知但是通知栏是不会有通知提醒的,这时我想做个模拟通知提示,需要用到icon名称;再比如在加载某个控制器时,想设置该控制器的背景图片为启动图片,需要用到启动图片名称。   ...: /** 打印app里面所有启动图片名称信息 */ - (void)printAllLaunchImageInfo{ NSDictionary *infoDict = [[NSBundle..., 获取app启动图片名称,并设置为本控制器背景图片 */ - (void)getLaunchImageName{ NSString *launchImageName = @"".../** 打印app里面所有启动图片名称信息 */ - (void)printAllLaunchImageInfo{ NSDictionary *infoDict = [[NSBundle

    4.4K20

    iOS app测试_测试插件app

    2、填写信息创建 app ID 第一个选项:明确的 app id 与项目中的 Bundle Identifier 相对应,如果你打算将应用程序中加入 Game Center,或在应用中使用应用内购买...第二个选项:通用 app id 可以在所有不需要明确 id 的 app 中使用,淘宝上卖的真机调试证书就是这个 2、创建证书请求文件(CSR 文件) CSR 文件主要用于绑定你的电脑的...证书请求文件完成 3、根据 CSR 创建开发者证书(CER) 1、在苹果开发者中心找到 Certificates,点击 All,然后点击右上角 + 号 2、点击 Developement 中的 iOS...Provisioning Profiles 配置文件(PP 文件) 1、在苹果开发者中心找到 Provisioning Profiles ,点击 All,然后点击右上角 + 号 2、选择 iOS...App Developement,点击 Continue 3、在 App ID 这个选项栏里面找到你刚刚创建的:App IDs(Bundle ID) 类型的套装,点击 Continue

    1.5K30
    领券