众多周知,android开发中,每次编译APK的时间都是比较长的,尤其是在本地机器配置较差的情况下,编译一次的时间就更长了。通过mainframer
,我们可以实现在本机开发的同时,使用一个远端机器(拥有高配置的机器)编译代码,然后自动将编译结果同步到本地,再自动执行安装,调试等任务。整个过程就跟在本机编译一样,不仅可以大大节约编译时间,也可以降低对开发机器的配置要求。
如果是在团队,搭建这样一个环境,让所有人开发人员共用,可以提高整个团队的开发效率,实乃开发必备的神器。
借助docker
,我们可以非常方便地快速搭建一套远端的编译环境。
远端编译环境配置
直接使用docker镜像,可以让你轻松搞定远端的配置
镜像源码:
https://github.com/crazygit/mainframer-docker.git
方法一: 直接使用
这种方式适合远端编译机器处于网络条件较好,能自由畅游网络的情况下。
$ docker run -p 2200:22 -d crazygit/mainframer
方法二: 配合gradle本机缓存以及阿里云镜像使用
在编译过程中,会下载很多依赖包,由于众所周知的原因,我们需要使用各种源镜像才能流畅编译
$ docker run \
-p 2200:22 \
-v ${HOME}/.gradle:/root/.gradle \
-v $(pwd)/mirror/init.gradle:/root/.gradle/init.gradle \
-v $(pwd)/mirror/sources.list:/etc/apt/sources.list \
-d crazygit/mainframer
方法三: 使用docker-compose
上面命令太长了,使用docker-compose
简化下。
$ git clone https://github.com/crazygit/mainframer-docker.git
$ cd mainframer-docker
$ docker-compose up -d
ssh
连接容器
ssh连接容器, 默认用户名和密码为root/root
$ ssh -p 2200 root@localhost
客户端配置
命令行使用
请参考项目文档,当前稳定版本是2.x
版本
通过Android Studio插件使用(推荐)
ssh免密码登录配置
参考文档配置好本机能免ssh密码登录远端服务器,插件的原理就是使用rsync
命令,通过ssh
协议在远端和本地同步文件。
安装插件
可以通过Android Studio
插件中心搜索mainframer
安装插件,或者到项目发布页面下载插件再手动安装
插件初始配置
注意: 由于插件的配置只影响当前项目,所以每次新建项目都需要执行下面的配置操作
首先配置远端编译机器的信息, 在Tools
-> Mainframer
-> Configure Mainframer in Project
打开之后,可以选择使用mainframer
的版本,以及远端编译机器的名字, 和默认的编译命令。这里我设置为./gralew build
(为什么不设置为./gralew assemble
? 可以参考问答)。
注意修改红色框里的远端机器信息为你自己使用的远端机器信息
配置好之后,插件会自动下载mainframer
插件,然后会看到一个弹窗,让我们选择配置模板,这里我们选择Android
就可以了。(是的,mainframer
不光只是用于android
开发,也支持其它项目的开发)
最后在项目根目录下面,可以看到多了一个mainframer
文件以及一个.mainframer
目录, 里面包含了默认的配置信息,基本上足够我们日常使用了
# .mainframer目录结构
$ tree .mainframer
.mainframer
├── config
├── ignore
├── localignore
└── remoteignore
0 directories, 4 files
注入mainframer到编译选项中
默认情况下,当我们写好代码,点击Run
按钮的时候,Android Studio实际执行的任务是依次是: Gradle-aware Make
,安装APK,运行APK。
注入mainframer
之后,效果如下:
Before launch
的操作由原来的Gradle-aware Make
变成了Mainframer Make
。现在我们点击Run
按钮之后,它会自动将代码同步到远端机器编译,然后将编译生成的APK拷贝回来,再自动执行后续的安装,启动等任务。是不是很方便呢?
注入的具体操作如下:
依次打开Tools
->Maineframer
->Inject or resotore Configurations
然后选择要注入的模板,上面是已经创建好的编译配置。下面是Android Studio自带的模板。 选择需要注入的配置即可。后面也可以随时来取消选择,将注入的模板还原回去。
另外我们也可以自己添加Mainframer
运行配置
在远端和本地编译直接切换
插件安装好之后,在工具栏可以看到一个蓝色的按钮,通过它,我们可以随时切换在远端编译还是本地编译,非常方便。
插件的日常使用主要也就这些了,快去体验一下吧!