• 项目在iOS11上遇到的小问题


    ​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" "${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" "${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无线调试了!

     

  • 相关阅读:
    9月23日JavaScript作业----用DIV做下拉列表
    9月23日JavaScript作业----日期时间选择
    9月23日JavaScript作业----两个列表之间移动数据
    9月22日下午JavaScript----Document对象
    9月22日上午JavaScript----window对象
    9月20日下午JavaScript函数--递归
    9月20日上午JavaScript函数
    9月19日下午JavaScript数组冒泡排列和二分法
    9月19日上午JavaScript数组
    9月6日表格标签(table、行、列、表头)(补)
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/7748633.html
Copyright © 2020-2023  润新知