Contents

flutter开启两个相同代码的互通websocket调试

为什么调试websocket聊天需要两边运行调试,因为有时方便两边都能debug。之前用过一个方式,先是生成生产环境app,再用开发环境app去互通,发现大多时候,非常不方便调试。

同步文件工具

为了方便调试websocket聊天,开两个应用运行调试通话的话,得保证两代码相同。 需要用到代码同步工具,我想到了以前用的rsync,但我又想可能的跨平台,去找到了go版的rsync。一套折腾下来,发现太花费时间去理解。刚好rsync在mac上刚好就有了,不浪费时间就用了。 在阮一峰大佬的网站上有一套rsync 用法教程。 试验之后,这条命令刚好合适rsync -av --delete ./gg/ ./gg22。 命令讲解:

-a 参数:
  1. 除了可以递归同步以外,还可以同步元信息(比如修改时间、权限等)。由于 rsync 默认使用文件大小和修改时间决定文件是否需要更新,所以-a-r更有用。
  2. 只想同步源目录source里面的内容到目标目录destination,则需要在源目录后面加上斜杠。比如:./gg/ ./gg22。如果你想目标目录下有子目录就用./gg ./gg22,目标目录结构就变成/gg22/gg
-n 参数:

参数则是将结果输出到终端,这样就可以看到哪些内容会被同步。

--delete 参数:

如果要使得目标目录成为源目录的镜像副本,则必须使用--delete参数,这将删除只存在于目标目录、不存在于源目录的文件。


复制项目之后,修改项目名称不跟原项目同样

复制项目到目标地址后,要修改项目名称不能跟原项目同源,要不然在mac中生成的项目还是得跟原项目共用一个本地缓存池。

  1. 执行命令flutter clean

  2. 修改项目名称:右键->refactor->rename。

  3. 修改安卓项目名称: 到安卓目录右键->refactor->rename->rename module。

  4. 打开pubspec.yaml修改name键中的值。

  5. 副本没必要用git。rm -rf ./.git

  6. 在源代码中的Makefile增加这样的命令:

    copy_to:  
    rsync -av --delete ./lib/ ../xxx1copy1/lib
    

虽然能运行成功,但不确定是不是我要的结果:mac中不共享用户缓存信息,因为app包名还是一样的。搜索flutter 修改app名称这样的关键字打信息,是有修改包名的方法,但有一个弊端可能会有小问题。我又整个项目包都搜索一番,发现项目名挺不少依赖的。

没办法,包名最好就是在开项目的时候就定下来的。那就就新建项目吧,把dart代码都复制到lib目录就得了。

  1. 新建项目,定义好包名。

  2. 执行Makefile中的命令。

  3. 复制源pubspec.yaml中的dependencies:assets:两个键值的信息。

这几个步骤比上一个直接复制项目的快得多了。步骤也少很多,麻烦也少很多。