React Native项目Ad Hoc分发失败:AppThinning.StubError问题排查
React Native Ad Hoc分发App瘦身失败(AppThinning.StubError error 1)解决方案
问题详情
React Native项目Ad Hoc分发时触发App瘦身报错:
The operation couldn’t be completed. (AppThinning.StubError error 1.)
环境:Xcode 14.2 (14C18),MacBook Air M1
核心错误日志:
2023-04-05 07:45:24 +0000 Output: ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.x86_64-darwin21] ... dlopen(/Library/Ruby/Gems/2.6.0/gems/date-3.3.3/lib/date_core.bundle, 0x0009): tried: '/Library/Ruby/Gems/2.6.0/gems/date-3.3.3/lib/date_core.bundle' (mach-o file, but is an incompatible architecture (have (arm64), need (x86_64))) - /Library/Ruby/Gems/2.6.0/gems/date-3.3.3/lib/date_core.bundle (LoadError) ... cannot load such file -- cfpropertylist (LoadError)
尝试执行sudo arch -x86_64 gem install date时,因已配置rbenv(Ruby 3.2.1)失败,报错:
Undefined symbols for architecture x86_64: "_rb_alloc_tmp_buffer_with_count", referenced from: _s3e in date_parse.o _read_digits in date_strptime.o "_rb_ary_new_capa", referenced from: _Init_date_core in date_core.o ...
问题根源
Xcode的ipatool工具依赖系统自带的Ruby 2.6.8(x86_64架构),但全局安装的date gem是arm64架构,导致架构不兼容;同时rbenv管理的Ruby 3.2.1与系统Ruby版本差异,直接安装x86架构的date gem会出现符号缺失问题。
解决步骤
- 卸载全局冲突的date gem
系统Ruby自带date库,无需额外安装,先卸载全局高版本date:
sudo gem uninstall date -v 3.3.3
- 让Xcode使用系统Ruby执行打包
临时切换终端到系统Ruby后再执行打包操作:
# 切换到系统Ruby rbenv system # 执行Xcode打包/分发操作 # 完成后切回自定义Ruby版本 rbenv local 3.2.1
- 直接给系统Ruby安装兼容x86的依赖(备选方案)
若前两步无效,直接调用系统Ruby的gem命令安装兼容依赖,避开rbenv影响:
arch -x86_64 /usr/bin/gem install CFPropertyList date -- --enable-shared
内容的提问来源于stack exchange,提问作者Mikhail
相关产品推荐
相关产品推荐

