Jenkins Android构建失败-无法构建libwebviewchromium.so

时间:2018-12-12 19:19:03

标签: android jenkins android-source android-5.1.1-lollipop webviewchromium

需要一些建议或想法。

我正在尝试使用Jenkins构建Android 5.1.1 Lollipop。但是它无法构建libwebviewchromium.so:

...
out/target/product/generic/obj/GYP/shared_intermediates/blink/bindings/core/v8/V8SVGNumber.cpp:55: error: undefined reference to 'blink::SVGNumberTearOff::setValue(float, blink::ExceptionState&)'
out/target/product/generic/obj/STATIC_LIBRARIES/third_party_WebKit_Source_core_webcore_generated_gyp_intermediates/SVGElementFactory.cpp:383: error: undefined reference to 'blink::SVGMetadataElement::create(blink::Document&)'
external/chromium_org/third_party/WebKit/Source/core/svg/SVGNumberTearOff.h:45: error: undefined reference to 'blink::SVGNumberTearOff::SVGNumberTearOff(WTF::PassRefPtr<blink::SVGNumber>, blink::SVGElement*, blink::PropertyIsAnimValType, blink::QualifiedName const&)'
collect2: error: ld returned 1 exit status
make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libwebviewchromium_intermediates/LINKED/libwebviewchromium.so] Error 1

同时,当我尝试手动构建它时,它会成功:

. build/envsetup.sh
set_stuff_for_environment
lunch zh2_qemu_eng
make clean
make -j24

我想知道为什么使用控制台可以成功完成相同的操作,而使用Jenkins却无法成功完成相同的操作。您能和我分享您的想法吗?

P.S。该构建机器具有24 GB的RAM和15 GB的交换文件,以及512 GB的SSD闪存盘(62%可用)。操作系统是64位的Ubuntu 14.04LTS。

$ free -m
             total       used       free     shared    buffers     cached
Mem:         24021      22079       1942         75       4778       8768
-/+ buffers/cache:       8532      15488
Swap:        16036        345      15691

4 个答案:

答案 0 :(得分:5)

  

我想知道为什么使用控制台可以成功完成相同的操作,而使用Jenkins却无法完成相同的操作。

因为Jenkins可能不会以同一用户(或如果执行作业的代理是一台单独的机器,则在同一工作站上)运行

仔细检查以下各项之间是否存在环境变量差异

例如,LD_LIBRARY_PATH的不同可以解释两个版本之间的差异。

答案 1 :(得分:3)

确保在编译时已包含所有头文件库链接未定义引用错误主要是由于这两个原因引起的。

答案 2 :(得分:2)

用户jenkins拥有自己的~/.bashrc,可能缺少环境变量。

暂时为jenkins启用登录shell,设置环境,然后再次禁用它。

当能够以用户jenkins进行手动构建时,它也应该在自动化时进行构建。

答案 3 :(得分:1)

问题已解决。 我们从另一台服务器复制了Jenkins / AOSP设置,但是副本出了点问题。 ccache的清理解决了该问题。执行“ ccache -c”命令后,一切正常。