react native iOS 升级 sdk 实践
内容提要
最近升级了iOS app的sdk版本,遇到了问题但成功解决。首先升级了xcode版本,然后修复了调试中发现的问题。对GoogleDataTransport和yoga进行了简单修改后成功提交了build。作为iOS小白,感到满满的成就感。
延伸解读
升级背景与触发条件
文章提到,提交iOS应用时收到警告,指出当前SDK版本过低,4月底后将无法提交。项目原本使用Xcode 14.2,对应iOS 16.2,而5月起最低要求已升至17.0以上。因此,升级Xcode版本成为必须。作者将Xcode升至15.2后构建失败,从而开始本地调试。这反映了苹果对开发工具版本要求的动态变化,开发者需及时跟进。
具体错误与临时修复
调试中发现GoogleDataTransport和yoga两个库存在问题。GoogleDataTransport报错为函数声明缺少原型,解决方法是在参数处加void;yoga报错为位运算符'|'与布尔操作数一起使用,解决方法是将'|'改为'||'。这些修改直接针对Pods文件夹下的源码,虽然能让项目运行,但不符合常规工作流程,因为App Center会自动执行pod install,会覆盖修改。
可持续的解决方案
针对GoogleDataTransport,作者在Podfile中将CLANG_WARN_STRICT_PROTOTYPES设置为NO,避免了直接修改源码。对于yoga,由于升级yoga需连带升级React Native,代价太大,作者将yoga内容从node_modules移到ios文件夹下,并修改代码,同时调整Podfile指向本地路径。这些修改提交后,App Center成功构建,应用运行正常。
经验与局限
作者作为iOS新手,成功解决了SDK升级问题,但自嘲方法像“破屋子打补丁”。这提示读者,临时修改第三方库虽能应急,但可能带来维护负担。更好的做法可能是推动依赖升级或向社区反馈。文章未涉及其他潜在问题,如长期兼容性,读者需根据自身项目评估风险。
Q&A
如何升级iOS app的SDK版本?
首先需要升级Xcode版本,确保其在17.0以上,然后进行调试和修复相关库的问题。
在升级过程中遇到了哪些具体问题?
主要遇到GoogleDataTransport和yoga库的问题,分别是函数声明缺少原型和位运算符与布尔操作数的错误。
如何解决GoogleDataTransport的错误?
通过在函数参数处添加void来解决函数声明缺少原型的问题。
yoga库的问题是如何解决的?
将位运算符'|'改为'||',并将yoga的内容从node_modules移动到ios文件夹下进行修改。
为什么直接修改Pods文件夹下的源码不符合工作流程?
因为大多数公司的工作流程不允许直接修改生成的源码,通常需要通过提交代码到特定分支来自动执行构建。
作为iOS小白,成功解决问题有什么感受?
感到满满的成就感,能够独立处理SDK升级的问题。