wirecardBrasil / moip-encryption-sdk-android

Cliente Android para integração com as APIs v2 Moip, possibilita a criptografia de dados sensíveis de cartão de crédito.
20 stars 6 forks source link

Conflito com Android Lollipop #1

Closed weibsons closed 9 years ago

weibsons commented 9 years ago

A dependência 'com.netflix.feign:feign-gson:6.1.2' está em conflito ao compilar o código com as bibliotecas do Android 5 (lollipop).

Foi tentando utilizar as dependências que estão em anexo com o projeto do github (fiz o clone para adicionar manual) mesmo assim continua com problemas.

Estou desenvolvendo nas seguintes configurações:

minSdkVersion 14 targetSdkVersion 21

Bibliotecas que estão em anexo com o meu projeto:

compile fileTree(include: ['*.jar'], dir: 'libs')
compile files('libs/pinchzoom.jar')
compile files('libs/urlimageviewhelper-1.0.4.jar')
compile files('libs/MoipSDK.jar')

compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:support-v4:21.0.3'
compile 'com.android.support:cardview-v7:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.3'
compile 'com.google.android.gms:play-services:6.5.87'
compile 'com.facebook.android:facebook-android-sdk:3.22.0'
compile 'com.madgag.spongycastle:pkix:1.51.0.0'
compile 'commons-codec:commons-codec:1.10'

Quando eu removo a dependência o sistema funciona normalmente e chega a enviar a requisição para o MOIP com o checkout transparente, mas quando ocorre o retorno (via callback) o sistema gera um CRASH informando que está faltando a biblioteca do Google GSON (que está dentro do pacote de dependência que eu removi).

Quando coloco a dependência o apk sequer executa, aparece o seguinte erro:

UNEXPECTED TOP-LEVEL EXCEPTION: Error:Execution failed for task ':app:dexDebug'.

com.android.ide.common.internal.LoggedErrorException: Failed to run command: C:\Users\Weibson\AppData\Local\Android\sdk\build-tools\21.1.2\dx.bat --dex --no-optimize --output C:\Users\Weibson\SkyDrive\Android\eCardapio\app\build\intermediates\dex\debug --input-list=C:\Users\Weibson\SkyDrive\Android\eCardapio\app\build\intermediates\tmp\dex\debug\inputList.txt Error Code: 2 Output: UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536 at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:502) at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:277) at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:168) at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303) at com.android.dx.command.dexer.Main.run(Main.java:246) at com.android.dx.command.dexer.Main.main(Main.java:215) at com.android.dx.command.Main.main(Main.java:106)

weibsons commented 9 years ago

Eu mesmo resolvi esse problema.

Com o Android 5.0 a quantidade de métodos de suporte terminou aumentando para poder ajustar a códigos passado, com isso termina estourando o limite de 65k de métodos suportados por um único DEX file, com isso dava erro justamente nessa maior importação.

Para resolver esse problema tem dois caminhos:

  1. Remover código e importação suja, ou seja, usando somente as libs realmente necessárias.
  2. Usando o MULTIDEX support para código pré-Lollipop (o Android Lollipop já possui suporte para multidex nativo).

Para ativar o suporte ao Multidex acompanhar a documentação oficial do Android: https://developer.android.com/tools/building/multidex.html

E caso, depois de configurar conforme informado o Multidex aparecer um erro java.lang.OutOfMemoryError: Java heap space, aumentar a memória reservada do dexOptions para 4G por exemplo:

build.gradle android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { applicationId "my package" minSdkVersion 14 targetSdkVersion 21

    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
dexOptions {
    javaMaxHeapSize "4g"
}

}

...

caueferreira commented 9 years ago

Obrigado pelo feedback. Disponibilizamos uma nova atualização da SDK, talvez queira conferir. Caso precise de ajuda, estamos aqui para ajuda-lo.

Abraços,