先说下作这件事的初衷,领导打算搞先后端的自动化部署打包,原本后端就是用rundeck 自动化部署的,若是把android项目的pull代码,编译,打包,自动上传到服务器也都整成流水线的形式,就须要在服务器上配置下android的环境了,不须要开发,android studio 或者idea intellij就不须要了,但为了能编译:sdk,ndk,jdk,gradle,git等东西仍是得装。html
在安装环境的时候我必然先查阅下相关资料,看看有没有其余小伙伴有经验,可是参考的相关文章太多,不够综合,遇到了不少问题,我仍是把本身总结的发出来,供你们参考。java
CentOS(Community Enterprise Operating System,中文意思是:社区企业操做系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。因为出自一样的源代码,所以有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。二者的不一样,在于CentOS并不包含封闭源代码软件。node
为了避免直接在服务器上部署时出现大问题,我先在本机环境(mac)上进行测试,安装了virtual Box模拟器,下载了个ova格式的CentOS镜像文件直接使用。
virtualBox比较好找,我就只附个centos镜像下载地址吧:
centos下载
我下载的是7.1版本python
简略virtualBox导入镜像文件的过程,只是注意上边的地址里已经标明了默认用户的密码root/reverse,若是你下载了带gnome界面的版本,也能够不用管它,桌面上右键打开命令行,由于咱们真实服务器上是没有界面的,只是为了模拟这个过程,顺便回忆下Linux命令linux
由于虚拟机内速度较慢,而且如过用到了鼠标操做再切回本身的主机须要按住command 键,鼠标才能回来,比较麻烦,效率也低,因此咱们直接在本身的mac电脑上远程操做centos,窗口大小也能够随意控制。android
先在centos上输入命令查看ip地址:c++
ifconfig复制代码
结果为:
git
如今打开你的mac终端输入github
ssh root@192.168.1.104复制代码
而后回车会提示输入密码,密码在下载页面上,上文提到了,是:reverse,而后回车你就远程登陆了centos,而后最小化virtualBox和centos界面,剩下的就在你的终端上操做就能够了。shell
注:1 设置virtualBox的时候要设置网卡为桥接模式,否则有可能你会远程登陆失败
2 假如你开机后登陆的是非root帐户,能够用
su root复制代码
来切换到root帐户下,这样会减小一些权限上的麻烦,固然咱们的前提都是模拟安装android环境,在真实场景中不要这么干
centos上通常会默认安装jdk,因此先查看下已安装的版本是否是你想要的
java -version复制代码
若是是的话,直接跳过这一节,不然能够继续往下看;
输入命令查看所安装JDK的包的状况,这一步是为了将你不须要的版本卸载干净
rpm -qa|grep java复制代码
结果多是这样的:
javapackages-tools-3.4.1-6.el7_0.noarch
java-1.7.0-openjdk-headless-1.7.0.71-2.5.3.1.el7_0.x86_64
python-javapackages-3.4.1-6.el7_0.noarch
tzdata-java-2014i-1.el7.noarch
java-1.7.0-openjdk-1.7.0.71-2.5.3.1.el7_0.x86_64复制代码
由于我想要安装jdk8 ,因此先删除上边的东西:
sudo rpm -e --nodeps xxx xxx xxx xxx xxx复制代码
xxx是上边列出的五个文件名,中间用空格隔开;
查看你的centos具体版本,
uname -i复制代码
若是是x86_64那就是64位,若是是i386那么就是32位,而后去oracle官网下载对应版本
附oracle jdk地址:oracle
我是先在mac上下载好安装zip包,而后经过命令复制到centos上
scp jdk-8u144-linux-i586.tar.gz root@192.168.1.104:/你自定义的文件夹路径复制代码
注意上边的命令不是在远程登陆的窗口上,你须要新开启个你本机的终端窗口,两个环境不要弄混
而后在cd到上述的路径下,unzip命令解压便可。
至于我为何不直接在centos里下载,由于我不知道怎么获取jdk包的下载地址,经过在oracle官网上右键:复制出的下载地址实际上是个网页,有会的朋友能够教我。
而后,配置你jdk8的环境变量,打开profile文件
vi /etc/profile复制代码
这个文件是系统级别的,全部帐户均可以使用,而后将下列复制到这个文件末尾
#设置jdk环境变量
JAVA_HOME=/home/centos/Desktop/java/jdk1.8.0_144
JRE_HOME=/home/centos/Desktop/java/jdk1.8.0_144/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH复制代码
其中相应路径改为你本身的,而后esc,:wq退出
为了使用环境变量生效,输入:
source /etc/profile复制代码
而后再测试下
java -version复制代码
附:关于openJDK和 普通JDK的区别
openJDK
新建个目录(随意,能够不建,只是为了便于管理你本身的文件),而后下载sdk包
mkdir android复制代码
wget http://dl.google.com/android/android-sdk_r24.0.1-linux.tgz复制代码
上边的wget是下载目录,后边跟上一个下载地址便可。若是下载缓慢你可能须要翻~~墙了,下载完毕后解压:
tar xvzf android-sdk_r24.0.1-linux.tgz复制代码
解压完毕别忘了删除压缩包,由于比较大,占空间,保留解压后的sdk文件夹就行了
rm -rf android-sdk_r24.0.1-linux.tgz复制代码
cd进入这个sdk目录,你可能发现没有platform-tools等相关文件,对,如今这个sdk就是个空壳子,连adb都没有,你须要手动更新,
在UI模式下运行,须要安装canberra-gtk-module
yum install libcanberra-gtk2复制代码
在64位的机器上运行android的工具须要安装一些32位的库:
yum install glibc.i686 libgcc.i686 libstdc++.i686复制代码
若是在安装libgcc的时候提示版本冲突,请更新系统:
yum update复制代码
若是在前面的安装中disable掉了/etc/yum.repo/CentOS-Base.repo,升级的时候须要恢复它,或用
yum -c yum_repo_file复制代码
加上这个库。
如今cd进入sdk/.../tools 目录下,咱们要模拟sdk manager进行sdk的更新了,由于没有图形界面,只能用命令行:
执行
./android list sdk --all复制代码
这个目录就是列出全部的sdk,build-tools,source等文件,一样可能须要翻~~墙,下图为结果
而后执行命令选择你想要的包进行安装,若是想安装多个,选择上图的序号,用空格隔开:
./android update sdk -u -a -t 1,2,4,6,8复制代码
而后通过漫长的等待,安装完毕
配置环境变量,方法同jdk
#设置android环境变量
export ANDROID_SDK_HOME=/home/centos/Desktop/android/android-sdk-linux
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ANDROID_SDK_HOME/tools:$ANDROID_SDK_HOME/platform-tools复制代码
而后测试下adb命令或android命令吧
由于个人项目中用到了jni,因此须要安装下
先上个官方地址:官方ndk
能够本身去找对想要的版本。
新建目录,而后下载ndk, 最后解压
mkdir ndk复制代码
wget https://dl.google.com/android/repository/android-ndk-r15c-linux-x86_64.zip复制代码
unzip android-ndk-r15c-linux-x86_64.zip复制代码
我没有设置ndk的环境变量,暂时没用到。
下载
wget https://services.gradle.org/distributions/gradle-2.8-bin.zip复制代码
解压,配置,环境变量,不啰嗦了
yum install git复制代码
这个好,直接安装,环境变量都不用配置了
环境大体搭建完成,若是想测试下的能够用github里的项目。
首先你有个github帐号,登陆,而后在centos里生成ssh key公钥
ssh-keygen -t rsa -C "your_email@youremail.com复制代码
一路回车,最后查看你的公钥:
cd ~/.ssh复制代码
ls复制代码
列出的文件后缀为pub的即你的公钥文件,打开它:
tail xxx复制代码
复制出来粘贴到你的github的 key设置里,而后你就能够clone 下你的项目,用gradle进行编译了
gradle build复制代码
编译项目的时候我遇到了若干问题:
1 提示缺乏对应的build-tools或者sdk版本,去上边找sdk的安装步骤,下载你缺乏的组件
2 提示 You have not accepted the license agreements of the following SDK components
这是由于你下载的sdk目录下缺乏受权文件,对比你本机的sdk路径下去生成:
在 sdk 根目录下创建文件夹licenses,文件夹下创建文件android-sdk-license,内容为:8933bad161af4178b1185d1a37fbf41ea5269c55复制代码
3 提示ndk not configured
咱们平时的项目根目录下会有一个文件:local.properties
这个文件是android studio生成的,但咱们如今没有安装as,只能本身手动建立了
cd 到project 根目录下,
touch local.properties复制代码
而后进入编译:
vi local.properties复制代码
内容去你平时项目里找,记得填写正确了sdk和ndk的路径
内容大概就是这么多,此文的目的只是为了介绍在没有界面的状况下如何搭建android环境,毕竟平时那些安装包都是android studio帮咱们自动下载的,不熟悉Linux的同窗会有些难受。
自动化部署的话也能够用到rundeck,这是个执行脚本的工具而已,将你的git pull,gradle build等相关命令写成shell脚本,而后用rundeck跑一遍就成了自动化部署,相关详细内容之后能够单独描述一篇。
另外,发现掘金的博客的书写方式竟然是markdown 格式的,大赞,很方便。
最后附上个人github,欢迎捧场:
个人github