无奈于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 | android-sdk |
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 | apk |