# 在CentOS 7下构建安卓Android编译环境
根据安卓开发的需求实现流程
1.安卓开发工程师本机开发
2.提交Git仓库-master分支
3.jenkins手动打包(可实现自动),进入后台 http://192.168.1.8:9091/
执行任务:
打包服务器拉取最新git仓库代码
进入项目目录执行
./gradlew :launcher:assembleRelease
4.将生成的apk包cp到 http://android.XXXX.ltd WEB目录,安卓研发下载apk包
5.测试
6.上线投放
2
3
4
5
6
7
8
9
10
分三篇文章讲解
1.CentOS7下构建安卓Android编译环境 (opens new window)
2.CentOS7下安装Jenkins (opens new window)
3.基于centos7的jenkins安卓自动打包 (opens new window)
在 Android Studio 之外,还可以通过 Gradle Script 来编译 Android 项目并构建和测试应用。 本文是一个备忘录,以记录我在 x86_64 GNU/Linux 系统 CentOS Linux release 7.8.2003 下折腾 Android 编译环境的一个过程。
本文将会安装以下组件:
Git
JDK 1.8
Go 1.14.7
Android SDK
Android NDK
Rust 1.45.0
Android Targets:
armv7-linux-androideabi
aarch64-linux-android
i686-linux-android
x86_64-linux-android
2
3
4
5
6
7
8
9
10
11
以下的所有过程均是在 root 用户下操作。
# 1. 安装 Git 和 JDK 1.8
这两个组件发行版自带,通过以下命令即可安装。与此同时,再安装一些其他必要的组件 wget 和 unzip。
$ yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel wget unzip git
完成后通过以下命令验证 JDK 版本号。
$ java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
2
3
4
5
$ javac -version
javac 1.8.0_252
2
# 2. 安装 Go
目前 Go 的最新版是 1.14.7。安装过程如下。
$ GO_VERSION=1.14.7
$ wget -O /tmp/go${GO_VERSION}.tar.gz http://js.funet8.com/centos_software/go${GO_VERSION}.linux-amd64.tar.gz
$ tar -C /usr/local -xzf /tmp/go${GO_VERSION}.tar.gz
$ rm -fv /tmp/go${GO_VERSION}.tar.gz
$ export PATH=/usr/local/go/bin:$PATH
2
3
4
5
完成后通过以下命令验证 Go 版本号。
$ go version
go version go1.14.7 linux/amd64
2
# 3. 安装 Android SDK 及 Android NDK
假设 ANDROID_HOME
路径是 /data/sdk
。安装过程如下。
$ mkdir -p /data/sdk && cd /data/sdk
$ wget http://js.funet8.com/centos_software/commandlinetools-linux-6609375_latest.zip
$ unzip -q commandlinetools-linux-6609375_latest.zip
$ rm -fv commandlinetools-linux-6609375_latest.zip
$ export PATH=/data/sdk/tools/bin:$PATH
$ [ -z "${ANDROID_HOME}" ] && export ANDROID_HOME=/data/sdk
$ yes | sdkmanager --sdk_root=${ANDROID_HOME} --licenses
2
3
4
5
6
7
通过 sdkmanager
来安装一些组件。一条命令一步到位。如下。
$ sdkmanager --sdk_root=${ANDROID_HOME} "platform-tools" "platforms;android-30" "platforms;android-29" "ndk-bundle" "ndk;21.0.6113669" "build-tools;29.0.2"
完成后,确认已安装的列表。
$ sdkmanager --sdk_root=${ANDROID_HOME} --list
Installed packages:
Path | Version | Description | Location
------- | ------- | ------- | -------
build-tools;29.0.2 | 29.0.2 | Android SDK Build-Tools 29.0.2 | build-tools/29.0.2/
ndk-bundle | 21.3.6528147 | NDK | ndk-bundle/
ndk;21.0.6113669 | 21.0.6113669 | NDK (Side by side) 21.0.6113669 | ndk/21.0.6113669/
patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/
platform-tools | 30.0.3 | Android SDK Platform-Tools | platform-tools/
platforms;android-29 | 4 | Android SDK Platform 29 | platforms/android-29/
platforms;android-30 | 1 | Android SDK Platform 30 | platforms/android-30/
tools | 2.1.0 | Android SDK Tools 2.1 | tools/
Available Packages:
以下省略
2
3
4
5
6
7
8
9
10
11
12
13
14
# 4. 安装 Rust 及其它
目前 Rust 的最新版是 1.45.0。安装过程如下。
$ export RUSTUP_HOME=/usr/local/rustup CARGO_HOME=/usr/local/cargo
$ RUST_VERSION=1.45.0
$ RUSTARCH='x86_64-unknown-linux-gnu'
$ wget -O /tmp/rustup-init "https://static.rust-lang.org/rustup/archive/1.21.1/${RUSTARCH}/rustup-init"
$ chmod 755 /tmp/rustup-init
$ /tmp/rustup-init -y --no-modify-path --profile minimal --default-toolchain $RUST_VERSION
$ rm -fv /tmp/rustup-init
$ chmod -R a+w ${RUSTUP_HOME} ${CARGO_HOME}
$ export PATH=/usr/local/cargo/bin:$PATH
2
3
4
5
6
7
8
9
完成后通过以下命令验证 Rust 及组件的版本号。
$ rustup --version
rustup 1.21.1 (7832b2ebe 2019-12-20)
2
$ cargo --version
cargo 1.45.0 (744bd1fbb 2020-06-15)
2
$ rustc --version
rustc 1.45.0 (5c1f21c3b 2020-07-13)
2
Rust 安装以下 Android Targets:
armv7-linux-androideabi
aarch64-linux-android
i686-linux-android
x86_64-linux-android
2
3
4
安装过程如下。
$ rustup install stable
$ rustup default stable
$ rustup target add armv7-linux-androideabi
$ rustup target add i686-linux-android
$ rustup target add aarch64-linux-android
$ rustup target add x86_64-linux-android
2
3
4
5
6
# 5. 持久化环境变量
上面的安装步骤是通过 export 来定义系统 PATH 的,在退出当前登录后就会丢失设置。
因此需要持久化一些环境变量。
编辑 ~/.bash_profile
文件。添加 ANDROID_HOME
,RUSTUP_HOME
,CARGO_HOME
的定义以及增加 PATH
定义。
最后呈现内容如下。
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export ANDROID_HOME=/data/sdk RUSTUP_HOME=/usr/local/rustup CARGO_HOME=/usr/local/cargo
PATH=$PATH:$HOME/bin:$ANDROID_HOME/tools/bin:/usr/local/go/bin:/usr/local/cargo/bin
export PATH
2
3
4
5
6
7
8
9
10
11
12
13
14
# 6. 编译 Android 项目
这里选一个比较简单的项目来练手:v2ray-plugin-android (opens new window)。 编译过程如下。
$ git clone https://github.com/shadowsocks/v2ray-plugin-android.git
$ cd v2ray-plugin-android
$ git submodule update --init --recursive
$ ./gradlew assembleRelease
2
3
4
完成后,编译好的 apk 文件位于 app/build/outputs/apk/release
路径下。
Android 系统要求所有 apk 必须先使用证书进行数字签名,然后才能安装到设备上或进行更新。
因此这些 apk 文件还不能被直接拿来安装。
至于如何签名,请参考以下链接,过程省略。
https://developer.android.com/studio/publish/app-signing
# 7. 总结
当你习惯于用命令行做事的时候,你会发现效率往往会有很大的提升。编译代码亦是如此。