一定要看到花开-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最后都词穷了。我也不知道该不该继续问下去。

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

# 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就搞定了

  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。。。。。。)

  # 卸载所有 CocoaPods 相关 gem
gem uninstall cocoapods cocoapods-core cocoapods-downloader
# 删除残留的可执行文件
sudo rm -f /usr/local/bin/pod
  # 确认当前 Ruby 路径
which ruby # 应输出 /usr/local/opt/ruby/bin/ruby(Homebrew 安装路径)
# 安装 CocoaPods
gem install cocoapods
# 验证安装路径
gem env | grep "EXECUTABLE DIRECTORY" # 应指向 Homebrew 的 Ruby gem 目录
  # 将 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

验证,结束

  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,用系统自带的终端就一点问题都没有。现在就直接用中断起服务得了。

一定要看到花开-M1下的环境噩梦的更多相关文章

  1. 【转】花开正当时,十四款120/128GB SSD横向评测

    原文地址:http://www.expreview.com/19604-all.html SSD横评是最具消费指导意义的评测文章,也是各类热门SSD固态硬盘的决斗疆场.SSD评测在行业内已经有不少网站 ...

  2. 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

    原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在w ...

  3. Windows下的环境搭建Erlang

    Windows下的环境搭建 Erlang 一.安装编译器 在http://www.erlang.org/download.html下载R16B01 Windows Binary File并安装. 二. ...

  4. RF+Appium框架自动化测试系列一之(Mac下Appium环境搭建)万事开头难

    消失了3个月,有一段时间没来园子更新博客了,各位看官见谅哈哈,消失是因为刚换了工作环境没外网,好多笔记没能及时的记录分享,以后有时间慢慢补上吧,这段时间主要接触了移动端app的自动化测试,公司为了快速 ...

  5. 记一次Linux下JavaWeb环境的搭建

    今天重装了腾讯云VPS的系统,那么几乎所有运行环境都要重新部署了.过程不难懂,但是也比较繁琐,这次就写下来,方便他人也方便自己日后参考参考. 我采用的是JDK+Tomcat的形式来进行JavaWeb初 ...

  6. 跟我一起,利用bitcms内容管理系统从0到1学习小程序开发:一、IIS下SSL环境搭建

    缘起 1.从事互联网十来年了,一直想把自己的从事开发过程遇到的问题给写出来,分享给大家.可是可是这只是个种想法,想想之后就放下了,写出来的类文章是少之又少.古人说无志之人常立志,有志之人立长志.今天, ...

  7. Ubuntu下 jdk环境变量设置

    流程 1. 官网下载对应的jdk文件 2. 在根目录 / 下创建一个java目录 mkdir /java 3. 使用mv命令 将下载下来的文件(压缩格式),移动到上一步创建的/java目录下   Ps ...

  8. android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

      android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把 ...

  9. Android NDK r8 Cygwin CDT 在window下开发环境搭建 安装配置与使用 具体图文解说

    版权声明:本博客全部文章均为原创.欢迎交流.欢迎转载:转载请勿篡改内容,而且注明出处,谢谢! https://blog.csdn.net/waldmer/article/details/3272500 ...

  10. 2017.7.18 linux下ELK环境搭建

    参考来自:Linux日志分析ELK环境搭建  另一篇博文:2017.7.18 windows下ELK环境搭建   0 版本说明 因为ELK从5.0开始只支持jdk 1.8,但是项目中使用的是JDK 1 ...

随机推荐

  1. 『Plotly实战指南』--折线图绘制基础篇

    在数据分析的世界中,折线图是一种不可或缺的可视化工具. 它能够清晰地展示数据随时间或其他变量的变化趋势,帮助我们快速发现数据中的模式.趋势和异常. 无论是金融市场分析.气象数据监测,还是业务增长趋势预 ...

  2. JMeter BeanShell 获取 HTTP Request 中的 Name

    场景:添加 JMeter log 输出,想输入自定义请求的名称 // 获取 response body prev.getResponseDataAsString(); // 获取 HTTP Reque ...

  3. dotnet 源代码生成器分析器入门

    本文将带领大家入门 dotnet 的 SourceGenerator 源代码生成器技术,期待大家阅读完本文能够看懂理解和编写源代码生成器和分析器 恭喜你看到了本文,进入到 C# dotnet 的深水区 ...

  4. 小白快速了解的Java知识!

    Java初学习 1.Java的诞生与崛起 1972年,c语言诞生,其高效率,运行速度快让大批程序员为之倾倒,但是c语言的指针及其内存管理需要程序员自行操作,浪费了大量的时间以及精力,再加上c语言需要尽 ...

  5. 【Linux】3.5 实用指令

    实用指令 1. 指定运行级别(7个级别) 0.关机[一旦开机它就会执行关机] 1.单用户[找回丢失密码] 2.多用户状态没有网络服务 3.多用户状态有网络服务 4.系统未使用保留给用户 5.图形界面 ...

  6. 面试题:Linux 系统基础 (二)

    Linux系统中的定时任务有哪些类型,它们是如何配置的? Linux系统中的定时任务主要有两种类型:Cron作业和at作业. 1.Cron作业: 使用crontab命令配置和管理. 配置周期性执行的任 ...

  7. ReentrantLock底层源码分析

    一.简单使用 在聊它的源码之前,我们先来做个简单的使用说明.当我在IDEA中创建了一个简单的Demo之后,它会给出以下提示 提示文字 在使用阻塞等待获取锁的方式中,必须在try代码块之外,并且在加锁方 ...

  8. .NET周刊【3月第4期 2025-03-23】

    国内文章 C# 中比较实用的关键字,基础高频面试题! https://www.cnblogs.com/Can-daydayup/p/18784074 文章探讨了C#编程中的关键字,尤其是访问修饰符的种 ...

  9. 国产的 Java Solon v3.2.0 发布(央企信创的优选)

    Solon 框架! Solon 是新一代,Java 企业级应用开发框架.从零开始构建(No Java-EE),有灵活的接口规范与开放生态.采用商用友好的 Apache 2.0 开源协议,是" ...

  10. thinkphp mysql 使用IN 条件

    今天使用thinkphp  whrere  in条件查询 数据库是 ,我需要搜索入参  110000  一个字段 ,但是thinkphp 为了效率直接把  in条件转成  = 解决方法 FIND_IN ...