IDE下载及破解
webstorm是一款好用的前端IDE,跟androidstudio的爸爸intellij idea一样出自jetbrain公司,官网下载安装包,破解也很简单,我们选择licence server的方式,去百度一下,逐个尝试直到找到好用的licence server即可。
选择javascript版本
然后使用webstorm打开我们之前用脚手架创建的react工程,打开设置,在language&frameworks选项卡的javascript子项下选择一下javascript版本,如下图:
位于选择列表中最下方的Flow版本包含了上面其他版本的所有特性,是最新版本,所以我们选择它,webstorm进行类型检查、代码补全等智能操作都是以我们选择的这个javascript版本为依据来进行的。
下载typescript库
接下来可以添加一些Typescript库,比如react-is、react-instantsearch-native,这些库为react相关的类型提供了头文件声明,我们可以在javascript选项卡的library下点击download,这会打开一个连接Typescript官方委托在github上的头文件库DefinitylyTyped的列表框,我们可以在里面寻找需要的头文件库进行下载。下载了相关的库,我们在按ctrl转到类定义时,可以清晰看到类结构。当然,你不下也行,但是不下的话,就只能跳转到js中的相似位置,看不到多少有用的东西。
运行react-native工程
如图,在webstorm左下角点击terminal,它直接默认就是在我们项目的根目录下,输入react-native run-android来运行这个工程。
为什么图中会有乱码呢?这个是因为terminal在windows操作系统上本质是cmd的封装,在cmd里这个地方运行RN工程就会出乱码,暂时我也没有解决方案。当然,这并不会影响我们程序的运行。
既然是cmd的封装,那其实你不用terminal,直接去用cmd也是可以的,只不过cmd你得一顿cd切换到我们的工程目录下才能执行RN的命令,这里就不多说了。
如果你不想用cmd当做terminal,也可以在设置菜单的Tools选项卡的Terminal子项中修改它,如下图所示:
ok,现在我们尝试运行它。咦,怎么红屏了,别急,有提示信息的:
unable to load script from assets/index.android.bundle
像这种问题,网上随便以搜就行了,首先在android的main目录下创建assets文件夹,然后执行
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/
执行完毕后你会发现assets文件夹里多了一个index.android.bundle文件,这时我们再去运行,就完美的看到了RN的启动画面
当然,安装过程中也可能出现其他报错信息,但是只要有信息,就不可怕,我们有聪明的头脑分析问题,还有好兄弟百度,神马?英文不懂?就算你不懂,百度翻译了解一下。总之,这些都不是问题,就怕遇到问题两眼一瞪就等着人教,那可就完蛋咯。
可能存在的其他问题
这算个补充,我是没遇到这种问题,但是有人遇到了,那就是执行react-native run-android之后,卡在Loading dependency graph,done这里不动了,这个问题其实是由于某端口被占用导致的,先别百度,晃一晃你的小手机,reload,发现红屏了,人家RN已经给了你解决方案,那就是执行adb reverse tcp:8081 tcp:8081。但是你这么执行,很可能遇到adb is not a command之类的提示,那是因为,adb.exe这个程序存在于android sdk的platformtools文件夹下,你当前目录没有这个程序,又没把它的所在路径设置成操作系统path,那当然不行,我们的解决方案是把它所在的路径设置进系统path,这时说不定会出现很尴尬的一幕:诶,朕把android sdk放哪去了?别急,androidstudio帮你解忧,如下图:
根据以上路径,我们在它的子目录里找到了adb.exe,得到path:C:\Users\Administrator\AppData\Local\Android\Sdk\platform-tools,我们把它设置进系统path,再执行adb命令,就没问题了。需要注意的是,如果你之前开着cmd,那就需要把它重启一下它才能识别path的变更,terminal不详,你可以试试。
至此,问题完美解决。