oynix

于无声处听惊雷,于无色处见繁花

Linux配置Android打包环境

无奈于GP上动不动就账号关联,为了尽量撇清账号间的关系,所以一直选择远程机器打包。

远程机器,一般就是在云服务商那里启动的EC2实例,按系统类型可分为两大类:Windows和Linux。Windows的方式和本地开发几本一致,用个远程桌面工具登录到远程,然后用Android Studio打包即可,这个过程和以前上网吧有着些许熟悉的味道。

而Linux系统,则没有图形化的界面,主要还是靠命令行,下面说说都需要做哪些事情。

1. 系统镜像

如果选用标准镜像的话,那基本就是个空白系统,具体要看服务商提供种类。我用的Amazon Linux,里面甚至连python3都自带,但就是不带java,猜测可能和甲骨文的使用许可有关,这家公司大概准备啃java啃到老,坐吃山空,所以现在多数都用openjdk,而不是jdk。

关于CPU架构,建议用x86_64,而不是arm64,因为Android官方的一些build-tools对arm的支持还不是很友好。比如,在arm64上,就没有自带的androd emulator,这个东西是安装其他build-tools的基础依赖,没有它就装不上。但也不是所有的版本都如此,build-tools 31之后的就没有这个限制,如果你用的30,那么就不可。

2. 远程连接

以下的所有操作,均是通过ssh命令连接到远程机器。当然,除了ssh还有一些其他方式,比如PuTTY,等。

3. 安装java

如上面所言,如果没有java环境,那么需要手动自己安装,我是通过yum装的

1
yum search jdk

运行后会列出所有可用的jdk,前面是名字,后面是简介,注意区分JRE和JDK,我开始装的是JRE,但是编译kotlin时报错,写的很明显,它想要的是JDK而不是JRE。安装的话,使用install命令,卸载使用remove命令

1
yum install java-1.8.0-openjdk-devel.x86_64

安装完成之后,增加java home环境变量,通过yum安装的一般都是在/usr/lib/jvm下,也可以通过命令查找

1
java -XshowSettings:properties -version

这个命令会输出java相关的所有属性,其中就有java home这一项,以JAVA_HOME的名字添加到.bash_profile文件中即可。

4. 安装sdkmanager

Android Studio的下载页面也提供了command line tools的下载链接,地址在这:https://developer.android.com/studio,复制其中linux版本的下载地址(截止到我现在写的时候,最新的版本的是7.0,下载地址),到Linux机器上用wget命令,分分钟就下完了,解压之后就是sdkmanger命令工具。

sdkmanager命令在使用时,需要指定一个sdk的路径,很麻烦,如果按照它推荐的方式创建目录则可以一劳永逸。打开自己本地的android sdk目录,不难发现它的结构是这样的

1
2
3
4
android-sdk
|--build-tools
|--cmake
|--cmdline-tools

sdk目录下是各种工具,再进入一层,就是不同的版本,所以,就要按照这个结构创建目录即可。先创建个文件夹,起名叫android-sdk,这个就是ANDROID_HOME,要把它配置到.bash_profile中,在android-sdk下创建目录cmdline-tools,在cmdline-tools中创建目录latest,表示最新版,然后把刚解压出来的文件和文件夹都放到这里面。

build-tools的打包时可根据需要自动安装,但是platforms不行,因为里面有个协议,需要手动同意才能继续,sdkmanger命令在latest/bin下,可以把这个目录添加到.bash_profile中,这样使用时就不用输入前面那一串了。

列出所有可以安装的工具,第一列是名称,后面的是版本和简介,安装时使用名称即可

1
sdkmanager --list

安装平台30,卸载使用sdkmanager --uninstall "name"

1
sdkmanager "platforms;android-30"

5. 打包

将本地代码复制到远程机器,可用过scp命令,在远程机器上使用gradle相关的命令即可

1
2
3
4
5
# apk
./gradlew assembleRelease

# aab
./gradlew bundleRelease
------------- (完) -------------
  • 本文作者: oynix
  • 本文链接: https://oynix.com/2022/07/06840e78224e/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

欢迎关注我的其它发布渠道