Почему Jenkins Android Emulator Plugin воссоздает мои снимки эмулятора в каждой сборке?

Я использую Jenkins для создания одного из моих проектов. Плагин Android Emulator автоматически запускает эмулятор со следующей конфигурацией:

Конфигурация эмулятора

Конфигурация модуля эмулятора:

Настройка плагина эмулятора ,

Каждый раз, когда выполняется работа, я получаю следующий результат:

Erasing existing emulator data... $ /ci/home/tools/android-sdk//tools/emulator -no-boot-anim -ports 64470,64471 -prop persist.sys.language=de -prop persist.sys.country=DE -avd hudson_de-DE_240_480x720_Google_Inc._Google_APIs_8 -no-snapshot-load -no-snapshot-save -wipe-data . . shell input keyevent 4 [android] Giving the system some time to settle before creating initial snapshot... $ . . localhost:64471 shell log -pv -t Jenkins "Creating snapshot..." [android] Creating snapshot... $ 

Полный журнал ниже.

Кажется, что плагин каждый раз создает новый эмулятор и не использует моментальные снимки. Это занимает от 2 до 4 минут в зависимости от конфигурации эмулятора.

Плагин создает файлы .avd и .ini в каталоге .android / avd внутри папки задания. AVS не удаляются после запуска.

Если я отключу конфигурацию снимков использования, для запуска эмулятора потребуется меньше минуты.

Это проблема с плагином эмулятора или снимки невозможны из-за моей конфигурации?

Я надеюсь, что использование снимков ускорит мой процесс строительства.


Полный журнал:

 $ /ci/home/tools/android-sdk//tools/android list target [android] Using Android SDK: /ci/home/tools/android-sdk/ [android] Adding 200M SD card to AVD 'hudson_de-DE_240_480x720_Google_Inc._Google_APIs_8'... [android] Setting hardware properties: hw.ramSize: 512 $ /ci/home/tools/android-sdk//platform-tools/adb start-server $ /ci/home/tools/android-sdk//tools/emulator -snapshot-list -no-window -avd hudson_de-DE_240_480x720_Google_Inc._Google_APIs_8 [android] Starting Android emulator and creating initial snapshot [android] Erasing existing emulator data... $ /ci/home/tools/android-sdk//tools/emulator -no-boot-anim -ports 64470,64471 -prop persist.sys.language=de -prop persist.sys.country=DE -avd hudson_de-DE_240_480x720_Google_Inc._Google_APIs_8 -no-snapshot-load -no-snapshot-save -wipe-data * daemon not running. starting it now on port 64472 * * daemon started successfully * $ /ci/home/tools/android-sdk//platform-tools/adb connect localhost:64471 [android] Waiting for emulator to finish booting... $ /ci/home/tools/android-sdk//platform-tools/adb -s localhost:64471 shell getprop dev.bootcomplete error: device offline $ /ci/home/tools/android-sdk//platform-tools/adb connect localhost:64471 $ /ci/home/tools/android-sdk//platform-tools/adb -s localhost:64471 shell getprop dev.bootcomplete $ /ci/home/tools/android-sdk//platform-tools/adb connect localhost:64471 $ /ci/home/tools/android-sdk//platform-tools/adb -s localhost:64471 shell getprop dev.bootcomplete $ /ci/home/tools/android-sdk//platform-tools/adb disconnect localhost:64471 $ /ci/home/tools/android-sdk//platform-tools/adb connect localhost:64471 $ /ci/home/tools/android-sdk//platform-tools/adb -s localhost:64471 shell getprop dev.bootcomplete $ /ci/home/tools/android-sdk//platform-tools/adb connect localhost:64471 $ /ci/home/tools/android-sdk//platform-tools/adb -s localhost:64471 shell getprop dev.bootcomplete $ /ci/home/tools/android-sdk//platform-tools/adb connect localhost:64471 $ /ci/home/tools/android-sdk//platform-tools/adb -s localhost:64471 shell getprop dev.bootcomplete $ /ci/home/tools/android-sdk//platform-tools/adb -s localhost:64471 logcat -v time $ /ci/home/tools/android-sdk//platform-tools/adb connect localhost:64471 [android] Attempting to unlock emulator screen $ /ci/home/tools/android-sdk//platform-tools/adb -s localhost:64471 shell input keyevent 82 $ /ci/home/tools/android-sdk//platform-tools/adb -s localhost:64471 shell input keyevent 4 [android] Giving the system some time to settle before creating initial snapshot... $ /ci/home/tools/android-sdk//platform-tools/adb connect localhost:64471 $ /ci/home/tools/android-sdk//platform-tools/adb -s localhost:64471 logcat -c $ /ci/home/tools/android-sdk//platform-tools/adb -s localhost:64471 shell log -pv -t Jenkins "Creating snapshot..." [android] Creating snapshot... $ /ci/home/tools/android-sdk//platform-tools/adb connect localhost:64471 [android] Emulator is ready for use (took 158 seconds) 

