几天来,我一直试图在iOs (颤振构建IPA)中构建我的颤振项目,而我似乎总是收到同样的错误:
"_objc_msgSend$setIOSHasWarnedLocationServicesOff:", referenced from:
+[LocationAuthorization run:onCancel:] in TSLocationManager(LocationAuthorization.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)它们很多,所以我不会把它们都放在这里,但是它们都与_objc_msgSend$和TSLocationManager有关。
我试图在构建设置(Runner )中将"-lc++“添加到其他链接标记中,与此问题相关的是https://github.com/facebookarchive/pop/issues/25,但它仍然失败了,超过100个_objc_msgSend$问题。坦白地说,我已经尝试了很多事情,而且我已经没有线索了。
我注意到,当我从Xcode (Product )构建时,当我选择目标设备-»SE第三代时,它构建得很好,但是当目标设备插入到我的物理设备(插入到我的iPhone上)时,我会得到错误。
当我击中颤振建造IPA,它总是失败。
发布于 2022-10-13 11:23:28
^_^
首先,您可以将xcode更新到上面的14.0版本。
而真正的原因是苹果Clang新的优化方案,_objc_msgSend stup support不支持xcode13。
如果您不想升级您的xcode版本。您可以按照接下来的步骤来更改您的私有框架。
我想您在xcode14中编译了一个框架,然后在xcode13中使用了它。
嗯,现在我看到你回复了,确保我的回答
i'm using Xcode 13.4.1 and it's not having ARCHS_VALID as a build setting @editix –
Bertrand Gélinas
22 hours ago 默认情况下,Xcode 14中的clang将生成以前的本机链接器无法理解的目标文件。
将来,建议在应用程序包中使用Xcode14及以上版本。
如果您有由Xcode14构建的私有框架。
-fno-objc-msgsend-selector-stubs添加到框架项目目标build settings other c flags,然后再次构建,将新框架替换为其他xcode项目。
-fno-objc-msgsend-selector-stubs
other c flags other c flags或者您自己的脚本构建框架,您可以在调用xcodebuild命令之前添加一个更改,比如thisxcodebuild -project xxx.xcodeproj build OTHER_CFLAGS="-fno-objc-msgsend-selector-stubs "。
发布于 2022-10-12 14:00:40
单击目标>生成设置> VALID_ARCHS >并添加以下内容:
arm64 arm64e armv7 armv7s x86_64

如果您没有找到VALID_ARCHS,请执行以下操作:
单击“生成设置”下的加号。
2-选择“添加用户定义的设置”,它将向您添加NEW_SETTING。
3-将"NEW_SETTING“重命名为"VALID_ARCHS”,并添加以下构建:
arm64 arm64e armv7 armv7s x86_64如果没有解决您的问题,请遵循这一点,您可以找到工作的答案:
https://stackoverflow.com/questions/73992337
复制相似问题