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
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
Since you are working on an Android project, please consider use AWS SDK for Android. It's optimized for Android platform. It has smaller libraries, fewer dependencies, and other optimizations. It should solve the conflicting problem. Check out the developer guide.
It's just as simple as updating the dependency to compile 'com.amazonaws:aws-android-sdk-sns:2.2.+'. It's usage should be compatible with that of Java SDK.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With