一定要看到花开-M1下的环境噩梦

一定要看到花开-M1下的环境噩梦

人有时候就是喜欢犯贱。

关注我这快小一年的扯闲天的都知道,自己也算是经历了一劫吧。虽然,这劫难还不能说结束,但也算是走出来了。

一切,似乎正在朝着好的方向发展。

但是,就那么突然地,我去找了个逼班上。

没几个钱,更没什么排面。开发就俩人,一个我,一个后台。剩下的几个,都是些喜欢回复"收到"的纯种牛马。

就是有点对那个蓝牙指环感兴趣,在全职和兼职之间就那么鬼使神差地选择全职,觉得可以all in一下。

然后,这个逼班就上起来了。

Day1,发现似乎这台笔记本上没运行过RN新架构下的anroid工程?铺天盖地的kvm报错。。。。。。

当时就觉得---我不该在这里,我该待家里。

创建RN工程的时候那必然会考虑到鸿蒙,就选择了0.72.5版本。就挺纳闷,0.72.5创建出来的andorid工程是java的,编译的时候node_modules里跑的全是kotlin。。。。。。调整来调整去,往anroid工程里加各种kotlin插件,各种指定版本,却也是各种无效。第一天上班,上午全员吹牛逼,下午就在那手忙脚乱整环境。kt又没用过自然是两眼一抹黑完全被deepseek牵着鼻子走。末了快下班老板又过来讨论下技术,得又是一顿说。

上班第一天,喜提扁桃腺发炎,晚上跑药店买阿奇霉素。。。。。。

Day2,破罐子破摔直接不指定RN版本初始化,android自然是默认kt的,一顿加repo换maven源,anroid跑起来了!眼一闭先不管了,直接拿高版本RN干吧。测试了下truboModule,发现和之前鸿蒙RN做的操作不一样。试了半天算是把c++的跨平台实现做掉了,但andorid原生和RN的交互codengen没生成文件,还得继续查原因。鸿蒙RN里arkts和RN之间交互是基于c++的,但anroid/ios看文档似乎c++/RN与原生/RN是turboModule的两种实现方式。这就有点懵逼了。由于干鸿蒙RN的时候就围绕着鸿蒙在开发,andorid/ios都没管,看了RN的官方指南一下子搞不明白了。

其实这原生js交互还算是小事,真正头大的是ios的开发环境:ruby死活更新不了。

问来问去,deepseek最后都词穷了。我也不知道该不该继续问下去。

这是我最终成功安装的步骤

bash 复制代码
# Winning script!
brew install openssl@1.1

export PATH="$(brew --prefix)/opt/openssl@1.1/bin:$PATH"
export LDFLAGS="-L$(brew --prefix)/opt/openssl@1.1/lib"
export CPPFLAGS="-I$(brew --prefix)/opt/openssl@1.1/include"
export PKG_CONFIG_PATH="$(brew --prefix)/opt/openssl@1.1/lib/pkgconfig"

rvm autolibs disable

export RUBY_CFLAGS=-DUSE_FFI_CLOSURE_ALLOC
export optflags="-Wno-error=implicit-function-declaration"
# 脚本是安装2.7.3,我安装后依然报错
#rvm install 2.7.3 --with-openssl-dir=$(brew --prefix)/opt/openssl@1.1
# 最终我选择了用brew直接安装ruby
brew install ruby

安装成功后设置ruby的path,ruby -v验证下版本正确,ruby就搞定了

bash 复制代码
  echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile
  source ~/.bash_profile
  ruby -v
  ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [x86_64-darwin23]

重装了ruby后,cocoapod需要卸载重装(ruby生gem,gem生cocoapod。。。。。。)

bash 复制代码
  # 卸载所有 CocoaPods 相关 gem
  gem uninstall cocoapods cocoapods-core cocoapods-downloader
  # 删除残留的可执行文件
  sudo rm -f /usr/local/bin/pod
bash 复制代码
  # 确认当前 Ruby 路径
  which ruby  # 应输出 /usr/local/opt/ruby/bin/ruby(Homebrew 安装路径)
  # 安装 CocoaPods
  gem install cocoapods
  # 验证安装路径
  gem env | grep "EXECUTABLE DIRECTORY"  # 应指向 Homebrew 的 Ruby gem 目录
