flutter开启两个相同代码的互通websocket调试
为什么调试websocket聊天需要两边运行调试,因为有时方便两边都能debug。之前用过一个方式,先是生成生产环境app,再用开发环境app去互通,发现大多时候,非常不方便调试。
同步文件工具
为了方便调试websocket聊天,开两个应用运行调试通话的话,得保证两代码相同。
需要用到代码同步工具,我想到了以前用的rsync,但我又想可能的跨平台,去找到了go版的rsync。一套折腾下来,发现太花费时间去理解。刚好rsync在mac上刚好就有了,不浪费时间就用了。
在阮一峰大佬的网站上有一套rsync 用法教程。
试验之后,这条命令刚好合适rsync -av --delete ./gg/ ./gg22。
命令讲解:
-a 参数:
- 除了可以递归同步以外,还可以同步元信息(比如修改时间、权限等)。由于 rsync 默认使用文件大小和修改时间决定文件是否需要更新,所以
-a比-r更有用。 - 只想同步源目录
source里面的内容到目标目录destination,则需要在源目录后面加上斜杠。比如:./gg/ ./gg22。如果你想目标目录下有子目录就用./gg ./gg22,目标目录结构就变成/gg22/gg。
-n 参数:
参数则是将结果输出到终端,这样就可以看到哪些内容会被同步。
--delete 参数:
如果要使得目标目录成为源目录的镜像副本,则必须使用--delete参数,这将删除只存在于目标目录、不存在于源目录的文件。
复制项目之后,修改项目名称不跟原项目同样
复制项目到目标地址后,要修改项目名称不能跟原项目同源,要不然在mac中生成的项目还是得跟原项目共用一个本地缓存池。
-
执行命令
flutter clean -
修改项目名称:右键->refactor->rename。
-
修改安卓项目名称: 到安卓目录右键->refactor->rename->rename module。
-
打开
pubspec.yaml修改name键中的值。 -
副本没必要用git。
rm -rf ./.git。 -
在源代码中的Makefile增加这样的命令:
copy_to: rsync -av --delete ./lib/ ../xxx1copy1/lib
虽然能运行成功,但不确定是不是我要的结果:mac中不共享用户缓存信息,因为app包名还是一样的。搜索flutter 修改app名称这样的关键字打信息,是有修改包名的方法,但有一个弊端可能会有小问题。我又整个项目包都搜索一番,发现项目名挺不少依赖的。
没办法,包名最好就是在开项目的时候就定下来的。那就就新建项目吧,把dart代码都复制到lib目录就得了。
-
新建项目,定义好包名。
-
执行Makefile中的命令。
-
复制源
pubspec.yaml中的dependencies:和assets:两个键值的信息。
这几个步骤比上一个直接复制项目的快得多了。步骤也少很多,麻烦也少很多。
