Search code examples
androidmavengradleksoap2

Adding kSOAP dependency to Gradle project


I'm trying to make kSOAP working in my Android project with Gradle.

This is my project's build.gradle file:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()

    maven {
        url 'http://ksoap2-android.googlecode.com/svn/m2-repo'
    }
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 18
    }
}

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
    compile 'ch.acra:acra:4.5.0'
    compile 'com.google.guava:guava:12.0'
    compile 'com.google.code.ksoap2-android:ksoap2-android:3.0.0'
}

The library seems to be included in the project and compilation DOES work but when I try to import a class (ie SoapObject) it seems like the namespace does not even exist. The funny thing is that the other libraries (such as ACRA or Guava) are working fine. How can I solve this problem?


Solution

  • This took me a bit to figure out as well, but I have finally gotten it working. I've been working on a WSDL parser that parses for KSoap and finally got that working only to fight through Gradle with the import of ksoap. At anyrate here is how you do it.

    apply plugin: 'android-library'
    
    buildscript {
        repositories {
            mavenCentral()
            maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' }
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.8.+'
            classpath 'com.google.code.ksoap2-android:ksoap2-android:3.1.1'
        }
    }
    
    repositories {
        maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' }
    }
    
    
    android {
        compileSdkVersion 19
        buildToolsVersion "19.0.1"
    
        defaultConfig {
            minSdkVersion 15
            targetSdkVersion 19
            versionCode 1
            versionName "1.0"
        }
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    
    dependencies {
    
        compile 'com.google.code.ksoap2-android:ksoap2-android:3.1.1'
    
    }
    

    Of course mine is a service library, so you may want to use apply plugin: 'android'. Hopefully this helps and saves somebody some time.