При запуске emulator (см. Appium: Android Virtual Device, Original error: Condition unmet after 60159 ms и костыль) — возникает ошибка qt_setup.cpp:28:Qt library not found:
[139824804910912]:ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt library not found at ../emulator/lib64/qt/lib
Could not launch ‘/home/projectname/projectname/../emulator/qemu/linux-x86_64/qemu-system-i386’: No such file or directory
Девайс запускается из Jenkins-джобы:
node('android') {
stage('Run UI tests') {
ws('/home/projectname/projectname') {
sh '/usr/local/bin/appium -p 4723 --session-override > /home/projectname/appium.log &'
sh "emulator -avd Nexus_5X_API_26 &> /home/projectname/emulator.log &"
sleep 10
sh "cd /home/projectname/projectname"
git branch: 'master', poll: false, url: '[email protected]:projectname-dev/projectname.git'
sh 'mvn clean -Dmaven.test.failure.ignore=false test -P linux-emulator-8.0'
sh 'pkill -f appium || true'
sh "adb -e emu kill"
}
}
}
После чего в логе /home/projectname/emulator.log видна ошибка.
Проблема возникает из-за того, что файл qemu-system-i386 ищется по относительному пути от точки запуска, т.е. в /home/projectname/projectname/../emulator/, в то время как он находится в:
[simterm]
projectname@projectname-ci:~$ find /android/ -name qemu-system-i386 /android/Android/sdk/emulator/qemu/linux-x86_64/qemu-system-i386
[/simterm]
Решение — запускать эмулятор непосредственно из каталога, где расположен emulator, в нашем случае это /android/Android/sdk/tools (продолжаем костылить 🙂 ).
Обновляем запуск, добавляем cd:
node('android') {
stage('Run UI tests') {
ws('/home/projectname/projectname') {
sh '/usr/local/bin/appium -p 4723 --session-override > /home/projectname/appium.log &'
sh "cd /android/Android/sdk/tools/ && emulator -avd Nexus_5X_API_26 &> /home/projectname/emulator.log &"
sleep 10
sh "cd /home/projectname/projectname"
git branch: 'master', poll: false, url: '[email protected]:projectname-dev/projectname.git'
sh 'mvn clean -Dmaven.test.failure.ignore=false test -P linux-emulator-8.0'
sh 'pkill -f appium || true'
sh "adb -e emu kill"
}
}
}
Запускаем джобу, проверяем наличие эмулятора:
[simterm]
projectname@projectname-ci:~$ ps aux | grep emul projectname 4488 351 5.8 3617872 950528 ? Sl 13:28 1:06 /android/Android/sdk/tools/../emulator/qemu/linux-x86_64/qemu-system-i386 -avd Nexus_5X_API_26 projectname 4492 0.0 0.1 109240 19644 ? Sl 13:28 0:00 ../emulator/emulator64-crash-service -pipe 4 -ppid 4488 -data-dir /tmp/android-projectname/19d6f7a7-76a2-43cc-b00f-38908ac47013 projectname 4741 358 3.0 7464340 505244 ? Sl 13:28 0:14 /usr/lib/jvm/java-8-openjdk-amd64/bin/java -classpath /usr/share/maven/boot/plexus-classworlds-2.x.jar -Dclassworlds.conf=/usr/share/maven/bin/m2.conf -Dmaven.home=/usr/share/maven -Dmaven.multiModuleProjectDirectory=/home/projectname/projectname org.codehaus.plexus.classworlds.launcher.Launcher clean -Dmaven.test.failure.ignore=false test -P linux-emulator-8.0
[/simterm]
Готово.




