使用mainframer实现远端编译android apk

众多周知,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

Configure Mainframer in Project

打开之后,可以选择使用mainframer的版本,以及远端编译机器的名字, 和默认的编译命令。这里我设置为./gralew build(为什么不设置为./gralew assemble? 可以参考问答)。

注意修改红色框里的远端机器信息为你自己使用的远端机器信息

Configure Mainframer for Project

配置好之后,插件会自动下载mainframer插件,然后会看到一个弹窗,让我们选择配置模板,这里我们选择Android就可以了。(是的,mainframer不光只是用于android开发,也支持其它项目的开发)

config templates

最后在项目根目录下面,可以看到多了一个mainframer文件以及一个.mainframer目录, 里面包含了默认的配置信息,基本上足够我们日常使用了

# .mainframer目录结构
$ tree .mainframer
.mainframer
├── config
├── ignore
├── localignore
└── remoteignore

0 directories, 4 files

注入mainframer到编译选项中

默认情况下,当我们写好代码,点击Run按钮的时候,Android Studio实际执行的任务是依次是: Gradle-aware Make,安装APK,运行APK。

Before

注入mainframer之后,效果如下:

After

Before launch的操作由原来的Gradle-aware Make变成了Mainframer Make。现在我们点击Run按钮之后,它会自动将代码同步到远端机器编译,然后将编译生成的APK拷贝回来,再自动执行后续的安装,启动等任务。是不是很方便呢?

注入的具体操作如下:

依次打开Tools->Maineframer->Inject or resotore Configurations

inject

然后选择要注入的模板,上面是已经创建好的编译配置。下面是Android Studio自带的模板。 选择需要注入的配置即可。后面也可以随时来取消选择,将注入的模板还原回去。


image

另外我们也可以自己添加Mainframer运行配置

custom add

在远端和本地编译直接切换

插件安装好之后,在工具栏可以看到一个蓝色的按钮,通过它,我们可以随时切换在远端编译还是本地编译,非常方便。

switch

插件的日常使用主要也就这些了,快去体验一下吧!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 207,248评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,681评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,443评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,475评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,458评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,185评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,451评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,112评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,609评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,083评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,163评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,803评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,357评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,357评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,590评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,636评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,925评论 2 344

推荐阅读更多精彩内容