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版本的作用。

img

打开环境变量,我居然有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开发然后编译部署上去的···

img

我用Worker代理原本的登录接口,存储用户信息,必须有邀请码才能登录,已经可以使用软件的用户可以生成一次性邀请码,有效防止软件被群发。

CloudFlare默认Worker的域名似乎被墙了,需要拿自己域名代理一下。


之后给同学测试了一下,除了服务器在国外太慢,效果是非常棒的。不用跑了,很棒

我能想到的,最大的成功就是无愧于自己的心。