TravisCI Android 构建仅在 CI 而非本地失败

TravisCI Android build fails only on CI not locally

我遇到了一个奇怪的错误,找不到解决方案:

* What went wrong:
Execution failed for task ':app:compileDebugAndroidTestGroovy'.
> Unable to load class de.rheinfabrik.mvvm_example.activities.DetailsActivity due to missing dependency android/support/v4/view/LayoutInflaterFactory

但这是不可能的。这个项目在本地工作。也有依赖关系。

这是我的.travis.yml

language: android
jdk: oraclejdk8
env:
  matrix:
   - ANDROID_TARGET=android-22  ANDROID_ABI=armeabi-v7a
  global:
  - TERM=dumb

android:
  components:
    - build-tools-21.1.2
    - android-22
    - sys-img-armeabi-v7a-android-22
    - extra

# Emulator Management: Create, Start and Wait
before_script:
  - echo no | android create avd --force -n test -t $ANDROID_TARGET --abi $ANDROID_ABI
  - emulator -avd test -no-skin -no-audio -no-window &
  - android-wait-for-emulator
  - adb shell input keyevent 82 &

script: cd MVVM-Example && ./gradlew app:connectAndroidTest --stacktrace -PdisablePreDex

有人知道为什么缺少依赖项 LayoutInflaterFactory 吗?

https://travis-ci.org/AHarazim/android-mvvm-example

尝试

- build-tools-22.0.1

http://developer.android.com/tools/revisions/build-tools.html

Build Tools, Revision 22.0.0 (March 2015) Added support for Android 5.1 (API level 22).

我认为是 connectedAndroidTest.

Update,尝试获取最新的工具版本,Travis-ci 恢复了最后一次 VM 更新,祝你好运,如果这不起作用,我不不知道另一个可能的原因:

language: android
    android:
      components:
        - platform-tool
        - tool
        - android-22
        - build-tools-22.0.1
        - extra-android-m2repository
        - extra-google-m2repository
        - sys-img-armeabi-v7a-android-22

Update2:我分叉了你的项目,尝试了我的建议,但没有成功。但我关注了关于添加

的讨论
retrolambda {
  jvmArgs '-noverify'
}

正如您已经做过的那样。还有this variant,我没看就急忙找到解决方案并开始工作:)

script: 
  - cd MVVM-Example
  - ./gradlew prepareDebugDependencies
  - ./gradlew assembleDebug # you can run clean before assemble
  - ./gradlew app:connectedAndroidTest --info

我不熟悉这个 retrolambda 的东西,请解释其他的解决方案,如果它适合你,我认为这是一个简单的 travis 问题。