【问题标题】:Gradle Build Test "Could not normalize...", for doing Robolectric tests in Android StudioGradle Build Test "Could not normalize...",用于在 Android Studio 中进行 Robolectric 测试
【发布时间】:2014-12-20 18:29:15
【问题描述】:

在 Windows 8.1 上运行 gradlew test --stacktrace。我收到此错误:

无法规范文件 'C:\Users\Aleesa\Documents\SDK\platforms\android-18\android.jar;C:\Users\Aleesa\Documents\SDK\add-ons\addon-google_apis- 的路径google-18\libs\usb.jar;C:\Users\Aleesa\Documents\SDK\add-ons\addon-google_apis-google-18\libs\effects.jar;C:\Users\Aleesa\Documents\SDK\附加组件\addon-google_apis-google-18\libs\maps.jar'。

我知道它是因为没有文件叫它。我需要能够拆分(“;”)这个,但我不知道如何在 DST 中。这是我的模块的 build.gradle:

buildscript {
    repositories {
        mavenCentral()
        maven { url 'http://download.crashlytics.com/maven' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
        classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:+'
        classpath 'com.jakewharton.hugo:hugo-plugin:1.1.0'
        classpath 'org.robolectric:robolectric-gradle-plugin:0.14.+'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'android-apt'
apply plugin: 'crashlytics'
apply plugin: 'hugo'
apply plugin: 'robolectric'

repositories {
    maven { url 'http://download.crashlytics.com/maven' }
}

android {
    compileSdkVersion "Google Inc.:Google APIs:18"
    buildToolsVersion "20.0.0"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 18
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    packagingOptions {
        exclude 'META-INF/services/javax.annotation.processing.Processor'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
    }

    lintOptions {
        abortOnError false
        disable 'InvalidPackage'
    }

    sourceSets {
        androidTest {
            setRoot('src/androidTest')
        }
    }
}

dependencies {
    compile project(':Dependencies')
    compile 'com.jakewharton:butterknife:5.1.2'
    compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
    compile 'com.viewpagerindicator:library:2.4.1@aar'

    compile project(':ALIBShowcaseViewLegacy')
    compile project(':ALIBDateTimePicker')
    compile project(':ALIBFancyCoverFlow')
    compile project(':ALIBFlowLayout')
    compile project(':ALIBParalloidViews')
    compile project(':ALIBSlidingUpPanel')
    compile project(':ALIBTiltEffect')
    compile project(':ALIBFloatLabel')

    compile files('libs/android-async-http-1.4.5.jar')
    compile files('libs/android-viewbadger.jar')
    compile files('libs/gcm.jar')
    compile files('libs/PayPalAndroidSDK-2.8.2.jar')

    compile 'org.scribe:scribe:1.3.5'
    compile 'com.squareup.picasso:picasso:2.3.4'
    compile 'commons-io:commons-io:2.4'
    compile 'org.apache.commons:commons-collections4:4.0'
    compile 'org.apache.commons:commons-lang3:3.3.2'
    compile 'com.google.android.gms:play-services:5.0.89'
    compile 'com.google.code.gson:gson:2.2.4'
    compile 'joda-time:joda-time:2.3'
    compile 'com.crashlytics.android:crashlytics:1.+'
    compile 'fr.avianey:facebook-android-api:+@aar'
    compile 'com.nhaarman.listviewanimations:lib-core:3.1.0@aar'
    compile 'com.nhaarman.listviewanimations:lib-manipulation:3.1.0@aar'
    compile 'com.nhaarman.listviewanimations:lib-core-slh:3.1.0@aar'
    compile 'de.greenrobot:eventbus:2.4.0'

    //We dont use this
    compile 'com.github.nirhart:parallaxscroll:1.0'
    compile 'se.emilsjolander:stickylistheaders:2.5.2+'
    //Auto parcel shit
    compile 'com.github.frankiesardo:auto-parcel:+'
    apt 'com.github.frankiesardo:auto-parcel-processor:+'

    //Genymotion
    androidTestCompile 'com.genymotion.api:genymotion-api:1.0.0'

    //Test shit
    androidTestCompile 'org.hamcrest:hamcrest-integration:1.1'
    androidTestCompile 'org.hamcrest:hamcrest-core:1.1'
    androidTestCompile 'org.hamcrest:hamcrest-library:1.1'

    androidTestCompile('junit:junit:4.+') {
        exclude module: 'hamcrest-core'
    }
    androidTestCompile('org.robolectric:robolectric:2.3') {
        exclude module: 'classworlds'
        exclude module: 'commons-logging'
        exclude module: 'httpclient'
        exclude module: 'maven-artifact'
        exclude module: 'maven-artifact-manager'
        exclude module: 'maven-error-diagnostics'
        exclude module: 'maven-model'
        exclude module: 'maven-project'
        exclude module: 'maven-settings'
        exclude module: 'plexus-container-default'
        exclude module: 'plexus-interpolation'
        exclude module: 'plexus-utils'
        exclude module: 'support-v4'
        exclude module: 'wagon-file'
        exclude module: 'wagon-http-lightweight'
        exclude module: 'wagon-provider-api'
    }

//    compile files(myClasspath.split(";"))
}

robolectric {
    // configure the set of classes for JUnit tests
    include '**/*Test.class'
    exclude '**/espresso/**/*.class'

    // configure max heap size of the test JVM
    maxHeapSize = '2048m'

    // configure the test JVM arguments
    jvmArgs '-XX:MaxPermSize=512m', '-XX:-UseSplitVerifier'

    // Specify max number of processes (default is 1)
    maxParallelForks = 4

    // Specify max number of test classes to execute in a test process
    // before restarting the process (default is unlimited)
    forkEvery = 150

    // configure whether failing tests should fail the build
    ignoreFailures true

    // use afterTest to listen to the test execution results
    afterTest { descriptor, result ->
        println "Executing test for ${descriptor.name} with result: ${result.resultType}"
    }
}

【问题讨论】:

  • 您在构建的哪个阶段收到上述错误?在失败之前它想做什么?
  • 如果您将compileSdkVersion 更改为18 并将buildToolsVersion 更改为21.1.2?你的目标不是 KitKat 和 Lollipop,为什么?
  • @AlexFlorescu 我正在使用运行“gradlew test”。失败发生在 testDebug 之后。上一行,testDebugClasses 是成功的。这是堆栈跟踪:hastebin.com/omunezimim.rb

标签: android gradle robolectric robolectric-gradle-plugin


【解决方案1】:

将您的 Android Gradle 插件版本更改为:

dependencies {
    classpath 'com.android.tools.build:gradle:1.1.2'
}

这是该插件早期版本中的一个错误,无法正确转义 Windows 上的非法字符,并已在 v1.1.2 中修复:

https://code.google.com/p/android/issues/detail?id=148912

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多