使用Jenkins自动构建Android,遇到几个坑:
1.使用gradle build的时候提示无法从jcenter下载资源
解决方法:安装Android SDK时,需要选中Extra中的repository
2.jenkins执行build工程时控制台出现Could not load Logmanager "org.apache.juli.ClassLoaderLogManager"错误
解决方法:注释或删除$JENKINS_HOME/apache-tomcat/bin/daemon.sh中的以下部分
# Set juli LogManager config file if it is present and an override has not been issued
if [ -z "$LOGGING_CONFIG" ]; then
if [ -r "$CATALINA_BASE/conf/logging.properties" ]; then
LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
else
# Bugzilla 45585
LOGGING_CONFIG="-Dnop"
fi
fi
test ".$LOGGING_MANAGER" = . && LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER"
同时在注释# ----- Execute The Requested Command -----------------------------------------的后续脚本中,删掉"$LOGGING_CONFIG"
3.运行$ANDROID_HOME/build-toos/23.0.1/aapt时出现No such file ....错误
解决方法:缺少32bit的库文件或包,根据提示使用yum install安装相应的包即可
4.build过程出现Could not create service of type InitScriptHandler using BuildScopeServices.createInitScriptHandler()
解决方法:在build选项中加入--stacktrace,从错误提示中发现无法创建$JENKINS_HOME/.gradle目录,由于jenkins是root用户安装,没有给tomcat用户授权,使用chown授权给tomcat用户即可
5.其他权限不足等情况
解决方法:jenkins使用用户tomcat执行脚本,根据提示信息授权即可
总结
解决问题,需要根据错误提示或者日志输出定位问题所在,有时候错误提示不够清晰时,可以添加--debug --statcktrace等参数获取进一步的信息。
凭经验,通过猜测,能解决问题那是最好的,不过,对于大多数人或者大多数情况来说,根据日志,确定问题所在再行处理才是解决问题的正道。