Xcode7打包,iOS9真机闪退,如何解决?
问:有些项目用xcode7打开运行,打包安装到iOS9设备上程序会闪退。
如果用xcode7以下编译,然后打包到iOS9的设备上就是正常的。这是为什么,关键是,怎么解决?
答:iOS9发布之后,有些app在新的系统下会经常出现闪退的情况,而官方也给了许多的适配与改变。以使用户体验更好。所以做为开发者怎样为自己维护的App做适配呢?
最快解决的方法肯定是使用Xcode7以下的编译打包。(笔者就是因为需求一直在催,所以果断用旧版Xcode5编译...555)
当然,如果一定要用Xcode7的话也可以解决,需要解决的步骤如下:
(1.)关于iOS9网络适配(HTTP 转 HTTPS):
为了强制增强数据访问安全, iOS9 默认会把 所有的http请求都改为 HTTPS 请求。(HTTPS = HTTP+SSL/TLS+TCP)
解决这个变化带来的影响,有2个方案:
方案a:立即让公司的服务端升级使用TLS 1.2,以解析相关数据;
方案b:如果服务器无法升级改变,虽Apple不建议,但可通过在 Info.plist 中声明,倒退回不安全的网络请求依然能让App访问指定http,甚至任意的http。
本应用的根目录下的“info.plist”的文件需加下面的键值;简单粗暴地信任所有http服务器:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
或者不用代码,而在“info.plist”文件的属性列表上直接添加:

