适配iOS9

本文档详细介绍了iOS9开发过程中遇到的一些常见问题及其解决方案,包括bitcode配置、HTTPS处理、URL scheme白名单设置、新浪微博JSONKit兼容性修复、dylib格式更改等方面的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:http://blog.sina.com.cn/s/blog_adb19b690102vvlm.html

一、iOS9 bitcode

首先最大的问题就是坑货xcode7,xcode7默认是打开bitcode的,bitcode是苹果为了解决他自己以后的应用可以随意更换硬件的处理做的准备也就是arm指令集和x64指令集的问题

那么我们的工程如果你采用了别人封装的第三方库,那么好了,会爆以下错误
ld: ‘/UsersFramework/SDKs/PolymerPay/Library/mobStat/lib**SDK.a(**ForSDK.o)’does not contain bitcode. You must rebuild it with bitcode enabled (Xcodesetting ENABLE_BITCODE), obtain an updated library from the vendor, or disablebitcode for this target. for architecture arm64

上述这段文字说明了我们的第三方库不支持bitcode,如果你需要支持,就需要这个第三方库也支持bitcode。苹果目前给出的临时解决方案就好比当初MRC和ARC时候的解决办法,当初xcode5更新时候默认是工程创建是ARC的,你可以关闭ARC改为MRC,经过了一段时间后,大家都开始使用了ARC,那么bitcode也一样,在xcode7时候默认是开启的,我们需要关闭,那么如何关闭


适配iOS9


我引用了一篇文章的gif图来做演示
在targets里面选择BuildSetting中搜索bitcode,然后改为no就ok了



二、iOS9 https问题
如果在Xcode 9之前使用的时http请求,那么在XCode 9上编译的App是不能联网的,会提示如下错误:
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
修 改方法是要么使服务器支持https访问,要么关闭https的使用。第一种方法对于个人开发者来说代价还是比较大的,因此推荐使用后面一种方法,具体的 做法是:在工程的Info.plist文件里添加NSAppTransportSecurity字典类型的,添加一个元素:key为 NSAllowsArbitraryLoads,值为YES。
适配iOS9




三、iOS 9 使用URL scheme必须将其加入白名单


否则会提示类似如下错误:
canOpenURL: failed for URL: "mqqopensdkapiV2://qqapp" - error: "This app is not allowed to query for scheme mqqopensdkapiV2”
修正方法是,Info.plist文件中添加一个key为LSApplicationQueriesSchemes的数组值,里面包含需要添加白名单的string类型的scheme。特酷吧在项目中使用了qq,微信等分享登录功能,需要添加的值为:
mqqopensdkapiV2
mqqOpensdkSSoLogin
mqq
mqzoneopensdkapiV2
mqzoneopensdkapi19
mqzoneopensdkapi
mqzoneopensdk
mqzone
weixin
wechat

四、新浪微博的jsonkit在部分机型上面导致崩溃
适配iOS9

问题是
  程序会奔溃到jsonkit.m void keyObjectISA = ((void **)keys[idx]);这行代码,因为在os x10.10中,NSString采用了TaggedPointer这项技术,此类型不使用解应用isa来获取其所属类,而是通过接下来的三位来查找类表索引的类型,且对象指针最低位置为1。
如何解决:解决方法由群友sun提供参考地址如下
http://blog.youkuaiyun.com/woainiliuwei007/article/details/48549103
由于taggedpointer类型不能用isa了,就必须修改为object_getClass(keyObject) ,而且在line:2601处也需要做修改

这里附一个修改过的jsonkit,可以正常使用 
http://download.youkuaiyun.com/detail/woainiliuwei007/9123789

五、原来的dylib后缀名的库全部修改为libz.tbd
适配iOS9

六、报错 Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294

在Info.plist中,可以找到:“Main storyboard file base name”  String “Main”,删掉这个条目, 再启动,屏幕变成了黑屏

手动添加window
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    self.window [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //全屏window
    self.window.backgroundColor [UIColor whiteColor]; //白色背景
    [self.window makeKeyAndVisible]; //
    return YES;
}
ok,这个由于更新xcode7报错已解决!

如果按照上面修改完,发现还在报错,那么去看看你的项目是不是加了引导页

把上面的add方法,变成下面的就好。

这个add方法在xcode7之前是没有问题的,在xcode7后不能这样写了!


新增一种解决办法,就是如果你以前的小工程运行在Xcode7上面,会直接崩溃原因在Xcode7上面是必须要windows有一个rootViewController的,所以我们需要给他添加一个

window.rootViewController = [UIViewController new];


七、在iOS9下,AddRessBook.framework被弃用了,改用Contacts.framework
适配iOS9


八、关于加入微信白名单会报错的总结
适配iOS9
电动汽车数据集:2025年3K+记录 真实电动汽车数据:特斯拉、宝马、日产车型,含2025年电池规格和销售数据 关于数据集 电动汽车数据集 这个合成数据集包含许多品牌和年份的电动汽车和插电式车型的记录,捕捉技术规格、性能、定价、制造来源、销售和安全相关属性。每一行代表由vehicle_ID标识的唯一车辆列表。 关键特性 覆盖范围:全球制造商和车型组合,包括纯电动汽车和插电式混合动力汽车。 范围:电池化学成分、容量、续航里程、充电标准和速度、价格、产地、自主水平、排放、安全等级、销售和保修。 时间跨度:模型跨度多年(包括传统和即将推出的)。 数据质量说明: 某些行可能缺少某些字段(空白)。 几个分类字段包含不同的、特定于供应商的值(例如,Charging_Type、Battery_Type)。 各列中的单位混合在一起;注意kWh、km、hr、USD、g/km和额定值。 列 列类型描述示例 Vehicle_ID整数每个车辆记录的唯一标识符。1 制造商分类汽车品牌或OEM。特斯拉 型号类别特定型号名称/变体。型号Y 与记录关联的年份整数模型。2024 电池_类型分类使用的电池化学/技术。磷酸铁锂 Battery_Capacity_kWh浮充电池标称容量,单位为千瓦时。75.0 Range_km整数表示充满电后的行驶里程(公里)。505 充电类型主要充电接口或功能。CCS、NACS、CHAdeMO、DCFC、V2G、V2H、V2L Charge_Time_hr浮动充电的大致时间(小时),上下文因充电方法而异。7.5 价格_USD浮动参考车辆价格(美元).85000.00 颜色类别主要外观颜色或饰面。午夜黑 制造国_制造类别车辆制造/组装的国家。美国 Autonomous_Level浮点自动化能力级别(例如0-5),可能包括子级别的小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值