bash 复制代码
  # 将 Homebrew 的 Ruby gem bin 目录加入 PATH,注意我的是bash_profile,如果用zshrc的换成.zshrc
  echo 'export PATH="/usr/local/lib/ruby/gems/3.4.0/bin:$PATH"' >> ~/.bash_profile
  # 重新加载配置
  source ~/.bash_profile

验证,结束

bash 复制代码
  pod --version
  1.16.2

你以为故事结束了?

这才哪到哪!

晚上偶尔跑了下鸿蒙RN,结果发现鸿蒙模拟器死活连不上RN,好嘛,这是andorid/ios环境搞得差不多了把鸿蒙环境搞崩了吗?!

才上了两天班,原本平静的生活被搅了个天翻地覆。什么ArkTS的学习,什么鸿蒙RN的开发,统统都丢在一旁。白天焦头烂额,晚上回来继续痛苦面具。多亏了这发炎的扁桃腺,也不想出去散步运动了,真的是all in 啊。

Day3,pod依赖报错,还是DoubleConversion,folly这几个老演员。都是老套路了,pod换个清华的源也就解决了。ios也算是能编译了。新的问题又来了------yarn start后无论andorid还是ios都连不到服务器。发现RN0.78下Metro是0.82,和RN0.72.5下Metro v0.76有些版本差别。不知道是不是Metro的原因。调查不出来。更奇怪的是用yarn run ios/android就可以启动DevTool,此时无论ios还是andorid把壳工程打开都能debug。你就说奇怪不奇怪吧。

当然,还有更奇怪的,昨晚那个鸿蒙RN没法连服务器,最后电脑重启了一下,居然又可以了。

总结下,现在就是鸿蒙RN还是可以yarn start来连上本地服务器,但RN0.78下的ios/android只能用yarn run ios/android。

就这么诡异,好在已经见怪不怪,能干就干,就这么开发吧。下午开始研究起codegen,跟鸿蒙RN又是有点差别,学吧,菜就多练不是。

上午去体检加上新办张工资卡,路上柳絮挺多,然后就过敏了。。。。。。喉咙那个难受,不停干咳。晚上下班又去逛药店了,这次买了盒氯雷他定。发现我买药比搞RN0.78版本熟练多了。

M1上这些问题的根源,就在于当初买回来初始化的时候选择了去复制上一台pro(2018款,x86的cpu)。这导致了很多配置都是基于x86的,虽然在Rosetta下可以兼容,却也使得开发时遇到各种莫名其妙的环境问题。21年射出去的子弹终于在25年打中了自己的眉心。

这第三天怎么说呢?算是个好日子了吧,至少两个移动端都开始能跑了。

三天,才三天,就把养了大半年的精气神耗得七七八八,好不容易攒下的一点功力都散了。想想还有Day4,Day5,DayN。。。。。。

什么为20年后人均寿命100岁而努力?分明这上班才是最折寿的事啊。

PS:后面发现似乎是VSCODE下的bash挂了导致anroid/ios下没法yarn start,用系统自带的终端就一点问题都没有。现在就直接用中断起服务得了。

相关推荐
2501_919749031 小时前
鸿蒙:使用Emitter进行线程间通信
华为·harmonyos
SuperHeroWu73 小时前
【HarmonyOS 6】仿AI唤起屏幕边缘流光特效
华为·harmonyos·特效·鸿蒙6.0·流光·ai唤起·屏幕边缘
gcios4 小时前
鸿蒙-flutter 混合开发
harmonyos
特立独行的猫a5 小时前
HarmonyOS应用开发之界面列表不刷新问题Bug排查记:从现象到解决完整记录
华为·bug·harmonyos·ui刷新
安卓开发者6 小时前
鸿蒙Next的UI国际化与无障碍适老化实践:构建全球包容的数字世界
ui·华为·harmonyos
爱笑的眼睛1119 小时前
深入剖析 HarmonyOS ArkUI 声明式开发:状态管理艺术与最佳实践
华为·harmonyos
安卓开发者20 小时前
鸿蒙NEXT交互机制解析:从输入设备到手势响应的全面指南
microsoft·交互·harmonyos
奶糖不太甜。1 天前
鸿蒙分布式数据同步失败全解
分布式·华为·harmonyos·数据同步
小小小小小星2 天前
鸿蒙权限相关问题之应用访问网络、文件等功能时崩溃或无响应,日志提示'权限被拒绝'
harmonyos
leon_teacher2 天前
ArkUI核心功能组件使用
android·java·开发语言·javascript·harmonyos·鸿蒙