zoukankan      html  css  js  c++  java
  • ios9和xcode7的适配问题

     一、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时候默认是开启的,我们需要关闭,那么如何关闭 如下图:
    在targets里面选择BuildSetting中搜索bitcode,将对应的Yes 改成对应的No。
     
     二、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。 如下图:
     

    三、iOS 9 使用URL scheme必须将其加入白名单(摘抄)
    在使用URL scheme的时候,在ios9上面,如果不加白名单的话  应用会找不到对应的app。

    受此影响,当你的应用在iOS 9中需要使用 QQ/QQ空间/支付宝/微信SDK 的相关能力(分享、收藏、支付、登录等)时,需要在“Info.plist”里增加如下代码:

     <key>LSApplicationQueriesSchemes</key>
     <array>
        <!-- 微信 URL Scheme 白名单-->
        <string>wechat</string>
        <string>weixin</string>
    
        <!-- 新浪微博 URL Scheme 白名单-->
        <string>sinaweibohd</string>
        <string>sinaweibo</string>
        <string>sinaweibosso</string>
        <string>weibosdk</string>
        <string>weibosdk2.5</string>
    
        <!-- QQ、Qzone URL Scheme 白名单-->
        <string>mqqapi</string>
        <string>mqq</string>
        <string>mqqOpensdkSSoLogin</string>
        <string>mqqconnect</string>
        <string>mqqopensdkdataline</string>
        <string>mqqopensdkgrouptribeshare</string>
        <string>mqqopensdkfriend</string>
        <string>mqqopensdkapi</string>
        <string>mqqopensdkapiV2</string>
        <string>mqqopensdkapiV3</string>
        <string>mqzoneopensdk</string>
        <string>wtloginmqq</string>
        <string>wtloginmqq2</string>
        <string>mqqwpa</string>
        <string>mqzone</string>
        <string>mqzonev2</string>
        <string>mqzoneshare</string>
        <string>wtloginqzone</string>
        <string>mqzonewx</string>
        <string>mqzoneopensdkapiV2</string>
        <string>mqzoneopensdkapi19</string>
        <string>mqzoneopensdkapi</string>
        <string>mqzoneopensdk</string>
    
        <!-- 支付宝  URL Scheme 白名单-->
        <string>alipay</string>
        <string>alipayshare</string>
    
    </array>

    三、新浪微博的jsonkit在部分机型上面导致崩溃(群友Gemini提供)

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


    五、报错 Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294    (群友sun提供)

    在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后不能这样写了!

    六、找不到(丢失).dylib文件,换成.tbd文件而又无法运行,请用下面的方式来解决。
        1.    Go to Build Phases >Link Binary with Librairies > + > Add other
        2.    Once in the file selection window do "CMD"+Shift+G (Go to folder) and type /usr/lib/
        3.    From /user/lib you can add : libz.dylib and more...
        4.    Compile and have fun
     
     
     
     
  • 相关阅读:
    Android JS 交互出现 Uncaught Error: Error calling method on NPObject
    adapter.notifydatasetchanged()没有效果
    Android 正则表达式验证手机号码
    Android SpannableString实现TextView的点击事件
    使用Jquery的Ajax调用
    我们常用,却容易忽视——CSS的BFC(Block formatting contexts)
    React数据流和组件间的通信总结
    CSS清除浮动float方法总结
    CSS3幻灯片制作心得
    JavaScript中map函数和filter的简单举例
  • 原文地址:https://www.cnblogs.com/gepf/p/4910425.html
Copyright © 2011-2022 走看看