曾静的博客

但行好事,莫问前程.

嗨,我是曾静 (@devzeng),目前暂居深圳。


这是我用来记录平日学习笔记的地方,欢迎您的访问.

Xcode15和iOS17相关的问题解决

近期在做一些适配相关的工作,在适配过程中踩到了一些坑。这是一篇水文,主要是记录 iOS 17 和 Xcode 15 适配过程中遇到的一些问题和解决方法。

1、Xcode 14 在 iOS 17 的真机上运行

一般来说Xcode和iOS系统匹配才能运行,但是有些时候不想升级Xcode但是想要在高版本的iOS真机上面调试项目。

首先从别人升级过Xcode的电脑上面拷贝 DeviceSupport 目录下对应版本的镜像文件过来就行了,目录如下:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

当然也有热心大佬整理了每个版本的镜像文件:https://github.com/JinjunHan/iOSDeviceSupport,这样就不必找一台电脑先升级Xcode了。

升级到iOS17之后以为也是这样的套路,到安装了Xcode 15的机器上面去拷贝文件的时候发现没有新增的iOS 17相关的镜像文件夹了。

device_support

在官方的论坛上面找到一段官方的回复:

iOS 17 beta requires Xcode 15 beta.

Copying files from a newer version of Xcode to an older version of Xcode for any purpose was never supported. That it worked for your needs was coincidental.

As the system evolves, any expectations for "how things work" could be made invalid, and this appears to be the case here.

Please use Xcode 15 beta to work with iOS 17 beta.

For earlier OS and Xcode releases, please refer to the Minimum requirements and supported SDKs for appropriate and supported combinations.

—Jason.

大意是从来就不支持拷贝 DeviceSupport 文件的方式支持不同版本间的运行,之前能生效都是巧合吧。刚好在帖子上面看到一位大神的回复,试了一下确实可行,具体的步骤如下:

(1) 命令行执行开启 DVTEnableCoreDevice 支持

defaults write com.apple.dt.Xcode DVTEnableCoreDevice enabled

(2) 在 Xcode 14 选择 (CoreDevice) 结尾的设备

coredevice

注: 需要包含 16.4 及以上版本的 DeviceSupport,并重启Xcode

使用 Xcode 15 安装 ipa 报错

安装内测用的ipa文件,一般都是直接将ipa文件拖到Xcode就能安装。将ipa拖到红框即可

xcode_install_ipa

在Xcode 15 向 iOS 17的设备安装的时候会报错。

xcode_app_install_error

解决办法:

(1) 解压ipa(将ipa后缀改成zip)

(2) 拖拽Payload目录下的app文件到Xcode安装

总结: 就是将原来拖ipa的方式改为拖app的方式

参考资料

最近的文章

搭建Dart Pub镜像服务

和其他的语言一样 Dart 也有自己的包管理工具,Pub 是 Dart 官方的包管理器。pub 默认从 https://pub.dartlang.org/ 下载依赖包,如果需要修改可以通过设置环境变量 PUB_HOSTED_URL。如修改为清华的镜像源可以使用如下命令进行修改:export PUB_HOSTED_URL="https://mirrors.tuna.tsinghua.edu.cn/dart-pub"PUB_HOSTED_URL 设置的地址其实是需要能访问互联网的,那么对于在内...…

Note继续阅读
更早的文章

Jenkins Pipeline 插件自定义环境变量丢失问题

最近将一些构建任务由 Freestyle 迁移为 Pipeline 的实现 (主要是考虑后续可以通过任务模板的方式动态创建和维护),整体的实现过程较为简单,基本上就是把原来的执行步骤拆分成一个个的 Stage,将里面用到的一些配置抽取成环境变量的方式,统一设置到一起。最终的配置脚本如下(伪代码):node("mac01") { stage('Environment Setting') { env.ENV_BUILD_SCRIPT_URL = "http://127.0....…

Note继续阅读