如何在travis-ci上显示android模拟器的logcat?

时间:2013-03-26 19:19:30

标签: android github continuous-integration android-logcat travis-ci

我在GitHub上有一个Android项目,它使用Travis-ci进行持续集成。

Builds currently fail我需要显示模拟器的logcat,以找到有关自动构建过程中出现的问题的更多详细信息。

我尝试添加两者:

after_failure:
  - adb logcat 

after_script:
  - adb logcat 

但这两个命令永远不会被执行。

也许这是由于travis-ci java项目构建在执行实际脚本之前执行mvn install命令并且两个命令都没有执行...我真的被卡住了。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我认为你已经不需要了,但我会尝试回答这个问题。

您需要添加--all标志,否则这些包不可用。

Google弃用了-p --obsolete标记,只有建议(较新)的包可用而没有-a --all标记。

请参阅missing build-tools - line 56

 echo "y" | android update sdk --filter platform-tools,build-tools-17.0.0,android-16,extra-android-support,$ANDROID_SDKS --no-ui --force > /dev/null
Error: Missing platform-tools
Error: Missing platform-tools
Error: Ignoring unknown package filter 'build-tools-17.0.0'

目前建议最新的平台工具始终没有--all标志,但是:

$ ./android update sdk -u -t build-tools-17.0.0
Error: Ignoring unknown package filter 'build-tools-17.0.0'
Warning: The package filter removed all packages. There is nothing to install.
         Please consider trying to update again without a package filter.
$ ./android update sdk -a -u -t build-tools-17.0.0
Packages selected for install:
- Android SDK Build-tools, revision 17

可能缺少构建工具和android-17平台是Properties file not found.

的原因

我看到here为travis-lint做了一个解决方法,我不使用它。


这是我用于日志的当前工作,需要改进但有效,-e用于模拟器。您需要自定义MOD_NAME

# adb -e: direct an adb command to the only running emulator. Return an error if more than one.

before_script:   
  # - echo 'LOGCAT'   
  # Check logcat debug output: http://developer.android.com/tools/help/logcat.html
  # Check debugging log: http://developer.android.com/tools/debugging/debugging-log.html
  # Comment the lines belows to debug output and redirect it to a file. Custom tags for your app.
  - adb -e logcat *:W | tee logcat.log > /dev/null 2>&1 &

after_failure:
  # - echo 'FAILURE'
  # Check apt configuration: http://docs.travis-ci.com/user/ci-environment/#apt-configuration
  # Comment out the lines below to show log about tests with app name customized on exports section.
  - sudo apt-get install -qq lynx
  - export MOD_NAME=yourappmodulename
  - export LOG_DIR=${TRAVIS_BUILD_DIR}/${MOD_NAME}/build/outputs/reports/androidTests/connected/
  - lynx --dump ${LOG_DIR}com.android.builder.testing.ConnectedDevice.html > myConnectedDevice.log
  - lynx --dump ${LOG_DIR}com.android.builder.testing.html > myTesting.log
  - for file in *.log; do echo "$file"; echo "====================="; cat "$file"; done || true

after_script:
  # Uncomment the line below to kill adb and show logcat output.
  - echo " LOGCAT "; echo "========"; cat logcat.log; pkill -KILL -f adb

我正在寻找预先安装lynx的替代方法,因为使用基于容器的基础架构无法使用sudo,而cat实际上是连接文件,如果有人知道要改进的话谢谢。

答案 1 :(得分:0)

经过一些额外的尝试,我可以通过以下任何一个获得logcat:

 #build 25
 #run all tests 
  - mvn clean install -DskipTests=false
 #build 26
  - adb logcat &

在before_install tr​​avis阶段。

我通过了Travis的mvn install -DskipTests = true。然而,在常规构建期间,我无法获得任何方法来获取logcat。有什么想法吗?