​iOS11正式版出了这么久了,在忙完新版本开发,写下在iOS11上的一些小问题。

1  App图标不显示

现象:升级到iOS11系统下自己的项目桌面app图标不见了

出现这种情况我还以为自己手动删除了项目 Images.xcassets中的AppIcon导致没有图标。查看项目和发现这些AppIcon还在,突然发现在Xcode 9中AppIcon有了改变。

发现Xcode 8及之前的版本是可以直接在iTunes Connect上添加App icon。而Xcode 9则是把App icon放置在项目的asset catalog。所以需要把空缺的图标补上,其中一张是1024pt 1x的尺寸。如果没有正确添加iOS App图标,上传到App Store后可能会受到拒绝邮件。

心想既然图标变了那么LaunchImage呢,果不其然LaunchImage也有小变化为了适配苹果即将售出的iPHone X,这里我们需要在这里添加一张新的尺寸图1125px*2436px。

那么究竟是什么导致,在iOS 11上面图标消失的呢。查证后发现。

原因: 使用了CocoaPods的Xcode工程,在iOS11版的手机上AppIcon不显示,  原因是CocoaPods的资源编译脚本在iOS11下出了点问题。

解决办法:

1.在Podfile添加脚本修改:

1). 在Podfile 添加如下代码。

post_install do |installer|

    copy_pods_resources_path = "Pods/Target Support Files/Pods-[工程名]/Pods-[工程名]-resources.sh"

string_to_replace = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"'

    assets_compile_with_app_icon_arguments = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
--app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_
info.plist"' text = File.read(copy_pods_resources_path) new_contents = text.gsub(string_to_replace, assets_compile_with_app_icon_arguments) File.open(copy_pods_resources_path, "w") {|file| file.puts new_contents } end

2).然后运行需要注意的是,  将[工程名] 换成自己工程的名称

$pod install

  

打开工程目录下:[工程名]/Pods/Target Support Files/Pods/Pods-resources.sh这个文件,  替换最后一段代码:2.手动修改

修改前:

printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices 
--warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}"
${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" fi

  

修改后:

printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings
--platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist" fi

  

然后重新运行工程即可,  配置完成后如果启动后发现还没有图标,现在系统低于iOS 11下的手机运行一次,再在iOS 11上启动就回发现有了。修改后:

参考:

https://github.com/CocoaPods/CocoaPods/issues/7003

2  用到相机功能时闪退

现象:在用户在手机系统iOS 11里面使用App进行身份证、银行卡ORC识别的时候打开相机发生Crash现象;在iOS 11以下正常。

原因:iOS11下,苹果对相册的权限key做了调整

详见:CocoaKeys

解决办法:在Info.plist里添加以下权限

3  H5和Native交互的时候控制更严格

现象:在iOS 11上点击UIWebView加载的H5页面,来与原生App进行交互出现Crash,报错webTread。

原因:iOS11下,UIWebView与原生交互的时候出现了线程安全问题;控制更加严格。

解决办法:把调用原生方法的代码放到主线程中运行。

4  在Xcode 9中的无线调试

Xcode 9 里面把很多简单的快捷键给改复杂了,一些插件不支持了。最有利于开发者的地方就是Xcode 9中的无线调试了。

苹果诟病最多的产品:数据线

心疼的抱住我自己,穿着缝缝补补的衣服,用着自己拼拼接接的数据线

在Xcode 9中没有这样的烦恼了。

升级到Xcode9.0之后,可以通过Wifi连接iOS或tvOS设备进行无线调试。

要求: Xcode 9.0 以上版本、macOS 10.12.4以上版本、iOS 11.0以上版本,  tvOS 11.0以上版本。

操作步骤:

打开菜单 Window > Devices and Simulators, 然后在打开的菜单中选择 Devices选项。

通过数据线将您的设备,比如iPhone,连接至Mac电脑。

在如下图选择连接的设备,然后在右侧勾选[通过网络连接]复选框。

Xcode 会和你的设备进行配对。一旦Xcode和设备配对成功,设备名称的右侧会显示一个网络图标。

最后将设备的数据线从Mac电脑上取出,就可以通过Wifi无线调试了!

项目在iOS11上遇到的小问题的更多相关文章

  1. 第一次使用Git上传本地项目到github上

    对于程序原来说都听说过GitHub,GitHub有许多开源的的项目和一些前沿的技术.因为自己在刚刚开始使用Git把自己写的一些小dome放到GitHub上遇到许多的坑,这么长时间过去了,想对第一次使用 ...

  2. 大型C++项目必须注意的几个小问题

    大型C++项目必须注意的几个小问题 有些问题对于小型的C++项目来说可能无关紧要,但对于大中型C++项目来讲,这些问题却成了大问题.什么样的项目算是小型项目呢,什么样的算是大中型项目呢,我认为10万L ...

  3. 前端搭建Linux云服务器,Nginx配置详解及部署自己项目到服务器上

    目录 搭建Linux云服务器 购买与基本配置 链接linux服务器 目录结构 基本命令 软件安装 Linux 系统启动 启动过程 运行级别 Nginx详解 1.安装 方式一:yum安装 方式二:自定义 ...

  4. 如何参与开源项目 - 细说 GitHub 上的 PR 全过程

    目录 一.概述 二.为什么要参与开源项目 三.为什么我想介绍如何 PR 四.我想参与开源项目,怎么开始? 4.1.寻找一个合适的开源项目 4.2.寻找贡献点 五.我要提交 PR,怎么上手? 5.1.第 ...

  5. 【无私分享:ASP.NET CORE 项目实战(第十章)】发布项目到 Linux 上运行 Core 项目

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win7)上用虚拟机建了个 CentOS7 ,来演示下 ...

  6. Win7上的ASP.NET MVC3项目在Win10上运行的一个坑

    先解释一下问题:我原来的电脑环境是Win7+VS2015,因为新换了个电脑环境变成Win10+VS2015了,所以就把原先的项目复制到新的机器上,那么问题来了,原先的一个项目在VS2015上打开竟然直 ...

  7. 发布项目到 Linux 上运行 Core 项目

    发布项目到 Linux 上运行 Core 项目 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win ...

  8. GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。

    1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...

  9. 通过Git Gui Here上传本地项目到GitHub上

    要使用此种方法上传本地项目到GitHub上,前提得是你已安装Git for window工具. Git for window下载地址:http://www.xp510.com/xiazai/Appli ...

