Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
travis support-v4 21.0上找不到android.support.v4.widget.DrawerLayoutImpl的类文件_Android_Android Gradle Plugin_Robolectric_Travis Ci_Android Espresso - Fatal编程技术网

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

travis support-v4 21.0上找不到android.support.v4.widget.DrawerLayoutImpl的类文件,android,android-gradle-plugin,robolectric,travis-ci,android-espresso,Android,Android Gradle Plugin,Robolectric,Travis Ci,Android Espresso,我们正在尝试对travis CI进行测试。我们有一个使用android.support.v4.widget.DrawerLayout的类 当我们使用android支持v4库时 build.gradle-> targetSdkVersion: 19 `compile 'com.android.support:support-v4:20.0.0'` .travis.yml - build-tools-19.1.0 - android-19 - extra-android-support - ex

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

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

targetSdkVersion: 19
`compile 'com.android.support:support-v4:20.0.0'`
.travis.yml

- build-tools-19.1.0
- android-19
- extra-android-support
- extra-google-google_play_services
- extra-google-m2repository
- build-tools-21.0.1
- android-21
- extra-android-support
- extra-google-google_play_services
- extra-google-m2repository
我们没有得到这个错误,但在使用

build.gradle
->

targetSdkVersion: 21
com.android.support:support-v4:21.0.+
.travis.yml

- build-tools-19.1.0
- android-19
- extra-android-support
- extra-google-google_play_services
- extra-google-m2repository
- build-tools-21.0.1
- android-21
- extra-android-support
- extra-google-google_play_services
- extra-google-m2repository
我们得到了错误

 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
        ^
Travis甚至表示,它已经下载并安装了Android支持库修订版21,但仍然存在上述错误

更新:

我们尝试在travis guys设置的VM上运行测试

  • 最初在计算机上运行时,测试失败,并出现相同的错误
  • 尝试手动将
    support-v4
    aar
    文件中的
    internal\u impl-21.0.0.jar
    复制到我们的
    libs/
    目录中,测试通过
  • 在虚拟机上手动安装
    Android SDK tools 23.0.5
    ,测试通过
我们的项目
.travis.yml
有以下几行:

-工具
-平台工具
-构建工具-21.1.1
-安卓-21
-额外的android支持
-extra-android-m2存储库
-extra-google-m2存储库

不过,travis的测试仍然失败。

这听起来像是travis中的一个bug。如果它不使用Gradle来构建所有内容,而是自己构建一些内容(这听起来很像,因为您有特殊的YAML文件列出依赖项),那么它需要处理AAR文件依赖项,不仅包括classes.jar,还包括libs/下的jars。

您可能遇到了这个问题(?)

具有讽刺意味的是,@Tor Norbye的最后一句话是:),他说

对于0.8.14,类装入器问题已修复。gradle同步问题已经解决 以0.14的刻度固定在模型侧


1。ActionBarDrawerToggle:不推荐、棒棒糖的新版本样式和更新的示例

通过以下方式实现嵌套接口:

  • 新版本与标准和样式兼容

    请参阅以更新它,或参阅和

    需要最新的SDK版本、appcompat-v7.21.0.+、support-v4.21.0.+和Android支持存储库


    2。Travis配置:需要最新的SDK工具、平台工具、构建工具和额外的存储库

    extra-android-m2存储库
    build-tools-21.1.1
    添加到
    android:components:

    默认情况下使用工具23.0.2,棒棒糖需要

    重要提示:从下载最新的Android系统组件 在Android SDK管理器中,必须首先将SDK工具更新到 最新版本并重新启动SDK管理器。如果没有,则 最新的Android系统组件将无法下载

    您需要首先更新SDK
    tools
    ,以便获得其他组件的最新版本。工具v23.0.5要求更新
    平台工具
    v19+,并要求v21+正常工作。Plus平台、系统img等。尝试以下方法:

    android:
      components:
        # Uncomment the lines below if you want to
        # use the latest revision of Android SDK Tools
        - platform-tools
        - tools
        - build-tools-21.1.1
        - android-21
        - extra-android-support
        - extra-android-m2repository
        - extra-google-m2repository
        - extra-google-google_play_services
        - sys-img-armeabi-v7a-android-21
      licenses:
        - 'android-sdk-license-5be876d5'
    

    3。重要提示:基于Gradle的项目需要额外的android-m2repository无需额外的android支持

    extra-android-m2存储库
    包含gradle/android studio的工件(.aar文件)

    注意:如果您使用Android Studio进行开发,请选择并安装 Android支持存储库项目,而不是Android支持 Eclipse上的库)

    Android Studio的更多信息:


    4。android中缺少的DroperLayoutImpl类。支持:support-v4:21.0.2 internal.jar

    您可以尝试将
    21.0.+
    更改为
    21.0.2
    。我不确定Travis ci依赖项解析工作流

    compile 'com.android.support:support-v4:21.0.2'
    
    compile 'com.android.support:appcompat-v7:21.0.2'
    
    我不知道,但也许它复制了其他android.support版本,没有内部缺少的类和jar

    通过在构建中添加如下内容,检查是否存在内部jar:

    export MOD_NAME= yourapplicationmodulename
    
    'cat ${TRAVIS_BUILD_DIR}/${MOD_NAME}/build/intermediates/tmp/dex/debug/libraryList.txt'
    
    如果您使用21.0.+并下载m2repository 21.0.0版本,但随后在maven上查找更新版本,它发现了Android支持库,修订版21.0.1,没有aar,那么请尝试新的21.0.2版本


    5。浓缩咖啡或双份浓缩咖啡、抽屉、浓缩咖啡罐和其他附属设施

    关于
    Espresso
    和其他到旧支持库的可转换依赖项,您可以尝试升级它们或排除android。支持:

    我不熟悉用于Android的浓缩咖啡测试工具的纯Gradle端口
    Double espresso
    ,但Jake Wharton写道():

    重复依赖项

    由于当前Android插件中存在缺陷,您可能需要排除 应用程序和测试应用程序中重复的依赖项

    例如,如果你对Dagger有依赖,你需要 暂时手动将其从测试依赖项中排除

    androidTestCompile('com.jakewharton.espresso:espresso:1.1-r3'){
    排除组:'com.squareup.dagger'}以下是 可能需要暂时排除的浓缩咖啡依赖性:

    dagger:dagger:1.2.1。。。以及“support-v4” 模块:

    com.android.support:support-v4:21.0.0编辑答案:


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

    在build.gradle中手动将库添加到服务器:

    testCompile fileTree(dir: "${rootDir}/YourProject/build/intermediates/exploded-aar/com.android.support/support-v4/", include: "**/*.jar")
    

    经过多次测试后,添加依赖项对我有效:

    compile 'com.android.support:internal_impl:22.2.0'
    

    不幸的是,当您更改“支持”库版本时,您必须更新此JAR。

    AOSP问题跟踪程序中报告了类似的错误。我在Jenkins build system上遇到了相同的问题。它在本地机器上运行良好,但由于某种原因在Jenkins上崩溃。@Mikoos您可以轻松地检查androi