React Native,很久以前我学过一点点,在那之后没什么地方用得到,而且我也意识到了React Native的局限性,于是再也没碰过。
最近要逆向破解了学校记录校园跑距离APP的API,打算写一个APP用来方便地刷校园跑。
此情此景,我觉得React Native再合适不过了。(o゚v゚)ノ
这个项目应该不会有操作系统相关的东西,大概不会用到原生代码。
初始化项目
初始化项目这件事情,跟着官方文档走,用脚手架,很轻松就初始化好了。回忆从前,为什么之前跟着官方文档搭环境这么费劲呢?我感觉主要原因有以下几点:
- 之前电脑一直是Win7而很多软件都渐渐不支持Win7,报各种莫名其妙错误。
- 之前不懂科学上网,等半天还给报连接超时。
- 现在电脑开发环境较为齐全,Android环境搭建已经有了就完全跳过了。
现在看React Native的代码的感觉已经和之前大不相同,上次接触React Native后偶尔学了一下React,各种钩子函数已经有一定的了解了,npm的基本功能也会用了。φ(゜▽゜*)♪
无法编译项目
官方文档没看到怎么存用户数据,搜了一下,说是要用AsyncStorage,看到了AsyncStorage已过时,官方建议去[React Native 目录]去找找看,于是找到了react-native-storage这个库。
这个库似乎提供了AsyncStorage的API,一句话读写数据。Golang你看看人家JavaScript
坑从此处开始出现了 ≡(▔﹏▔)≡
装React Native的包需要重新编译,因为这些包里面似乎有原生的东西。
但是,装上这个包项目就无法编译了···
搜索了一下,似乎都在说Java版本错误,看看报错信息,确实有在说Javac什么的东西,于是我试图换一下JDK版本
众所周知,Shell找东西是在Path变量中从上往下找的,只要把我希望用的JDK放在最上面,就能起到更换JDK版本的作用。

打开环境变量,我居然有6个Java w(゚Д゚)w 我把他们挨个放上面,重新编译,但都失败了。
我想到,有没有一种可能,我的React Native太新了?于是我创了一个新项目降了一个功能版本号。
然后编译发现,这样居然不装包也无法编译!(⊙ˍ⊙)
没有办法的我打开了Android Studio,抱着试一试的心态,希望Android Studio编译能多显示一些错误信息,但是用Android Studio居然能编译!
于是后台开一个Android Studio将就着开发···
一直到项目写完我都这样将就过来了,但是最后发行版编译打包似乎用不了Android Studio··· (@_@;)
编译项目看着飞来飞去的Java目录,最后失败,怎么想都感觉是Java的问题,于是我把Path里面的所有Java全都删了,重启IDE、重新编译,它还能照常编译,报同样的错。“Java版本不会写道项目里面了吧”,我想。
构建脚本文件一个一个打开看,我发现了一个叫JAVA_PATH的东西。
问题解决,但完全高兴不起来  ̄へ ̄
服务器
独乐乐不如众乐乐,这么好用的云跑步软件应该拿出来大家一起用嘛,但是软件发出去传播开感觉很容易出事,于是我给APP写了服务器,放在Cloudflare的Worker上。
不知道其他供应商的Worker(云函数)怎么样,Cloudflare的Worker是可以本地用npm开发然后编译部署上去的···

我用Worker代理原本的登录接口,存储用户信息,必须有邀请码才能登录,已经可以使用软件的用户可以生成一次性邀请码,有效防止软件被群发。
CloudFlare默认Worker的域名似乎被墙了,需要拿自己域名代理一下。
之后给同学测试了一下,除了服务器在国外太慢,效果是非常棒的。不用跑了,很棒