开开心心开始编译运行,结果一个大红屏。。。
转头也发现我们的packager卡在了Loading dependency graph, done.
上网搜索,发现,我不是一个人。但是按照很多同仁的法子,我掉到了另一个坑。
也许你也看到很多同仁告诉你,你可以去这样做:
1、创建assets文件:mkdir android/app/src/main/assets
2、项目跟目录下执行: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/
爬过这个坑的我,告诉你,如果你这样做了,确实可以成功出现界面,但是你会发现你修改代码,一刷新,又是大红屏,然后你得重复上述方法,重新编译,循环往复,苦不堪言。
后来,我多次寻找发现了另一个解决方法,切换监听端口,重启一个packager。
大家也可以看一下自己的8081端口是否被占用,我就是被杀毒软件占用了。
如何切换监听端口呢?
此处感谢 houtrry,提供了方法。
这是原帖:https://blog.csdn.net/houtrry/article/details/63253325
我再拾人牙慧,这里简单介绍一下。
-
查看一下8081端口占用情况
打开cmd窗口,输入命令netstat -aon|findstr 8081
得到进程号 2644
查看进程,输入命令tasklist|findstr 2644
发现进程被占用。发现是杀毒进程,无法关闭。 -
修改监听端口
找到MainActivity.java文件,原贴中没有说,我找了比较久。现在贴出来,供大家参考。
添加切换端口的代码。我切换成了8089端口。@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); mPreferences.edit().putString("debug_http_host","10.65.150.2:8089").commit();//pc端ip地址 }
-
修改命令的port(我自己的方法)
修改adb端口号:adb reverse tcp:8089 tcp:8089
使用带端口号的命令:react-native start --port 8089
完成这两步,我还是没有成功,在packager里,确实修改了端口,但是在run-android的时候,发现还是在8081端口编译。
后来发现是,react-native run-android 命令还是默认端口8081.索性,我修改了这些命令的默认端口,这样下次再输入命令的时候,就不需要带着端口号了。修改命令的默认端口号在node_modules里操作。
react-native start 的命令在server.js文件里。 具体路径为:
MyApp >> node_modules >> react-native >> local-cli >> server >>server.js
这里要稍微耐心一点。修改你想要的默认端口号。
react-native run-android的命令在server.js文件里。 具体路径为:
MyApp >> node_modules >> react-native >> local-cli >> runAndroid >>runAndroid.js
修改你想要的端口号。最下面,仔细找。
这里坑的我很惨,花了很长时间,网上也没相关资料。现在总结一下,希望可以给小伙伴们一点参考。