Buildfile для примера задания:

 <?xml version='1.0' encoding='UTF-8'?> <project> <actions/> <description></description> <keepDependencies>false</keepDependencies> <properties/> <scm class="hudson.plugins.git.GitSCM"> <configVersion>2</configVersion> <userRemoteConfigs> <hudson.plugins.git.UserRemoteConfig> <name></name> <refspec></refspec> <url>git@project...</url> </hudson.plugins.git.UserRemoteConfig> </userRemoteConfigs> <branches> <hudson.plugins.git.BranchSpec> <name>master</name> </hudson.plugins.git.BranchSpec> </branches> <disableSubmodules>false</disableSubmodules> <recursiveSubmodules>false</recursiveSubmodules> <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations> <authorOrCommitter>false</authorOrCommitter> <clean>false</clean> <wipeOutWorkspace>false</wipeOutWorkspace> <pruneBranches>false</pruneBranches> <remotePoll>false</remotePoll> <ignoreNotifyCommit>false</ignoreNotifyCommit> <useShallowClone>false</useShallowClone> <buildChooser class="hudson.plugins.git.util.DefaultBuildChooser"/> <gitTool>default</gitTool> <submoduleCfg class="list"/> <relativeTargetDir></relativeTargetDir> <reference></reference> <excludedRegions></excludedRegions> <excludedUsers></excludedUsers> <gitConfigName></gitConfigName> <gitConfigEmail></gitConfigEmail> <skipTag>false</skipTag> <includedRegions></includedRegions> <scmName></scmName> </scm> <canRoam>true</canRoam> <disabled>false</disabled> <blockBuildWhenDownstreamBuilding>true</blockBuildWhenDownstreamBuilding> <blockBuildWhenUpstreamBuilding>true</blockBuildWhenUpstreamBuilding> <triggers class="vector"> <hudson.triggers.SCMTrigger> <spec>*/5 * * * *</spec> </hudson.triggers.SCMTrigger> </triggers> <concurrentBuild>false</concurrentBuild> <builders> <hudson.tasks.Ant> <targets>clean debug install</targets> <antName>(Default)</antName> </hudson.tasks.Ant> <hudson.tasks.Ant> <targets></targets> <antName>(Default)</antName> <buildFile>checkstyle-ant.xml</buildFile> </hudson.tasks.Ant> <hudson.tasks.Shell> <command>os_opts=&quot;-Djava.awt.headless=true&quot; lint --xml lint-results.xml .</command> </hudson.tasks.Shell> <hudson.plugins.android__emulator.monkey.MonkeyBuilder> <packageId>de....</packageId> <eventCount>1000</eventCount> <throttleMs>10</throttleMs> <seed>timestamp</seed> </hudson.plugins.android__emulator.monkey.MonkeyBuilder> <hudson.tasks.Shell> ... distribution script </hudson.tasks.Shell> </builders> <publishers> <org.jenkinsci.plugins.android__lint.LintPublisher> <healthy></healthy> <thresholdLimit>low</thresholdLimit> <pluginName>[android-lint] </pluginName> <defaultEncoding></defaultEncoding> <canRunOnFailed>false</canRunOnFailed> <useStableBuildAsReference>false</useStableBuildAsReference> <useDeltaValues>false</useDeltaValues> <thresholds> <unstableTotalAll></unstableTotalAll> <unstableTotalHigh></unstableTotalHigh> <unstableTotalNormal></unstableTotalNormal> <unstableTotalLow></unstableTotalLow> <unstableNewAll></unstableNewAll> <unstableNewHigh></unstableNewHigh> <unstableNewNormal></unstableNewNormal> <unstableNewLow></unstableNewLow> <failedTotalAll></failedTotalAll> <failedTotalHigh></failedTotalHigh> <failedTotalNormal></failedTotalNormal> <failedTotalLow></failedTotalLow> <failedNewAll></failedNewAll> <failedNewHigh></failedNewHigh> <failedNewNormal></failedNewNormal> <failedNewLow></failedNewLow> </thresholds> <shouldDetectModules>false</shouldDetectModules> <dontComputeNew>false</dontComputeNew> <doNotResolveRelativePaths>false</doNotResolveRelativePaths> <pattern></pattern> </org.jenkinsci.plugins.android__lint.LintPublisher> <hudson.plugins.checkstyle.CheckStylePublisher> <healthy></healthy> <unHealthy></unHealthy> <thresholdLimit>low</thresholdLimit> <pluginName>[CHECKSTYLE] </pluginName> <defaultEncoding></defaultEncoding> <canRunOnFailed>false</canRunOnFailed> <useStableBuildAsReference>false</useStableBuildAsReference> <useDeltaValues>false</useDeltaValues> <thresholds> <unstableTotalAll></unstableTotalAll> <unstableTotalHigh></unstableTotalHigh> <unstableTotalNormal></unstableTotalNormal> <unstableTotalLow></unstableTotalLow> <failedTotalAll></failedTotalAll> <failedTotalHigh></failedTotalHigh> <failedTotalNormal></failedTotalNormal> <failedTotalLow></failedTotalLow> </thresholds> <shouldDetectModules>false</shouldDetectModules> <dontComputeNew>true</dontComputeNew> <doNotResolveRelativePaths>false</doNotResolveRelativePaths> <pattern></pattern> </hudson.plugins.checkstyle.CheckStylePublisher> <hudson.plugins.warnings.WarningsPublisher> <healthy></healthy> <unHealthy></unHealthy> <thresholdLimit>low</thresholdLimit> <pluginName>[WARNINGS] </pluginName> <defaultEncoding></defaultEncoding> <canRunOnFailed>false</canRunOnFailed> <useStableBuildAsReference>false</useStableBuildAsReference> <useDeltaValues>false</useDeltaValues> <thresholds> <unstableTotalAll></unstableTotalAll> <unstableTotalHigh></unstableTotalHigh> <unstableTotalNormal></unstableTotalNormal> <unstableTotalLow></unstableTotalLow> <failedTotalAll></failedTotalAll> <failedTotalHigh></failedTotalHigh> <failedTotalNormal></failedTotalNormal> <failedTotalLow></failedTotalLow> </thresholds> <shouldDetectModules>false</shouldDetectModules> <dontComputeNew>true</dontComputeNew> <doNotResolveRelativePaths>true</doNotResolveRelativePaths> <parserConfigurations/> <consoleParsers> <hudson.plugins.warnings.ConsoleParser> <parserName>Java Compiler (Eclipse)</parserName> </hudson.plugins.warnings.ConsoleParser> </consoleParsers> </hudson.plugins.warnings.WarningsPublisher> <hudson.plugins.analysis.collector.AnalysisPublisher> <healthy></healthy> <unHealthy></unHealthy> <thresholdLimit>low</thresholdLimit> <pluginName>[ANALYSIS-COLLECTOR] </pluginName> <defaultEncoding></defaultEncoding> <canRunOnFailed>false</canRunOnFailed> <useStableBuildAsReference>false</useStableBuildAsReference> <useDeltaValues>false</useDeltaValues> <thresholds> <unstableTotalAll></unstableTotalAll> <unstableTotalHigh></unstableTotalHigh> <unstableTotalNormal></unstableTotalNormal> <unstableTotalLow></unstableTotalLow> <failedTotalAll></failedTotalAll> <failedTotalHigh></failedTotalHigh> <failedTotalNormal></failedTotalNormal> <failedTotalLow></failedTotalLow> </thresholds> <shouldDetectModules>false</shouldDetectModules> <dontComputeNew>true</dontComputeNew> <doNotResolveRelativePaths>true</doNotResolveRelativePaths> <isCheckStyleDeactivated>false</isCheckStyleDeactivated> <isDryDeactivated>true</isDryDeactivated> <isFindBugsDeactivated>true</isFindBugsDeactivated> <isPmdDeactivated>true</isPmdDeactivated> <isOpenTasksDeactivated>true</isOpenTasksDeactivated> <isWarningsDeactivated>false</isWarningsDeactivated> </hudson.plugins.analysis.collector.AnalysisPublisher> <hudson.plugins.android__emulator.monkey.MonkeyRecorder> <failureOutcome>FAILURE</failureOutcome> </hudson.plugins.android__emulator.monkey.MonkeyRecorder> <hudson.plugins.cigame.GamePublisher/> <hudson.tasks.Mailer> <recipients></recipients> <dontNotifyEveryUnstableBuild>false</dontNotifyEveryUnstableBuild> <sendToIndividuals>true</sendToIndividuals> </hudson.tasks.Mailer> </publishers> <buildWrappers> <hudson.plugins.locksandlatches.LockWrapper> <locks> <hudson.plugins.locksandlatches.LockWrapper_-LockWaitConfig> <name>AndroidEmulator</name> </hudson.plugins.locksandlatches.LockWrapper_-LockWaitConfig> </locks> </hudson.plugins.locksandlatches.LockWrapper> <hudson.plugins.android__emulator.AndroidEmulator> <osVersion>Google Inc.:Google APIs:8</osVersion> <screenDensity>240</screenDensity> <screenResolution>480x720</screenResolution> <deviceLocale>de_DE</deviceLocale> <sdCardSize>200M</sdCardSize> <hardwareProperties> <hudson.plugins.android__emulator.AndroidEmulator_-HardwareProperty> <key>hw.ramSize</key> <value>512</value> </hudson.plugins.android__emulator.AndroidEmulator_-HardwareProperty> </hardwareProperties> <wipeData>false</wipeData> <showWindow>true</showWindow> <useSnapshots>true</useSnapshots> <deleteAfterBuild>false</deleteAfterBuild> <startupDelay>0</startupDelay> <commandLineOptions></commandLineOptions> </hudson.plugins.android__emulator.AndroidEmulator> </buildWrappers> </project> по <?xml version='1.0' encoding='UTF-8'?> <project> <actions/> <description></description> <keepDependencies>false</keepDependencies> <properties/> <scm class="hudson.plugins.git.GitSCM"> <configVersion>2</configVersion> <userRemoteConfigs> <hudson.plugins.git.UserRemoteConfig> <name></name> <refspec></refspec> <url>git@project...</url> </hudson.plugins.git.UserRemoteConfig> </userRemoteConfigs> <branches> <hudson.plugins.git.BranchSpec> <name>master</name> </hudson.plugins.git.BranchSpec> </branches> <disableSubmodules>false</disableSubmodules> <recursiveSubmodules>false</recursiveSubmodules> <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations> <authorOrCommitter>false</authorOrCommitter> <clean>false</clean> <wipeOutWorkspace>false</wipeOutWorkspace> <pruneBranches>false</pruneBranches> <remotePoll>false</remotePoll> <ignoreNotifyCommit>false</ignoreNotifyCommit> <useShallowClone>false</useShallowClone> <buildChooser class="hudson.plugins.git.util.DefaultBuildChooser"/> <gitTool>default</gitTool> <submoduleCfg class="list"/> <relativeTargetDir></relativeTargetDir> <reference></reference> <excludedRegions></excludedRegions> <excludedUsers></excludedUsers> <gitConfigName></gitConfigName> <gitConfigEmail></gitConfigEmail> <skipTag>false</skipTag> <includedRegions></includedRegions> <scmName></scmName> </scm> <canRoam>true</canRoam> <disabled>false</disabled> <blockBuildWhenDownstreamBuilding>true</blockBuildWhenDownstreamBuilding> <blockBuildWhenUpstreamBuilding>true</blockBuildWhenUpstreamBuilding> <triggers class="vector"> <hudson.triggers.SCMTrigger> <spec>*/5 * * * *</spec> </hudson.triggers.SCMTrigger> </triggers> <concurrentBuild>false</concurrentBuild> <builders> <hudson.tasks.Ant> <targets>clean debug install</targets> <antName>(Default)</antName> </hudson.tasks.Ant> <hudson.tasks.Ant> <targets></targets> <antName>(Default)</antName> <buildFile>checkstyle-ant.xml</buildFile> </hudson.tasks.Ant> <hudson.tasks.Shell> <command>os_opts=&quot;-Djava.awt.headless=true&quot; lint --xml lint-results.xml .</command> </hudson.tasks.Shell> <hudson.plugins.android__emulator.monkey.MonkeyBuilder> <packageId>de....</packageId> <eventCount>1000</eventCount> <throttleMs>10</throttleMs> <seed>timestamp</seed> </hudson.plugins.android__emulator.monkey.MonkeyBuilder> <hudson.tasks.Shell> ... distribution script </hudson.tasks.Shell> </builders> <publishers> <org.jenkinsci.plugins.android__lint.LintPublisher> <healthy></healthy> <thresholdLimit>low</thresholdLimit> <pluginName>[android-lint] </pluginName> <defaultEncoding></defaultEncoding> <canRunOnFailed>false</canRunOnFailed> <useStableBuildAsReference>false</useStableBuildAsReference> <useDeltaValues>false</useDeltaValues> <thresholds> <unstableTotalAll></unstableTotalAll> <unstableTotalHigh></unstableTotalHigh> <unstableTotalNormal></unstableTotalNormal> <unstableTotalLow></unstableTotalLow> <unstableNewAll></unstableNewAll> <unstableNewHigh></unstableNewHigh> <unstableNewNormal></unstableNewNormal> <unstableNewLow></unstableNewLow> <failedTotalAll></failedTotalAll> <failedTotalHigh></failedTotalHigh> <failedTotalNormal></failedTotalNormal> <failedTotalLow></failedTotalLow> <failedNewAll></failedNewAll> <failedNewHigh></failedNewHigh> <failedNewNormal></failedNewNormal> <failedNewLow></failedNewLow> </thresholds> <shouldDetectModules>false</shouldDetectModules> <dontComputeNew>false</dontComputeNew> <doNotResolveRelativePaths>false</doNotResolveRelativePaths> <pattern></pattern> </org.jenkinsci.plugins.android__lint.LintPublisher> <hudson.plugins.checkstyle.CheckStylePublisher> <healthy></healthy> <unHealthy></unHealthy> <thresholdLimit>low</thresholdLimit> <pluginName>[CHECKSTYLE] </pluginName> <defaultEncoding></defaultEncoding> <canRunOnFailed>false</canRunOnFailed> <useStableBuildAsReference>false</useStableBuildAsReference> <useDeltaValues>false</useDeltaValues> <thresholds> <unstableTotalAll></unstableTotalAll> <unstableTotalHigh></unstableTotalHigh> <unstableTotalNormal></unstableTotalNormal> <unstableTotalLow></unstableTotalLow> <failedTotalAll></failedTotalAll> <failedTotalHigh></failedTotalHigh> <failedTotalNormal></failedTotalNormal> <failedTotalLow></failedTotalLow> </thresholds> <shouldDetectModules>false</shouldDetectModules> <dontComputeNew>true</dontComputeNew> <doNotResolveRelativePaths>false</doNotResolveRelativePaths> <pattern></pattern> </hudson.plugins.checkstyle.CheckStylePublisher> <hudson.plugins.warnings.WarningsPublisher> <healthy></healthy> <unHealthy></unHealthy> <thresholdLimit>low</thresholdLimit> <pluginName>[WARNINGS] </pluginName> <defaultEncoding></defaultEncoding> <canRunOnFailed>false</canRunOnFailed> <useStableBuildAsReference>false</useStableBuildAsReference> <useDeltaValues>false</useDeltaValues> <thresholds> <unstableTotalAll></unstableTotalAll> <unstableTotalHigh></unstableTotalHigh> <unstableTotalNormal></unstableTotalNormal> <unstableTotalLow></unstableTotalLow> <failedTotalAll></failedTotalAll> <failedTotalHigh></failedTotalHigh> <failedTotalNormal></failedTotalNormal> <failedTotalLow></failedTotalLow> </thresholds> <shouldDetectModules>false</shouldDetectModules> <dontComputeNew>true</dontComputeNew> <doNotResolveRelativePaths>true</doNotResolveRelativePaths> <parserConfigurations/> <consoleParsers> <hudson.plugins.warnings.ConsoleParser> <parserName>Java Compiler (Eclipse)</parserName> </hudson.plugins.warnings.ConsoleParser> </consoleParsers> </hudson.plugins.warnings.WarningsPublisher> <hudson.plugins.analysis.collector.AnalysisPublisher> <healthy></healthy> <unHealthy></unHealthy> <thresholdLimit>low</thresholdLimit> <pluginName>[ANALYSIS-COLLECTOR] </pluginName> <defaultEncoding></defaultEncoding> <canRunOnFailed>false</canRunOnFailed> <useStableBuildAsReference>false</useStableBuildAsReference> <useDeltaValues>false</useDeltaValues> <thresholds> <unstableTotalAll></unstableTotalAll> <unstableTotalHigh></unstableTotalHigh> <unstableTotalNormal></unstableTotalNormal> <unstableTotalLow></unstableTotalLow> <failedTotalAll></failedTotalAll> <failedTotalHigh></failedTotalHigh> <failedTotalNormal></failedTotalNormal> <failedTotalLow></failedTotalLow> </thresholds> <shouldDetectModules>false</shouldDetectModules> <dontComputeNew>true</dontComputeNew> <doNotResolveRelativePaths>true</doNotResolveRelativePaths> <isCheckStyleDeactivated>false</isCheckStyleDeactivated> <isDryDeactivated>true</isDryDeactivated> <isFindBugsDeactivated>true</isFindBugsDeactivated> <isPmdDeactivated>true</isPmdDeactivated> <isOpenTasksDeactivated>true</isOpenTasksDeactivated> <isWarningsDeactivated>false</isWarningsDeactivated> </hudson.plugins.analysis.collector.AnalysisPublisher> <hudson.plugins.android__emulator.monkey.MonkeyRecorder> <failureOutcome>FAILURE</failureOutcome> </hudson.plugins.android__emulator.monkey.MonkeyRecorder> <hudson.plugins.cigame.GamePublisher/> <hudson.tasks.Mailer> <recipients></recipients> <dontNotifyEveryUnstableBuild>false</dontNotifyEveryUnstableBuild> <sendToIndividuals>true</sendToIndividuals> </hudson.tasks.Mailer> </publishers> <buildWrappers> <hudson.plugins.locksandlatches.LockWrapper> <locks> <hudson.plugins.locksandlatches.LockWrapper_-LockWaitConfig> <name>AndroidEmulator</name> </hudson.plugins.locksandlatches.LockWrapper_-LockWaitConfig> </locks> </hudson.plugins.locksandlatches.LockWrapper> <hudson.plugins.android__emulator.AndroidEmulator> <osVersion>Google Inc.:Google APIs:8</osVersion> <screenDensity>240</screenDensity> <screenResolution>480x720</screenResolution> <deviceLocale>de_DE</deviceLocale> <sdCardSize>200M</sdCardSize> <hardwareProperties> <hudson.plugins.android__emulator.AndroidEmulator_-HardwareProperty> <key>hw.ramSize</key> <value>512</value> </hudson.plugins.android__emulator.AndroidEmulator_-HardwareProperty> </hardwareProperties> <wipeData>false</wipeData> <showWindow>true</showWindow> <useSnapshots>true</useSnapshots> <deleteAfterBuild>false</deleteAfterBuild> <startupDelay>0</startupDelay> <commandLineOptions></commandLineOptions> </hudson.plugins.android__emulator.AndroidEmulator> </buildWrappers> </project> по <?xml version='1.0' encoding='UTF-8'?> <project> <actions/> <description></description> <keepDependencies>false</keepDependencies> <properties/> <scm class="hudson.plugins.git.GitSCM"> <configVersion>2</configVersion> <userRemoteConfigs> <hudson.plugins.git.UserRemoteConfig> <name></name> <refspec></refspec> <url>git@project...</url> </hudson.plugins.git.UserRemoteConfig> </userRemoteConfigs> <branches> <hudson.plugins.git.BranchSpec> <name>master</name> </hudson.plugins.git.BranchSpec> </branches> <disableSubmodules>false</disableSubmodules> <recursiveSubmodules>false</recursiveSubmodules> <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations> <authorOrCommitter>false</authorOrCommitter> <clean>false</clean> <wipeOutWorkspace>false</wipeOutWorkspace> <pruneBranches>false</pruneBranches> <remotePoll>false</remotePoll> <ignoreNotifyCommit>false</ignoreNotifyCommit> <useShallowClone>false</useShallowClone> <buildChooser class="hudson.plugins.git.util.DefaultBuildChooser"/> <gitTool>default</gitTool> <submoduleCfg class="list"/> <relativeTargetDir></relativeTargetDir> <reference></reference> <excludedRegions></excludedRegions> <excludedUsers></excludedUsers> <gitConfigName></gitConfigName> <gitConfigEmail></gitConfigEmail> <skipTag>false</skipTag> <includedRegions></includedRegions> <scmName></scmName> </scm> <canRoam>true</canRoam> <disabled>false</disabled> <blockBuildWhenDownstreamBuilding>true</blockBuildWhenDownstreamBuilding> <blockBuildWhenUpstreamBuilding>true</blockBuildWhenUpstreamBuilding> <triggers class="vector"> <hudson.triggers.SCMTrigger> <spec>*/5 * * * *</spec> </hudson.triggers.SCMTrigger> </triggers> <concurrentBuild>false</concurrentBuild> <builders> <hudson.tasks.Ant> <targets>clean debug install</targets> <antName>(Default)</antName> </hudson.tasks.Ant> <hudson.tasks.Ant> <targets></targets> <antName>(Default)</antName> <buildFile>checkstyle-ant.xml</buildFile> </hudson.tasks.Ant> <hudson.tasks.Shell> <command>os_opts=&quot;-Djava.awt.headless=true&quot; lint --xml lint-results.xml .</command> </hudson.tasks.Shell> <hudson.plugins.android__emulator.monkey.MonkeyBuilder> <packageId>de....</packageId> <eventCount>1000</eventCount> <throttleMs>10</throttleMs> <seed>timestamp</seed> </hudson.plugins.android__emulator.monkey.MonkeyBuilder> <hudson.tasks.Shell> ... distribution script </hudson.tasks.Shell> </builders> <publishers> <org.jenkinsci.plugins.android__lint.LintPublisher> <healthy></healthy> <thresholdLimit>low</thresholdLimit> <pluginName>[android-lint] </pluginName> <defaultEncoding></defaultEncoding> <canRunOnFailed>false</canRunOnFailed> <useStableBuildAsReference>false</useStableBuildAsReference> <useDeltaValues>false</useDeltaValues> <thresholds> <unstableTotalAll></unstableTotalAll> <unstableTotalHigh></unstableTotalHigh> <unstableTotalNormal></unstableTotalNormal> <unstableTotalLow></unstableTotalLow> <unstableNewAll></unstableNewAll> <unstableNewHigh></unstableNewHigh> <unstableNewNormal></unstableNewNormal> <unstableNewLow></unstableNewLow> <failedTotalAll></failedTotalAll> <failedTotalHigh></failedTotalHigh> <failedTotalNormal></failedTotalNormal> <failedTotalLow></failedTotalLow> <failedNewAll></failedNewAll> <failedNewHigh></failedNewHigh> <failedNewNormal></failedNewNormal> <failedNewLow></failedNewLow> </thresholds> <shouldDetectModules>false</shouldDetectModules> <dontComputeNew>false</dontComputeNew> <doNotResolveRelativePaths>false</doNotResolveRelativePaths> <pattern></pattern> </org.jenkinsci.plugins.android__lint.LintPublisher> <hudson.plugins.checkstyle.CheckStylePublisher> <healthy></healthy> <unHealthy></unHealthy> <thresholdLimit>low</thresholdLimit> <pluginName>[CHECKSTYLE] </pluginName> <defaultEncoding></defaultEncoding> <canRunOnFailed>false</canRunOnFailed> <useStableBuildAsReference>false</useStableBuildAsReference> <useDeltaValues>false</useDeltaValues> <thresholds> <unstableTotalAll></unstableTotalAll> <unstableTotalHigh></unstableTotalHigh> <unstableTotalNormal></unstableTotalNormal> <unstableTotalLow></unstableTotalLow> <failedTotalAll></failedTotalAll> <failedTotalHigh></failedTotalHigh> <failedTotalNormal></failedTotalNormal> <failedTotalLow></failedTotalLow> </thresholds> <shouldDetectModules>false</shouldDetectModules> <dontComputeNew>true</dontComputeNew> <doNotResolveRelativePaths>false</doNotResolveRelativePaths> <pattern></pattern> </hudson.plugins.checkstyle.CheckStylePublisher> <hudson.plugins.warnings.WarningsPublisher> <healthy></healthy> <unHealthy></unHealthy> <thresholdLimit>low</thresholdLimit> <pluginName>[WARNINGS] </pluginName> <defaultEncoding></defaultEncoding> <canRunOnFailed>false</canRunOnFailed> <useStableBuildAsReference>false</useStableBuildAsReference> <useDeltaValues>false</useDeltaValues> <thresholds> <unstableTotalAll></unstableTotalAll> <unstableTotalHigh></unstableTotalHigh> <unstableTotalNormal></unstableTotalNormal> <unstableTotalLow></unstableTotalLow> <failedTotalAll></failedTotalAll> <failedTotalHigh></failedTotalHigh> <failedTotalNormal></failedTotalNormal> <failedTotalLow></failedTotalLow> </thresholds> <shouldDetectModules>false</shouldDetectModules> <dontComputeNew>true</dontComputeNew> <doNotResolveRelativePaths>true</doNotResolveRelativePaths> <parserConfigurations/> <consoleParsers> <hudson.plugins.warnings.ConsoleParser> <parserName>Java Compiler (Eclipse)</parserName> </hudson.plugins.warnings.ConsoleParser> </consoleParsers> </hudson.plugins.warnings.WarningsPublisher> <hudson.plugins.analysis.collector.AnalysisPublisher> <healthy></healthy> <unHealthy></unHealthy> <thresholdLimit>low</thresholdLimit> <pluginName>[ANALYSIS-COLLECTOR] </pluginName> <defaultEncoding></defaultEncoding> <canRunOnFailed>false</canRunOnFailed> <useStableBuildAsReference>false</useStableBuildAsReference> <useDeltaValues>false</useDeltaValues> <thresholds> <unstableTotalAll></unstableTotalAll> <unstableTotalHigh></unstableTotalHigh> <unstableTotalNormal></unstableTotalNormal> <unstableTotalLow></unstableTotalLow> <failedTotalAll></failedTotalAll> <failedTotalHigh></failedTotalHigh> <failedTotalNormal></failedTotalNormal> <failedTotalLow></failedTotalLow> </thresholds> <shouldDetectModules>false</shouldDetectModules> <dontComputeNew>true</dontComputeNew> <doNotResolveRelativePaths>true</doNotResolveRelativePaths> <isCheckStyleDeactivated>false</isCheckStyleDeactivated> <isDryDeactivated>true</isDryDeactivated> <isFindBugsDeactivated>true</isFindBugsDeactivated> <isPmdDeactivated>true</isPmdDeactivated> <isOpenTasksDeactivated>true</isOpenTasksDeactivated> <isWarningsDeactivated>false</isWarningsDeactivated> </hudson.plugins.analysis.collector.AnalysisPublisher> <hudson.plugins.android__emulator.monkey.MonkeyRecorder> <failureOutcome>FAILURE</failureOutcome> </hudson.plugins.android__emulator.monkey.MonkeyRecorder> <hudson.plugins.cigame.GamePublisher/> <hudson.tasks.Mailer> <recipients></recipients> <dontNotifyEveryUnstableBuild>false</dontNotifyEveryUnstableBuild> <sendToIndividuals>true</sendToIndividuals> </hudson.tasks.Mailer> </publishers> <buildWrappers> <hudson.plugins.locksandlatches.LockWrapper> <locks> <hudson.plugins.locksandlatches.LockWrapper_-LockWaitConfig> <name>AndroidEmulator</name> </hudson.plugins.locksandlatches.LockWrapper_-LockWaitConfig> </locks> </hudson.plugins.locksandlatches.LockWrapper> <hudson.plugins.android__emulator.AndroidEmulator> <osVersion>Google Inc.:Google APIs:8</osVersion> <screenDensity>240</screenDensity> <screenResolution>480x720</screenResolution> <deviceLocale>de_DE</deviceLocale> <sdCardSize>200M</sdCardSize> <hardwareProperties> <hudson.plugins.android__emulator.AndroidEmulator_-HardwareProperty> <key>hw.ramSize</key> <value>512</value> </hudson.plugins.android__emulator.AndroidEmulator_-HardwareProperty> </hardwareProperties> <wipeData>false</wipeData> <showWindow>true</showWindow> <useSnapshots>true</useSnapshots> <deleteAfterBuild>false</deleteAfterBuild> <startupDelay>0</startupDelay> <commandLineOptions></commandLineOptions> </hudson.plugins.android__emulator.AndroidEmulator> </buildWrappers> </project> по <?xml version='1.0' encoding='UTF-8'?> <project> <actions/> <description></description> <keepDependencies>false</keepDependencies> <properties/> <scm class="hudson.plugins.git.GitSCM"> <configVersion>2</configVersion> <userRemoteConfigs> <hudson.plugins.git.UserRemoteConfig> <name></name> <refspec></refspec> <url>git@project...</url> </hudson.plugins.git.UserRemoteConfig> </userRemoteConfigs> <branches> <hudson.plugins.git.BranchSpec> <name>master</name> </hudson.plugins.git.BranchSpec> </branches> <disableSubmodules>false</disableSubmodules> <recursiveSubmodules>false</recursiveSubmodules> <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations> <authorOrCommitter>false</authorOrCommitter> <clean>false</clean> <wipeOutWorkspace>false</wipeOutWorkspace> <pruneBranches>false</pruneBranches> <remotePoll>false</remotePoll> <ignoreNotifyCommit>false</ignoreNotifyCommit> <useShallowClone>false</useShallowClone> <buildChooser class="hudson.plugins.git.util.DefaultBuildChooser"/> <gitTool>default</gitTool> <submoduleCfg class="list"/> <relativeTargetDir></relativeTargetDir> <reference></reference> <excludedRegions></excludedRegions> <excludedUsers></excludedUsers> <gitConfigName></gitConfigName> <gitConfigEmail></gitConfigEmail> <skipTag>false</skipTag> <includedRegions></includedRegions> <scmName></scmName> </scm> <canRoam>true</canRoam> <disabled>false</disabled> <blockBuildWhenDownstreamBuilding>true</blockBuildWhenDownstreamBuilding> <blockBuildWhenUpstreamBuilding>true</blockBuildWhenUpstreamBuilding> <triggers class="vector"> <hudson.triggers.SCMTrigger> <spec>*/5 * * * *</spec> </hudson.triggers.SCMTrigger> </triggers> <concurrentBuild>false</concurrentBuild> <builders> <hudson.tasks.Ant> <targets>clean debug install</targets> <antName>(Default)</antName> </hudson.tasks.Ant> <hudson.tasks.Ant> <targets></targets> <antName>(Default)</antName> <buildFile>checkstyle-ant.xml</buildFile> </hudson.tasks.Ant> <hudson.tasks.Shell> <command>os_opts=&quot;-Djava.awt.headless=true&quot; lint --xml lint-results.xml .</command> </hudson.tasks.Shell> <hudson.plugins.android__emulator.monkey.MonkeyBuilder> <packageId>de....</packageId> <eventCount>1000</eventCount> <throttleMs>10</throttleMs> <seed>timestamp</seed> </hudson.plugins.android__emulator.monkey.MonkeyBuilder> <hudson.tasks.Shell> ... distribution script </hudson.tasks.Shell> </builders> <publishers> <org.jenkinsci.plugins.android__lint.LintPublisher> <healthy></healthy> <thresholdLimit>low</thresholdLimit> <pluginName>[android-lint] </pluginName> <defaultEncoding></defaultEncoding> <canRunOnFailed>false</canRunOnFailed> <useStableBuildAsReference>false</useStableBuildAsReference> <useDeltaValues>false</useDeltaValues> <thresholds> <unstableTotalAll></unstableTotalAll> <unstableTotalHigh></unstableTotalHigh> <unstableTotalNormal></unstableTotalNormal> <unstableTotalLow></unstableTotalLow> <unstableNewAll></unstableNewAll> <unstableNewHigh></unstableNewHigh> <unstableNewNormal></unstableNewNormal> <unstableNewLow></unstableNewLow> <failedTotalAll></failedTotalAll> <failedTotalHigh></failedTotalHigh> <failedTotalNormal></failedTotalNormal> <failedTotalLow></failedTotalLow> <failedNewAll></failedNewAll> <failedNewHigh></failedNewHigh> <failedNewNormal></failedNewNormal> <failedNewLow></failedNewLow> </thresholds> <shouldDetectModules>false</shouldDetectModules> <dontComputeNew>false</dontComputeNew> <doNotResolveRelativePaths>false</doNotResolveRelativePaths> <pattern></pattern> </org.jenkinsci.plugins.android__lint.LintPublisher> <hudson.plugins.checkstyle.CheckStylePublisher> <healthy></healthy> <unHealthy></unHealthy> <thresholdLimit>low</thresholdLimit> <pluginName>[CHECKSTYLE] </pluginName> <defaultEncoding></defaultEncoding> <canRunOnFailed>false</canRunOnFailed> <useStableBuildAsReference>false</useStableBuildAsReference> <useDeltaValues>false</useDeltaValues> <thresholds> <unstableTotalAll></unstableTotalAll> <unstableTotalHigh></unstableTotalHigh> <unstableTotalNormal></unstableTotalNormal> <unstableTotalLow></unstableTotalLow> <failedTotalAll></failedTotalAll> <failedTotalHigh></failedTotalHigh> <failedTotalNormal></failedTotalNormal> <failedTotalLow></failedTotalLow> </thresholds> <shouldDetectModules>false</shouldDetectModules> <dontComputeNew>true</dontComputeNew> <doNotResolveRelativePaths>false</doNotResolveRelativePaths> <pattern></pattern> </hudson.plugins.checkstyle.CheckStylePublisher> <hudson.plugins.warnings.WarningsPublisher> <healthy></healthy> <unHealthy></unHealthy> <thresholdLimit>low</thresholdLimit> <pluginName>[WARNINGS] </pluginName> <defaultEncoding></defaultEncoding> <canRunOnFailed>false</canRunOnFailed> <useStableBuildAsReference>false</useStableBuildAsReference> <useDeltaValues>false</useDeltaValues> <thresholds> <unstableTotalAll></unstableTotalAll> <unstableTotalHigh></unstableTotalHigh> <unstableTotalNormal></unstableTotalNormal> <unstableTotalLow></unstableTotalLow> <failedTotalAll></failedTotalAll> <failedTotalHigh></failedTotalHigh> <failedTotalNormal></failedTotalNormal> <failedTotalLow></failedTotalLow> </thresholds> <shouldDetectModules>false</shouldDetectModules> <dontComputeNew>true</dontComputeNew> <doNotResolveRelativePaths>true</doNotResolveRelativePaths> <parserConfigurations/> <consoleParsers> <hudson.plugins.warnings.ConsoleParser> <parserName>Java Compiler (Eclipse)</parserName> </hudson.plugins.warnings.ConsoleParser> </consoleParsers> </hudson.plugins.warnings.WarningsPublisher> <hudson.plugins.analysis.collector.AnalysisPublisher> <healthy></healthy> <unHealthy></unHealthy> <thresholdLimit>low</thresholdLimit> <pluginName>[ANALYSIS-COLLECTOR] </pluginName> <defaultEncoding></defaultEncoding> <canRunOnFailed>false</canRunOnFailed> <useStableBuildAsReference>false</useStableBuildAsReference> <useDeltaValues>false</useDeltaValues> <thresholds> <unstableTotalAll></unstableTotalAll> <unstableTotalHigh></unstableTotalHigh> <unstableTotalNormal></unstableTotalNormal> <unstableTotalLow></unstableTotalLow> <failedTotalAll></failedTotalAll> <failedTotalHigh></failedTotalHigh> <failedTotalNormal></failedTotalNormal> <failedTotalLow></failedTotalLow> </thresholds> <shouldDetectModules>false</shouldDetectModules> <dontComputeNew>true</dontComputeNew> <doNotResolveRelativePaths>true</doNotResolveRelativePaths> <isCheckStyleDeactivated>false</isCheckStyleDeactivated> <isDryDeactivated>true</isDryDeactivated> <isFindBugsDeactivated>true</isFindBugsDeactivated> <isPmdDeactivated>true</isPmdDeactivated> <isOpenTasksDeactivated>true</isOpenTasksDeactivated> <isWarningsDeactivated>false</isWarningsDeactivated> </hudson.plugins.analysis.collector.AnalysisPublisher> <hudson.plugins.android__emulator.monkey.MonkeyRecorder> <failureOutcome>FAILURE</failureOutcome> </hudson.plugins.android__emulator.monkey.MonkeyRecorder> <hudson.plugins.cigame.GamePublisher/> <hudson.tasks.Mailer> <recipients></recipients> <dontNotifyEveryUnstableBuild>false</dontNotifyEveryUnstableBuild> <sendToIndividuals>true</sendToIndividuals> </hudson.tasks.Mailer> </publishers> <buildWrappers> <hudson.plugins.locksandlatches.LockWrapper> <locks> <hudson.plugins.locksandlatches.LockWrapper_-LockWaitConfig> <name>AndroidEmulator</name> </hudson.plugins.locksandlatches.LockWrapper_-LockWaitConfig> </locks> </hudson.plugins.locksandlatches.LockWrapper> <hudson.plugins.android__emulator.AndroidEmulator> <osVersion>Google Inc.:Google APIs:8</osVersion> <screenDensity>240</screenDensity> <screenResolution>480x720</screenResolution> <deviceLocale>de_DE</deviceLocale> <sdCardSize>200M</sdCardSize> <hardwareProperties> <hudson.plugins.android__emulator.AndroidEmulator_-HardwareProperty> <key>hw.ramSize</key> <value>512</value> </hudson.plugins.android__emulator.AndroidEmulator_-HardwareProperty> </hardwareProperties> <wipeData>false</wipeData> <showWindow>true</showWindow> <useSnapshots>true</useSnapshots> <deleteAfterBuild>false</deleteAfterBuild> <startupDelay>0</startupDelay> <commandLineOptions></commandLineOptions> </hudson.plugins.android__emulator.AndroidEmulator> </buildWrappers> </project> 

Solutions Collecting From Web of "Почему Jenkins Android Emulator Plugin воссоздает мои снимки эмулятора в каждой сборке?"

В SDK Tools r20 была обнаружена ошибка , при которой попытка перечислить доступные снимки (через команду emulator -snapshot-list ) приведет к сбою.

Поскольку команда выходит из строя без перечисления доступных снимков, плагин Android Emulator поддерживает отсутствие существующих снимков, что приводит к созданию нового моментального снимка в каждой сборке.

Я обнаружил, что эти сбои происходят только с некоторыми версиями приложения emulator , т. Е. Можно избежать сбоя.

К счастью, плагин Jenkins позволяет вам выбрать emulator файл emulator .

Таким образом, вы можете обойти эту проблему, зайдя в конфигурацию своей работы, нажав « Дополнительно» в конфигурации эмулятора и выбрав двоичный файл « emulator-arm » (или другой).

В дополнение к ответу Кристофера Орра есть еще одна возможная причина. В моей среде emulator -snapshot-list перечислял размер моего моментального снимка как «1.0G». Шаблон, который соответствует моментальным снимкам в плагине Android Emulator с 2014-01-14, соответствует целому числу мегабайтных значений.

Я отправил запрос на выезд, чтобы решить эту проблему.