在travis support-v4 21.0上找不到android.support.v4.widget.DrawerLayoutImpl的类文件

rag*_*oid 13 android robolectric travis-ci android-gradle-plugin android-espresso

我们正在尝试对travis CI进行测试.我们有一个使用的类android.support.v4.widget.DrawerLayout.

当我们使用android支持v4库
build.gradle- >

targetSdkVersion: 19
`compile 'com.android.support:support-v4:20.0.0'`
Run Code Online (Sandbox Code Playgroud)

.travis.yml

- build-tools-19.1.0
- android-19
- extra-android-support
- extra-google-google_play_services
- extra-google-m2repository
Run Code Online (Sandbox Code Playgroud)

我们没有得到这个错误,但在使用

build.gradle - >

targetSdkVersion: 21
com.android.support:support-v4:21.0.+
Run Code Online (Sandbox Code Playgroud)

.travis.yml

- build-tools-21.0.1
- android-21
- extra-android-support
- extra-google-google_play_services
- extra-google-m2repository
Run Code Online (Sandbox Code Playgroud)

我们得到了错误

 private static class IdlingDrawerListener implements DrawerListener, IdlingResource {
                   ^
  class file for android.support.v4.widget.DrawerLayoutImpl not found
/home/travis/build/something/sample/src/test/java/com/abc/somesample/espresso/DrawerActions.java:200: error: cannot find symbol
        private ResourceCallback callback;
                ^
  symbol:   class ResourceCallback
  location: class IdlingDrawerListener
/home/travis/build/something/sample/src/test/java/com/abc/somesample/espresso/DrawerActions.java:255: error: cannot find symbol
        public void registerIdleTransitionCallback(ResourceCallback callback) {
                                                   ^
  symbol:   class ResourceCallback
  location: class IdlingDrawerListener
/home/travis/build/something/sample/src/test/java/com/abc/somesample/espresso/DrawerActions.java:153: error: method setDrawerListener in class DrawerLayout cannot be applied to given types;
                drawer.setDrawerListener(IdlingDrawerListener.getInstance(existingListener));
                      ^
  required: DrawerListener
  found: IdlingDrawerListener
  reason: actual argument IdlingDrawerListener cannot be converted to DrawerListener by method invocation conversion
/home/travis/build/something/sample/src/test/java/com/abc/somesample/espresso/DrawerActions.java:192: error: cannot find symbol
                instance = new IdlingDrawerListener();
                           ^
  symbol:   constructor IdlingDrawerListener()
  location: class IdlingDrawerListener
/home/travis/build/something/sample/src/test/java/com/abc/somesample/espresso/DrawerActions.java:193: error: method registerIdlingResources in class Espresso cannot be applied to given types;
                Espresso.registerIdlingResources(instance);
                        ^
  required: IdlingResource[]
  found: IdlingDrawerListener
  reason: argument type IdlingDrawerListener does not conform to vararg element type IdlingResource
/home/travis/build/something/sample/src/test/java/com/abc/somesample/espresso/DrawerActions.java:205: error: non-static variable this cannot be referenced from a static context
            this.parentListener = parentListener;
            ^
/home/travis/build/something/sample/src/test/java/com/abc/somesample/espresso/DrawerActions.java:205: error: cannot find symbol
            this.parentListener = parentListener;
                ^
  symbol: variable parentListener
/home/travis/build/something/sample/src/test/java/com/abc/somesample/espresso/DrawerActions.java:208: error: method does not override or implement a method from a supertype
        @Override
        ^
/home/travis/build/something/sample/src/test/java/com/abc/somesample/espresso/DrawerActions.java:215: error: method does not override or implement a method from a supertype
        @Override
        ^

/home/travis/build/something/sample/src/test/java/com/abc/somesample/espresso/DrawerActions.java:256: error: non-static variable this cannot be referenced from a static context
            this.callback = callback;
            ^
/home/travis/build/something/sample/src/test/java/com/abc/somesample/espresso/DrawerActions.java:256: error: cannot find symbol
            this.callback = callback;
                ^
  symbol: variable callback
/home/travis/build/something/sample/src/test/java/com/abc/somesample/espresso/DrawerActions.java:254: error: method does not override or implement a method from a supertype
        @Override
        ^
Run Code Online (Sandbox Code Playgroud)

Travis甚至表明已下载并安装了Android支持库修订版21,但仍然出现上述错误.

更新:

我们试图在travis人员设置的VM上运行测试.

  • 最初在机器上运行时,测试失败并出现相同的错误.
  • 通过internal_impl-21.0.0.jarsupport-v4 aar文件中找到的手动复制到我们的libs/目录并传递测试来尝试.
  • 手动安装Android SDK tools 23.0.5在VM上并通过测试.

我们的项目.travis.yml有以下几个方面:

- tools - platform-tools - build-tools-21.1.1 - android-21 - extra-android-support - extra-android-m2repository - extra-google-m2repository 特拉维斯的测试仍然失败.

rag*_*oid 1

编辑后的答案:

DrawerActions.java通过使用库中的预编译类可以解决此问题espresso-contrib。有关设置说明,请参阅链接