pushtorefresh / storio

Reactive API for SQLiteDatabase and ContentResolver.
Apache License 2.0
2.55k stars 182 forks source link

Problem with duplicate classes after upgrade from 1.x to 2.x version (Duplicate zip entry R.class) #852

Closed rusxakep closed 6 years ago

rusxakep commented 7 years ago
Copying resources from program jar [E:\...\app\build\intermediates\transforms\desugar\debug\26.jar] (filtered)
Warning: Exception while processing task java.io.IOException: Can't write [E:\...\app\build\intermediates\transforms\proguard\debug\0.jar] (Can't read [E:\...\app\build\intermediates\transforms\desugar\debug\26.jar(;;;;;;**.class)] (Duplicate zip entry [26.jar:com/pushtorefresh/storio2/R.class]))
:app:transformClassesAndResourcesWithProguardForDebug FAILED

And

Copying resources from program jar [C:\Users\...\.gradle\caches\modules-2\files-2.1\com.pushtorefresh.storio2\sqlite-annotations\2.1.0\6c0ec1ade86172c340deb36827a808857e5f4256\sqlite-annotations-2.1.0.jar] (filtered)
  Copying resources from program jar [C:\Users\...\.gradle\caches\modules-2\files-2.1\com.pushtorefresh.storio2\content-resolver\2.1.0\1eeaaf28979eb02406c5384549c96e5f40d2802f\content-resolver-2.1.0.jar] (filtered)
Warning: Exception while processing task java.io.IOException: Can't write [E:\Users\...\AndroidStudioProjects\Aggregatic_Tracker\app\build\intermediates\transforms\proguard\debug\0.jar] (Can't read [C:\Users\...\.gradle\caches\modules-2\files-2.1\com.pushtorefresh.storio2\content-resolver\2.1.0\1eeaaf28979eb02406c5384549c96e5f40d2802f\content-resolver-2.1.0.jar(;;;;;;**.class)] (Duplicate zip entry [content-resolver-2.1.0.jar:com/pushtorefresh/storio2/R.class]))
:app:transformClassesAndResourcesWithProguardForDebug FAILED
nikitin-da commented 7 years ago

Hi, @rusxakep! I met similar problems after migration app to build gradle tools 3 with other libraries, but after simple project rebuild error was gone. Did you try it?

rusxakep commented 7 years ago

This isn't proguard problem. Conflict with R.class in content-resolver-2.1.0 and sqlite-2.1.0. Removing R.class from any .jar fixes the problem.

Sar777 commented 7 years ago

hi, I'm confirm it

851

Caused by: com.android.dex.DexException: Multiple dex files define Lcom/pushtorefresh/storio2/R;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
        at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
        at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
artem-zinnatullin commented 6 years ago

@rusxakep @Sar777 indeed that happens, looks like for some reason build tooling decides that packageName of every module is com.pushtorefresh.storio2 instead of module-specific one like com.pushtorefresh.storio2.sqlite which we actually set in AndroidManifest of every module.

For now I recommend you to try depending on aar versions of our dependencies like this:

compile 'com.pushtorefresh.storio2:sqlite:2.0.0@aar'

Because turned out R class doesn't get packaged into aar, but packaged into jar

Sar777 commented 6 years ago

@artem-zinnatullin thx!

artem-zinnatullin commented 6 years ago

@Sar777 did it work for you? Just want to confirm :)

Sar777 commented 6 years ago

yes, work fine

artem-zinnatullin commented 6 years ago

Great, thanks!

rusxakep commented 6 years ago
// If you need StorIO for SQLite
compile 'com.pushtorefresh.storio2:sqlite:2.1.0@aar'
compile 'com.pushtorefresh.storio2:sqlite-annotations:2.1.0'
annotationProcessor 'com.pushtorefresh.storio2:sqlite-annotations-processor:2.1.0'

// If you need StorIO for ContentResolver
compile 'com.pushtorefresh.storio2:content-resolver:2.1.0'
compile 'com.pushtorefresh.storio2:content-resolver-annotations:2.1.0'
annotationProcessor 'com.pushtorefresh.storio2:content-resolver-annotations-processor:2.1.0'

Workaround work fine, thanks.