Getting Android+Gradle+Jenkins+Spoon to work together Getting Android+Gradle+Jenkins+Spoon to work together jenkins jenkins

Getting Android+Gradle+Jenkins+Spoon to work together


I agree with bonnyz, use spoon plugin. I got it working with multidex.

Here is my build.config

    buildscript {        repositories {            mavenCentral()                /** Ommited project specific config **/        }        dependencies {            classpath 'de.felixschulze.gradle:gradle-spoon-plugin:2.7.3'        }    }    apply plugin: 'com.android.application'    apply plugin: 'maven'    apply plugin: 'de.felixschulze.gradle.spoon'    repositories {                /** Ommited project specific config **/        maven { url "htt/jitpack.io" }        flatDir{            dirs 'libs'        }    }    android {        compileSdkVersion 23        buildToolsVersion "23.0.1"        packagingOptions {            exclude 'META-INF/DEPENDENCIES.txt'            exclude 'META-INF/LICENSE.txt'            exclude 'META-INF/NOTICE.txt'            exclude 'META-INF/NOTICE'            exclude 'META-INF/LICENSE'            exclude 'META-INF/DEPENDENCIES'            exclude 'META-INF/notice.txt'            exclude 'META-INF/license.txt'            exclude 'META-INF/dependencies.txt'            exclude 'META-INF/LGPL2.1'            exclude 'LICENSE.txt'    //        exclude 'NOTICE.txt'            exclude 'NOTICE'        }        defaultConfig {            minSdkVersion 14            targetSdkVersion 23            multiDexEnabled = true            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"        }        /*        Creating flavours. Local is the basic dev mode. QA is built for testing, distributing to QA. Production is the final version        For Local the crashlytics is disabled. For QA and Production, crashlytics is enabled.        */        //Optimizing Multidex Development Builds        // Dev utilizes minSDKVersion = 21 to allow the Android gradle plugin        // to pre-dex each module and produce an APK that can be tested on        // Android Lollipop without time consuming dex merging processes.        // For more info https://developer.android.com/tools/building/multidex.html#dev-build        productFlavors {            QA {                // The actual minSdkVersion for the application.                minSdkVersion 14            }            Production {                // The actual minSdkVersion for the application.                minSdkVersion 14            }            Local {                //Optimizing Multidex Development Builds https://developer.android.com/tools/building/multidex.html#dev-build                minSdkVersion 21            }        }        signingConfigs {            /**             * Uncomment this when you are doing a release build. Make sure you set Env Vars             */            release {                        /** Ommited project specific config **/            }            debug {                        /** Ommited project specific config **/            }        }        buildTypes {            release {                minifyEnabled false                proguardFiles  'proguard-rules.pro'                /**                 * Uncomment this when you are doing a release build.                 */                /** Ommited project specific config **/            }            debug {                        /** Ommited project specific config **/            }        }        dexOptions {            jumboMode true            javaMaxHeapSize "4g"            incremental true        }    }    spoon {        debug = true        failOnFailure = true        adbTimeout = 2 * 60        failIfNoDeviceConnected = true    }    project.getConfigurations().all { config ->        if (config.name.contains("AndroidTest")) {            config.resolutionStrategy.eachDependency { DependencyResolveDetails details ->                if (details.requested.name == "multidex") {                    details.useTarget("de.felixschulze.teamcity:teamcity-status-message-helper:1.2")                }            }        }    }    dependencies {        /** Ommited other dependencies **/        provided fileTree(dir: 'libs', include: ['*.jar'])        /** *** Google libraries   *****/        compile 'com.google.code.gson:gson:2.3'        compile 'com.android.support:appcompat-v7:23.1.1'        compile 'com.android.support:support-v4:23.1.1'        compile 'com.android.support:support-v13:23.1.1'        compile 'com.android.support:cardview-v7:23.1.1'        compile 'com.android.support:design:23.1.1'        compile 'com.android.support:multidex:1.0.1'        compile('com.afollestad.material-dialogs:core:0.8.4.2@aar') {            transitive = true        }        compile 'com.squareup.spoon:spoon-runner:1.3.1'        debugCompile 'com.google.dexmaker:dexmaker-mockito:1.+'        debugCompile 'com.google.dexmaker:dexmaker:1.+'        debugCompile 'org.mockito:mockito-core:1.+'        debugCompile 'org.hamcrest:hamcrest-core:1.3'        // Instrumentation testing dependencies        compile 'com.android.support:support-annotations:23.1.1'        androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'        androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.1'        androidTestCompile 'com.android.support.test:runner:0.4.1'        androidTestCompile 'com.android.support.test:rules:0.4.1'        // Unit testing dependencies        testCompile 'junit:junit:4.12'        // Memory leak testing dependencies        debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'        releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'        // Dependency injection        compile 'com.google.dagger:dagger:2.0.1'        apt 'com.google.dagger:dagger-compiler:2.0.1'        provided 'org.glassfish:javax.annotation:10.0-b28'        androidTestApt 'com.google.dagger:dagger-compiler:2.0.1'        compile 'com.google.android.gms:play-services-analytics:8.1.0'        // Third party libraries        androidTestCompile 'com.squareup.spoon:spoon-client:1.3.1'        // Crashlytics Kit        android {            lintOptions {                abortOnError false            }        }    }    configurations {        androidTestCompile.exclude group: 'com.android.support', module: 'support-v4'        androidTestCompile.exclude group: 'com.android.support', module: 'recyclerview-v7'    }    configurations.all {        resolutionStrategy.force 'com.android.support:support-annotations:23.1.1'    }

Run the tests by

gradle clean connectedQADebugAndroidTest

This will run all the tests with QADebug flavor.

For spoon plugin, I used https://github.com/x2on/gradle-spoon-plugin


The best thing is to use the Spoon Gradle Plugin directly.

From the official docs:

Setup

buildscript {  repositories {    mavenCentral()  }  dependencies {    classpath 'com.stanfy.spoon:spoon-gradle-plugin:1.0.2'  }}apply plugin: 'spoon'// This section is optionalspoon {  // for debug output  debug = true  // To run a single test class  className = 'fully.qualified.TestCase'  // To run a single method in TestCase  methodName = 'testMyApp'}

Run

./gradlew spoon