Linux部署Android打包环境
一.配置JDK、Gradle、Git环境
1.安装Java环境
(1.)通过apt-get安装Java环境
1 | apt-get update |
(2.)通过软件包安装Java环境
- 下载JDK下载地址。
- 解压安装包。
- 配置环境变量。
1
2
3
4
5
6
7
8
9
10$ mv jdk1.8.0_161 /usr/local/
$ ln -s /usr/local/jdk1.8.0_161 /usr/local/jdk
$ vim /etc/profile #配置JDK的环境变量
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
$ source /etc/profile #重新加载系统环境变量
$ java -version #查看java版本如果vim无法粘贴文本可以用shift+insert试试
2.安装Gradle环境
- 创建安装文件夹。
1
mkdir gradle
- 进入Gradle文件夹下载Gradle。
1
wget https://downloads.gradle-dn.com/distributions/gradle-6.5-bin.zip
- 解压。
1
unzip gradle-6.5-bin.zip
- 配置环境变量。
1
2
3
4
5
6
7$ vim /etc/profile #配置Gradle的环境变量
export GRADLE_HOME=/gradle
export PATH=$PATH:$GRADLE_HOME/gradle-6.5/bin
$ source /etc/profile #重新加载系统环境变量
$ gradle -v #查看gradle版本注意gradle版本发布太快,每一个版本都需要配置一个环境变量,因此实际开发中我们一般使用gradle_wrapper来对gradle进行配置。
3.安装git环境
- 安装git。
1
apt install git
- 查看git版本。
1
git --version
二.配置Android环境
配置android编译环境有两种方式:
- 将Android编译需要用到的工具在宿主机上面下载好,通过xftp等方式复制到容器中然后配置。
- 在docker容器中自行下载配置。
第一种方式非常简单我们这里详细讲解一下第二种方式。
1. 进入Dokcer容器
以root用户登录docker容器:
1 | sudo docker exec -it -u root ec33c19230ca /bin/bash |
2.创建Android_Sdk安装文佳夹
在合适的目录创建文件夹(例如根目录)创建文件夹 /android/sdk:
1 | mkdir -p /android/sdk |
3.安装wget下载包
- Debian/Ubuntu系统安装wget:
1
2apt-get update
apt-get -y install wget - CentOS系统安装wget:
1
yum install wget -y
4.下载sdkmanager工具包
1 | wget https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip |
查看最新版本
官网
5.解压缩sdkmananger工具包
1 | unzip xxxxxxxx.zip |
解压完成我们会看到有一个cmdline-tools文件夹,此时的目录结构为:
1 | /android/sdk/cmdline-tools |
6.调整目录结构
如果解压以后直接cd到/cmdline-tools/bin/
执行./sdkmanager --version
会报以下错误:
1 | Warning: Could not create settings |
因此我们需要对目录结构做一些调整:
1 | mv /android/sdk/cmdline-tools /android/sdk/last |
最终如下目录结构如下:
1 | /android/sdk/cmdline-tools/last |
7.修改环境变量
因为没有配置sdkmanager的环境变量,所以每次都要进入cmdline-tools/last/bin
文件夹才能执行sdkmanager脚本的操作,因此我们需要先对sdkmanager进行环境变量的配置:
- 打开环境变量文件
1
vim /etc/profile
- 添加sdkmanager的环境变量
1
2export ANDROID_HOME=/android/sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/last/bin - 刷新环境变量
1
source /etc/profile
- 查看环境变量配置好以后就可以在任何地方都可以使用sdkmanager脚本了.
1
echo $PATH
8.下载android_sdk
sdkmanagersdkmanager --list
:可以看到列出的AndroidSDK一系列工具包,包括已安装和未安装的包。
如果要安装某个包,比如platform下的android-29的版本的包:
1 | sdkmanager "build-tools;29.0.0" "platforms;android-29" "platform-tools" |
如果要删除已经下载的包,比如platform下的android-29的版本的包:
1 | sdkmanager --uninstall "platforms;android-29" |
如果国内下载速度太慢,可以配置一下国内的镜像:大连东软信息学院镜像服务器地址: http://mirrors.neusoft.edu.cn 端口:80
1 | sdkmanager --list --no_https --proxy=http --proxy_host=mirrors.neusoft.edu.cn --proxy_port=80 |
此时sdk目录下的文件结构如下:
1 | ├── build-tools |
9.配置Android打包工具及sdk的环境变量
- 打开环境变量文件:
1
vim /etc/profile
- 添加sdkmanager的环境变量:
1
2export ANDROID_HOME=/android/sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/last/bin:$ANDROID_HOME/build-tools:$ANDROID_HOME/platfrom-tools:$ANDROID_HOME/tools - 刷新环境变量(新开终端生效,或者手动source /etc/profile生效):
1
source /etc/profile
- 查看环境变量:查看android环境变量:
1
echo $PATH
1
android
至此Android打包环境就配置好了。
如果Android项目工程的sdk版本众多,无需给每一个版本都配置一个环境变量,只需要创建 local.properties文件在里面写上sdk的目录,则会gradle自动会去sdk目录找合适的sdk版本。
三.打包Android安装包
通过全局Gradle打包
- 通过git将代码工程拉下来,进入项目的根目录,执行打包命令:
1
2gradle assembleRelease(打包成Release版本)
gradle assembleDebug(打包成Debug版本) - 打包编译完成,在项目的app/build/outputs/apk中可以找到debug版本或者是release版本。
Android项目用GradleWapper打包
进入Android项目根目录,有三个文件:
文件 | 含义 |
---|---|
gradlew | Unix脚本(支持Linux/MacOS) |
gradlew.bat | Win脚本 |
gradle/wrapper/gradle-wrapper.jar | gradle-wrapper核心jar |
gradle/wrapper/gradle-wrapper.properties | gradle-wrapper配置文件。 |
linux: |
1 | ./ gradlew version |
windows:
1 | gradlew version |
如果linux报错:
1 | ./gradlew: Permission denied |
运行:
1 | chmod +x gradlew #添加所有用户都有执行gradlew的权限 |
Gradle Wrapper(以下简写为“Wrapper”)
用于管理当前项目的Gradle版本,Gradle官方强烈推荐使用Wrapper构建项目。多人协作时,必须规定项目的Gradle版本,并以此版本的Gradle作为项目的构建工具,由于每个人在本地安装的Gradle版本可能并不一致(也没有必要一致),因此有必要在项目中统一管理Gradle版本。
Wrapper的文件结构如下(项目根目录中):
1 | ├── build.gradle |
包括一个gradle文件和两个可执行的脚本文件gradlew(macOS等平台用)和gradlew.bat(Windows平台用)。
- gradle-wrapper.jar:用于下载所需版本的Gradle。
- gradle-wrapper.properties:配置Gradle的版本号、本地存储地址等。各属性说明请见官方文档。
- gradlew, gradlew.bat:Wrapper的执行脚本,用于替代gradle命令来构建项目。
注意:gradle-wrapper.properties中有一个distributionUrl属性,用于定义Gradle版本地下载URL,如distributionUrl=https://services.gradle.org/distributions/gradle-4.0-all.zip,版本号后面有个“-all”,有时你也可能看到“-bin”,是什么意思?”-all”表示会下载此版本Gralde的所有的资源,包括二进制运行时文件、示例代码和相关文档。“-bin”表示只下载二进制运行时文件。
Wrapper 构建项目时,其工作流程如下:
- 检查规定的Gradle版本,如果没有则去服务器下载。
- 下载的Gradle版本存储在Gradle的用户目录中。如macOS中默认存储所有的Gradle版本到/Users/yourname/.gradle/wrapper/dists/中。
- 使用解压后的Gradle版本来构建项目。