(2)bitcode,一种被编译程序的一种中间形式的代码。以后在Watch应用中必须包含Bitcode,iOS不强制,但Xcode7默认会开启Bitcode:
方案a:更新library使库中包含Bitcode,否则会出现以下中的警告;
(null): URGENT: all bitcode will be dropped because '/Users/myname/Library/Mobile Documents/com~apple~CloudDocs/foldername/appname/GoogleMobileAds.framework/GoogleMobileAds(GADSlot+AdEvents.o)' was built without bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. Note: This will be an error in the future.
方案b:简单粗暴,关闭Bitcode.
TAGRETS->Build Setting,右上角搜索“bitcode”,改为“No”;
(3).iOS9 URL Scheme 适配,引入白名单概念:
在在info.plist里面增加可信任的调用app,否则回报如下错误:
-canOpenURL: failed for URL: "weixin://app/wx9c8771d3c07dfd30/" - error: "This app is not allowed to query for scheme weixin"
-canOpenURL: failed for URL: "wtloginmqq2://qzapp" - error: "This app is not allowed to query for scheme wtloginmqq2"
可在根目录的“info.plist”文件中加入“LSApplicationQueriesSchemes”数组:每个字段的url需要我们自己添加,如下图添加了包括微信微博等sdk的url(具体的其他方应用SDK会有相应说明):
(4)企业级分发:
iOS9之前,企业级分发的操作很便捷,直接点击App出现的“信任”按钮即可,
而iOS9以后,企业级分发ipa包变得与Mac上dmg安装包安装时一样:默认不能安装,也不再出现“信任”这个按钮;
所以在我们的真机运行,安装到手机里面后第一次打开app。不会像以前提示,信任还是不信任该证书.
这个时候需要打开自己的设备上面的 设置-》通用-》描述文件-》企业级应用 中信任对应的企业开发者。这个也是iOS9的新特性;
Xcode7打包,iOS9真机闪退,如何解决?的更多相关文章
- react native ios打包到真机
每当在模拟器上完成了开发,都想到真机上秀秀,正好前段时候买了一个mac,哈哈有机会了.前篇文章以android为例,这里就以ios为例,讲一下打包到iphone真机的流程. 一.前置 1.首先你得有一 ...
- React Native (二) ios打包到真机
每当在模拟器上完成了开发,都想到真机上试试,正好前段时候淘了一个imac. 这里就以打包rndemo到iphone为例,讲一下react ntive ios打包到真机的流程. 一.前置 1.有个iph ...
- 手机升级到iOS10,用Xcode7.3进行真机调试方法
今天发布的正式版的iOS10,手机果断升级了,结果发现Xcode7.3不能真机调试了,原因是Xcode7.3里面没有iOS10的sdk,下面这个压缩包你可以下载下来放在你的Xcode7.3里面,当然了 ...
- 【官方方法】xcode7免证书真机调试
[官方方法]xcode7免证书真机调试 步骤比较简单,我就简单总结一下. 1. 进入xcode,菜单栏选择xcode –> preferences (快捷键 command + ,)在Accou ...
- windows10中git-bash闪退的解决办法
windows10中git-bash闪退的解决办法 出现错误详情 Windows10 64位专业版安装git .18之后出现 Git闪退,报错信息:bash: /dev/null: No such d ...
- 关于Manjaro+kde桌面Tim闪退的解决
文章目录 关于Manjaro+kde桌面Tim闪退的解决 参考 Tim 我的问题 QQ 我的问题 WeChat 我的问题 本文结束 关于Manjaro+kde桌面Tim闪退的解决 参考 https:/ ...
- Xcode7.2如何真机调试iOS 9.3的设备
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 本猫的mac系统为10.10,Xcode版本为7.2 本猫将i ...
- Xcode7免证书真机调试
最近一直忙于项目,对于Xcode7的一些新功能还没去尝试,今天尝试了下挺好用的!避免了以前真机调试繁琐的配置,很是爽啊.又可以节约很多小伙伴的时间了.废话不多说咱们一起来配置一下. 第一步 打开需要真 ...
- iOS打包Framework真机和模拟器兼容合并版本 - 详细攻略步骤
打包Framework,测试时: 1.用模拟器打包,测试时只能跑在模拟器 2.用真机打包,测试时只能跑在真机 那么怎么做到一个版本兼容以上两种场景呢? 解决如下: 1.打开终端 2.输入 lipo ...
随机推荐
- HDU 1026 Ignatius and the Princess I(带路径的BFS)
http://acm.hdu.edu.cn/showproblem.php?pid=1026 题意:给出一个迷宫,求出到终点的最短时间路径. 这道题目在迷宫上有怪物,不同HP的怪物会损耗不同的时间,这 ...
- ubuntu 14.04安装nginx+php+mysql
前段时间的折腾,颇费一番周折,过程中发现网上的许多资料比较老旧过时了,所以在这里也简单把过程重新整理一遍,争取一帖解决问题. 基于最新的Ubuntu 14.04(2014年9月)搭建nginx.php ...
- cshtml常用标签
@RenderSection:在布局页中,将呈现指定部分的内容并指定该部分是否为必需.用法:@RenderSection("PageSpecificStyleSheetIncludes&qu ...
- documentfragment
JS临时容器,父类是null,存储实际是把存储对象所有子类存储在里面,localStorage,浏览器支持情况下,保存本地变量
- 查询expression的小工具
今天在研究flipsolve的时候无意间写了个shelf tool,用于查询一大推节点中某些parameter的expression中是否存在我需要的关键字.就是简单的对所框选的节点进行一个循序查询参 ...
- Extnet Direct 提交后台事件文件下载设置
App.direct.MasterData.Export(App.tfSearch.getValue(), { isUpload: true ...
- ExtJs 学习之开篇(二) Observable 给类添加监听
html:代码 DOCTYPE html><html><head><meta charset="UTF-8"><title>I ...
- Python os._exit() sys.exit()
os._exit()会直接将python程序终止,之后的所有代码都不会继续执行. sys.exit()会引发一个异常:SystemExit,如果这个异常没有被捕获,那么python解释器将会退出.如果 ...
- JVM内存模型和性能优化 转
JVM内存模型和性能优化 JVM内存模型优点 内置基于内存的并发模型: 多线程机制 同步锁Synchronization 大量线程安全型库包支持 基于内存的并发机制,粒度灵活控制,灵活度高于 ...
- [转]require(),include(),require_once()和include_once()区别
require(),include(),require_once()和include_once()区别 面试中最容易提到的一个PHP的问题,我想和大家共勉一下: require()和include() ...