简体   繁体   English

Gradle构建测试“无法规范化……”,用于在Android Studio中进行Robolectric测试

[英]Gradle Build Test “Could not normalize…”, for doing Robolectric tests in Android Studio

Running gradlew test --stacktrace on Windows 8.1. 在Windows 8.1上运行gradlew test --stacktrace。 I'm getting this error: 我收到此错误:

Could not normalize path for file '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\\add-ons\\addon-google_apis-google-18\\libs\\maps.jar'. 无法规范文件'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 \\ add-ons \\ addon-google_apis-google-18 \\ libs \\ maps.jar”。

I know its because there is no file called that. 我知道它是因为没有所谓的文件。 I need to be able to split(";") this but I'm not sure how to in DST. 我需要能够split(“;”),但是我不确定如何在DST中进行。 Here is my module's build.gradle: 这是我的模块的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}"
    }
}

Change your Android Gradle plugin version to: 将您的Android Gradle插件版本更改为:

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

This was a bug in earlier versions of the plugin that didn't properly escape illegal characters on Windows, and its fixed in v1.1.2: 这是该插件的早期版本中的一个错误,该错误无法在Windows上正确转义非法字符,并且已在v1.1.2中修复:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM