zoukankan      html  css  js  c++  java
  • 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的新特性;

  • 相关阅读:
    php+GTK2 学习第二篇
    PHPMailer + qq邮箱 实现邮件发送
    HTTP状态码200、301、403、404、500等(转)
    LNMP环境搭建(转载)
    PHP+GTK2 初体验,简单计算器客户端
    mysql 用户权限管理(转)
    提高php执行效率的10条编程习惯(转)
    添加php拓展(以phppcntl及phpredis及phppcntl为例)
    centos7 &后台运行 受终端关闭影响问题
    sklearn学习笔记之简单线性回归
  • 原文地址:https://www.cnblogs.com/azuo/p/5162316.html
Copyright © 2011-2022 走看看