Android VHEditor Flutter开发环境配置

安装VHEditor

VHEditor是基于 Termux 和 Code Server (非微软开源的VSCode服务)的Android下进行软件开发的环境,安装方便,VSCode运行稳定,使用体验较好。

参考: https://github.com/vhqtvn/VHEditor-Android

https://github.com/termux/termux-packages

https://gitee.com/sinojelly/termux-exec 

配置软件下载安装运行环境

修改apt以支持安装软件

由于Termux不支持第三方工具(比如VHEditor)使用Termux的软件安装源,之前用了个方案修改apt工具限制三方工具使用。用下面的命令二进制修改文件可以规避。后来Termux改为在服务端进行限制,可能VHEditor必须要部署自己的源。

sed -i 's/\x65\x72\x6D\x75\x78\x2F\x66\x69\x6C\x65\x73\x2F\x75\x73\x72\x00\x2F\x64\x61\x74\x61\x2F\x64\x61\x74\x61\x2F\x63\x6F\x6D\x2E\x74\x59\x6F\x75\x20/\x6E\x2E\x76\x73\x63\x2F\x66\x69\x6C\x65\x73\x2F\x75\x73\x72\x00\x2F\x64\x61\x74\x61\x2F\x64\x61\x74\x61\x2F\x76\x6E\x2E\x76\x68\x59\x6F\x75\x20/g' /data/data/vn.vhn.vsc/files/usr/bin/apt

参考:https://github.com/vhqtvn/VHEditor-Android/issues/36

修改下载源

termux-change-repo 点OK,然后点击清华源。

安装必须的软件

pkg install git clang dart make vim

编译安装termux-exec

这个库是为了执行类似 /bin/tar 的命令时,自动加上前缀 /data/data/vn.vhn.vsc/files/usr,从而调用正确的命令。 从下面地址下载适合VHEditor的termux-exec代码:https://gitee.com/sinojelly/termux-exec 然后 make 之后,用make install 安装。 可以用 make test 测试是否工作正常。

然后配置LD_PRELOAD使得termux-exec生效: vim ~/.profile 增加一行: export LD_PRELOAD=/data/data/vn.vhn.vsc/files/usr/lib/libtermux-exec.so

再配置上 flutter / dart 源: export PUB_HOSTED_URL=https://pub.flutter-io.cn xport FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

之后,退出terminal,再次打开就会生效。 生效之后执行 /bin/apt 就能运行。生效前是文件找不到。

安装配置 flutter

git clone https://github.com/flutter/flutter.git -b stable

执行 flutter doctor,应该会报错,下载dart-sdk有问题。它会生成 flutter/bin/cache 目录,把该目录的dart-sdk 删除,然后把前面安装 dart 时已经下载的 dart-sdk 链接到 该目录。

ln -s /data/data/vn.vhn.vsc/files/usr/lib/dart-sdk ~/flutter/bin/cache/dart-sdk

再次运行 flutter doctor,它会编译 flutter 工具,这些工具也是dart写的,每个工具的目录 xxx_tool/src/lib下面是源码,编译后会在 bin/cache里面生成一个 snapshot 文件夹。

如果 flutter 工具自动编译不过,可以到某个具体的工具目录,比如: flutter/packages/flutter_tools目录,然后运行 dart pub get 就会生成.packages文件,自动下载它依赖的包,如果少量的包下载不成功,可以从其它windows/linux 上已经下载的对应版本的包,共享过来,解压缩到 ~/.pub-cache/hosted/pub.flutter-io.cn/即可。

最后执行 flutter doctor 会遇到 Unsupported operating system: android 的问题。

这是因为 flutter/packages/flutter_tools/lib/src/cache.dart 里面有个 getBinaryDirs 里面,只定义了 MacOS,Linux,Windows的 artifacts.zip 下载路径,没有 Android 的配置。

如果要临时把这个问题规避过去,可以参考 Linux 的配置方式配置一个 Android 的,但实际上最终要能在 Android 上编译 flutter 项目,还需要 flutter 官方支持 Android 平台,并且增加适合 Android 的 artifacts.zip,以及要有支持 Android Termux下运行的 Android SDK。还需要比较长的过程。

不过到目前为止,基于 Android + Termux + Code Server 的 VSCode flutter 代码编辑环境基本可以使用了。但目前仅仅是能编辑代码,如果希望能编译,可以关注flutter项目下面链接的 issue,去点赞关注,如果有这个需求的人多,也许什么时候 flutter 官方就会支持了,或者 flutter 也是开源的,社区也许能开发对android的支持。

 
上一篇:手机上安装ubuntu


下一篇:Termux