I can go further, but you can get stuck in the next problem.
If I load your build file (and reproduce your build error) when I enter the IDE and ask me to take me to the BeansException class, I get the following:

You can see that BeansException is BeansException in two different places, which is forbidden in Android builds, so you see an error. You need to customize your assembly so that each class is defined in one place.
With a little more caution, you can use this command to see your dependency tree. From the directory of your application module, run the following command:
../gradlew dependencies
The relevant part of the output is here:
_debugApk - ## Internal use, do not manually configure ## +--- com.android.support:appcompat-v7:20.+ -> 20.0.0 | \--- com.android.support:support-v4:20.0.0 | \--- com.android.support:support-annotations:20.0.0 +--- org.springframework.android:spring-android-rest-template:1.+ -> 1.0.1.RELEASE | \--- org.springframework.android:spring-android-core:1.0.1.RELEASE +--- org.springframework.android:spring-android-auth:1.+ -> 1.0.1.RELEASE | +--- org.springframework.android:spring-android-core:1.0.1.RELEASE | +--- org.springframework.android:spring-android-rest-template:1.0.1.RELEASE (*) | +--- org.springframework.security:spring-security-crypto:3.1.3.RELEASE -> 3.2.4.RELEASE | \--- org.springframework.social:spring-social-core:1.0.2.RELEASE -> 1.1.0.RC1 +--- org.springframework.android:spring-android-core:1.+ -> 1.0.1.RELEASE +--- org.springframework.security:spring-security-crypto:3.+ -> 3.2.4.RELEASE +--- org.springframework.social:spring-social-core:1.+ -> 1.1.0.RC1 +--- org.springframework.social:spring-social-twitter:1.+ -> 1.1.0.RC1 | +--- com.fasterxml.jackson.core:jackson-databind:2.3.0 -> 2.3.2 | | +--- com.fasterxml.jackson.core:jackson-annotations:2.3.0 | | \--- com.fasterxml.jackson.core:jackson-core:2.3.2 | +--- org.springframework.security:spring-security-crypto:3.2.0.RELEASE -> 3.2.4.RELEASE | +--- org.springframework.social:spring-social-core:1.1.0.RC1 | +--- org.springframework.social:spring-social-config:1.1.0.RC1 | | +--- org.springframework.social:spring-social-web:1.1.0.RC1 | | | +--- javax.inject:javax.inject:1 | | | +--- org.springframework:spring-webmvc:4.0.2.RELEASE | | | | +--- org.springframework:spring-beans:4.0.2.RELEASE | | | | +--- org.springframework:spring-context:4.0.2.RELEASE | | | | | +--- org.springframework:spring-aop:4.0.2.RELEASE | | | | | | +--- aopalliance:aopalliance:1.0 | | | | | | \--- org.springframework:spring-beans:4.0.2.RELEASE | | | | | +--- org.springframework:spring-beans:4.0.2.RELEASE | | | | | \--- org.springframework:spring-expression:4.0.2.RELEASE | | | | \--- org.springframework:spring-expression:4.0.2.RELEASE | | | \--- org.springframework.social:spring-social-core:1.1.0.RC1 | | \--- org.springframework.social:spring-social-core:1.1.0.RC1 | +--- com.fasterxml.jackson.core:jackson-core:2.3.0 -> 2.3.2 | \--- com.fasterxml.jackson.core:jackson-annotations:2.3.0 \--- com.fasterxml.jackson.core:jackson-databind:2.3.2 (*)
From this it can be seen that org.springframework.social:spring-social-twitter:1.+ ultimately includes org.springframework:spring-beans:4.0.2.RELEASE through its transitive dependencies (which you learned because you highlighted this as a line causing a build problem), but that means that if it is already tied to a spring-android core, it is redundant. I see no other spring dependency - beans from spring -android-core; perhaps this class is simply packaged in a jar and is not even addictive.
Anyway, you can use this syntax in your dependencies to tell Gradle not to accept a transitive dependency:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:20.+' compile 'org.springframework.android:spring-android-rest-template:1.+' compile 'org.springframework.android:spring-android-auth:1.+' compile 'org.springframework.android:spring-android-core:1.+' compile 'org.springframework.security:spring-security-crypto:3.+' compile 'org.springframework.social:spring-social-core:1.+' compile('org.springframework.social:spring-social-twitter:1.+') { exclude module: 'spring-beans' } compile 'com.fasterxml.jackson.core:jackson-databind:2.3.2' }
If I do this, there will no longer be a dex multiple-files-define-a-class error. However, now I get this similar but different error with duplicate files, which I can think about a bit, but I'm not sure if I can fix it without writing a test application that creates Spring, which goes beyond what I will do SO in response;)
:app:packageDebug Error: duplicate files during packaging of APK /Users/sbarta/AndroidStudioProjects/MyApplication/app/build/outputs/apk/app-debug-unaligned.apk Path in archive: META-INF/spring.schemas Origin 1: /Users/sbarta/.gradle/caches/modules-2/files-2.1/org.springframework.social/spring-social-config/1.1.0.RC1/7afae4a4f83c64c4fd382c77708866e82900e799/spring-social-config-1.1.0.RC1.jar Origin 2: /Users/sbarta/.gradle/caches/modules-2/files-2.1/org.springframework/spring-context/4.0.2.RELEASE/6d6a781d99215990da8b398e1cdf09594a683209/spring-context-4.0.2.RELEASE.jar You can ignore those files in your build.gradle: android { packagingOptions { exclude 'META-INF/spring.schemas' } } :app:packageDebug FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:packageDebug'. > Duplicate files copied in APK META-INF/spring.schemas File 1: /Users/sbarta/.gradle/caches/modules-2/files-2.1/org.springframework.social/spring-social-config/1.1.0.RC1/7afae4a4f83c64c4fd382c77708866e82900e799/spring-social-config-1.1.0.RC1.jar File 2: /Users/sbarta/.gradle/caches/modules-2/files-2.1/org.springframework.social/spring-social-config/1.1.0.RC1/7afae4a4f83c64c4fd382c77708866e82900e799/spring-social-config-1.1.0.RC1.jar
This means that there are two META-INF/spring.schemas that are included from two different places, which is also unacceptable. However, you do not have the flexibility to tell dex to ignore only one of them; you can tell him to ignore all of them through:
android { packagingOptions { exclude 'META-INF/spring.schemas' } }
in the assembly file. I have the feeling that Spring needs this schema file (which one though ???), so if you do this, your application may still not work. Experiment with it, and if you still have problems, you can post another question and possibly get more specialized help.
I am not sure what the root of this problem is. Is this a packaging error in the Spring library that contains multiple schema files? Or should you decide this? Or are other build systems just doing the right thing? I'm not sure.