今天jenkins自动打包平台一直无法打出android的开发包,出于责(hao)任(sheng)心,来到console output页面查看错误信息。关键部分如下:
一看到这,心理小窃喜,这不是原来解决过的问题么,小菜一碟啦。参考我原来的解决方案,通过ssh连接到服务器后,输入android命令,结果出现了command not found问题。
[root@localhost ~]# android list sdk
-bash: android: command not found
这应该是jenkins服务器未设置ANDROID_HOME环境变量所致,需要先找到android sdk的安装路径。通过find / -name "android"顺利找到,在build-tools目录下继续运行android命令,新的错误出现了。
通过查找资料,可知这是由于buildToolsVersion版本与Java JDK版本不一致引起的。jenkins服务器环境变量中未配置JAVA_HOME,默认的java --version是1.7.0_45。
[root@localhost tools]# java -version
java version "1.7.0_45"
OpenJDK Runtime Environment (rhel-2.4.3.3.el6-x86_64 u45-b15)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
打开jenkins服务器的“系统管理-系统信息”面板,可看到jenkins服务器在编译时指定了1.8.0_131的版本进行编译。想到上述问题可以通过配置JAVA_HOME将默认的jdk改为1.8.0_131解决。
出于对jenkins服务器的保护,我选择在Shell下设置变量来解决。命令行如下:
[root@localhost tools]# export JAVA_HOME=/program/language/java/jdk1.8.0_131
[root@localhost tools]# echo $JAVA_HOME
/program/language/java/jdk1.8.0_131
[root@localhost tools]# java -version
java version "1.7.0_45"
OpenJDK Runtime Environment (rhel-2.4.3.3.el6-x86_64 u45-b15)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
[root@localhost tools]# export PATH=$JAVA_HOME/bin:$PATH
[root@localhost tools]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
继续执行android list sdk命令,一看返回结果傻眼了,这怎么和以前如此的不同。
悲催的继续开始查资料,原来从android-sdk 25.2.3开始google提供了新的工具sdkmanager来代替android命令。根据sdkmanager命令的说明文档,尝试以下两步骤进行包的安装。
- 1、通过sdkmanager --list查看所有已安装及可安装的包信息
- 2、通过sdkmanager "package path"安装包。其中package path来自于操作1返回的Path字段
sdkmanager "extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha9"
再次启动构建,ok啦。 付出努力,得到收获,很happy!
参考文档:
Error:java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major错误解决
How to install Android SDK Build Tools on the command line?
Linux安装JDK和配置环境变量
sdkmanager官方说明