I have been trying to integrate the Amazon SNS client with an android project.
I am including the library using the following dependency commands
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.amazonaws:aws-java-sdk-sns:1.10.+'
compile 'com.google.android.gms:play-services:7.5.0'
}
Thus it automatically includes the above library (and its dependencies : aws_java_sdk_core and aws_java_sdk_sqs). All 3 libraries have a version 1.10.2.
The problem is that the AWS core has two modules
- commons-logging (commons-logging:commons-logging:1.1.3)
- httpclient (org.apache.httpcomponents:httpclient:4.3.6)
As android has the same packages internally, it excludes these modules to avoid any conflict. The result is that when the aws code tries to access some classes from these modules. Tt is expecting a different version of it, does not find the expected method, and crashes the application.
Is there any way to override android's exclude? (Or is there a better way to handle this situation?)
EDIT: Added gradle log :
WARNING: Dependency commons-logging:commons-logging:1.1.3 is ignored for debug as it may be conflicting with the internal version provided by Android.
In case of problem, please repackage it with jarjar to change the class packages
WARNING: Dependency org.apache.httpcomponents:httpclient:4.3.6 is ignored for debug as it may be conflicting with the internal version provided by Android.
In case of problem, please repackage it with jarjar to change the class packages
WARNING: Dependency commons-logging:commons-logging:1.1.3 is ignored for release as it may be conflicting with the internal version provided by Android.
In case of problem, please repackage it with jarjar to change the class packages
WARNING: Dependency org.apache.httpcomponents:httpclient:4.3.6 is ignored for release as it may be conflicting with the internal version provided by Android.
In case of problem, please repackage it with jarjar to change the class packages