随机推荐

  1. moodleform -转载于blfshiye

    Form API 表单API 文件夹 1.概述 2.亮点 3.使用方法 4.表单元素 4.1 基本表单元素 4.2 定制表单元素 5.经常使用函数 5.1  add_action_buttons($c ...

  2. IdentityServer4-用EF配置Client(一)

    一.背景 IdentityServer4的介绍将不再叙述,百度下可以找到,且官网的快速入门例子也有翻译的版本.这里主要从Client应用场景方面介绍对IdentityServer4的应用. 首先简要介 ...

  3. BZOJ.2639.矩形计算(二维莫队)

    题目链接 二维莫队,按x,y坐标一起分块.(x,y)的所属的块为 x/sq(n)*sq(m) + y/sq(m) 排序时按照(左下点所在块,右上点的标号)排序 排序后 先得出一个询问的答案,然后利用上 ...

  4. BZOJ4124 : [Baltic2015]Tug of war

    建立二分图,首先如果存在度数为$0$的点,那么显然无解. 如果存在度数为$1$的点,那么这个点的匹配方案固定,可以通过拓扑排序去掉所有这种点. 那么现在剩下的点度数都至少为$2$,因为左右点数相等,且 ...

  5. Redis淘汰删除策略

    Redis淘汰删除策略 Redis淘汰删除策略6种淘汰Key策略3种删除过期键策略定时删除惰性删除定期删除其他模块的淘汰处理RDB 快照持久化创建载入AOF 只追加持久化写入重写主从复模式下对过期键的 ...

  6. C#高级编程9 第16章 错误和异常

    C#高级编程9 第16章 错误和异常 了解这章可以学会如何处理系统异常以及错误信息. System.Exception类是.NET运行库抛出的异常,可以继承它定义自己的异常类. try块代码包含的代码 ...

  7. 各种组件的js 获取值 / js动态赋值

    jQuery获取Select选择的Text和Value:语法解释:1. $("#select_id").change(function(){//code...});   //为Se ...

  8. C#编程(八十)---------- 异常类

    异常类 在C#里,异常处理就是C#为处理错误情况提供的一种机制.它为每种错误情况提供了定制的处理方式,并且把标志错误的代码预处理错误的代码分离开来. 对.net类来说,一般的异常类System.Exc ...

  9. windows Server 2008 R2的安装

    1.http://msdn.itellyou.cn/ 在此下载IOS文件. 2.通过Nero进行刻录系统光盘,可以通过Daemon直接加载IOS,然后复制就可以了. 3.通过开机 Delete键进BI ...

  10. Netty重要概念介绍

    Netty重要概念介绍 Bootstrap Netty应用程序通过设置bootstrap(引导)类开始,该类提供了一个用于网络成配置的容器. 一种是用于客户端的Bootstrap 一种是用于服务端的S ...