Mbed forum

Compile issue in mbed-cloud-sdk:1.2.5


(ispace droid) #1

I try to add the dependency in my project as compile ‘com.arm.mbed.cloud.sdk:mbed-cloud-sdk:1.2.5’. It is throwing runtime exceptions as Execution failed for task ‘:app:transformDexArchiveWithDexMergerForDebug’.

com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lcom/arm/mbed/cloud/sdk/internal/JSON$1;

Has anyone came across this type of issue.


(Graham Hammond) #2

Hi ispacedroid, we’ll take a look and try to reproduce. Could you add some more details on your project and the tools / versions you are using. Thanks.


(ispace droid) #3

Hi Madchutney, Thanks for the reply.
I am trying to integrate in android Hello world application. below are the tools and versions I am using
Java - 1.8
Gradle 4.1
Android studio 3.0

This is way i am setting the dependency.
dependencies {
implementation 'com.android.support:appcompat-v7:25.1.0’
implementation 'com.android.support:design:25.1.0’
implementation 'com.android.support.constraint:constraint-layout:1.0.2’
compile ‘com.arm.mbed.cloud.sdk:mbed-cloud-sdk:1.2.5’
}


(Adrien CABARBAYE) #4

Hello ispacedroid,

Thank you for raising this issue and I can effectively reproduce the problem. I think I know its root cause but do not have a fix or a solution just yet: it seems to be caused by some code we generate and which would need changing. The SDK is currently built and tested on Oracle Java and may need some tweaking in the future to fully support android. Before this is the case though, we will try to provide you with a solution that can unblock you in the next release. In the meantime, could you create an issue on the Github repository so that you can track its progress.
Many thanks.


(Adrien CABARBAYE) #5

Hello ispacedroid,

I am writing to let you know that this bug has now been fixed as part of latest SDK release (i.e. 1.2.7).
Nevertheless, as mentioned in project’s Readme, current SDK build artefacts are not fully tailored for Android but can be used as is on this mobile platform. However, oltu dependency will have to be excluded to remove any compilation issue (e.g. Error converting bytecode to dex:\nCause: com.android.dex.DexException: Multiple dex files define Lorg/apache/oltu/oauth2/common/domain/credentials/Credentials). To do so, import the SDK in the gradle file, as follows:

implementation( 'com.arm.mbed.cloud.sdk:mbed-cloud-sdk:1.x.y' ){
    // Excluding a particular transitive dependency:
    exclude group: 'org.apache.oltu.oauth2'
}

We hope this will unblock you in your mobile application development.

Many thanks.