FolioReader / FolioReader-Android

A Java ePub reader and parser framework for Android.
BSD 3-Clause "New" or "Revised" License
2.25k stars 718 forks source link

library not working with minSdkVersion 19 #323

Closed anuragvarshney closed 5 years ago

anuragvarshney commented 5 years ago

Issue / Feature - Not able to use the library if minSdkVersion is 19 FolioReader version - 0.5.1 FolioReader Stock / Modified - Stock Android SDK - 28 Mobile / Tablet / Emulator Info - Mobile Crash / Error - * What went wrong: Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.

com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/0.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/1.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/2.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/3.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/4.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/5.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/6.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/7.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/8.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/9.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/10.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/11.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/12.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/13.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/14.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/15.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/16.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/17.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/18.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/19.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/20.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/21.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/22.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/23.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/24.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/25.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/26.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/27.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/28.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/29.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/30.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/31.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/32.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/33.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/34.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/35.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/36.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/37.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/38.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/39.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/40.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/41.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/42.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/43.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/44.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/45.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/46.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/47.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/48.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/49.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/50.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/51.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/52.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/53.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/54.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/55.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/56.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/57.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/58.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/59.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/60.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/61.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/62.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/63.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/64.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/65.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/66.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/67.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/68.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/69.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/70.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/71.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/72.jar, /home/anurag/AndroidStudioProjects/EpubReader/app/build/intermediates/transforms/dexBuilder/debug/73.jar The number of method references in a .dex file cannot exceed 64K. Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html

Steps to reproduce / Describe in detail - Just keep ypur minsdkversion 19 and compile and run the project

hrishikesh-kadam commented 5 years ago

@anuragvarshney You will have to add Multidex support in your app module like the way we have added in our sample app module. See last 2 lines of the log you submitted, it says -

The number of method references in a .dex file cannot exceed 64K. Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html

So, this isn't a FolioReader bug. Once it gets resolved, please do close the issue.

anuragvarshney commented 5 years ago

@hrishikesh-kadam after enabling multidex some of the dependencies in folioreader were clashing with my project I was getting this error

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':sq-app:transformClassesWithMultidexlistForIdevstagingDebug'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:103) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73) at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59) at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101) at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44) at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91) at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98) at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663) at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:597) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: Error while generating the main dex list. at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55) at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104) at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:124) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95) ... 30 more Caused by: com.android.build.api.transform.TransformException: Error while generating the main dex list. at com.android.build.gradle.internal.transforms.D8MainDexListTransform.transform(D8MainDexListTransform.kt:144) at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239) at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235) at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102) ... 42 more Caused by: com.android.builder.multidex.D8MainDexList$MainDexListException: com.android.tools.r8.errors.CompilationError: Program type already present: org.slf4j.helpers.BasicMarker at com.android.builder.multidex.D8MainDexList.generate(D8MainDexList.java:87) at com.android.build.gradle.internal.transforms.D8MainDexListTransform.transform(D8MainDexListTransform.kt:131) ... 45 more Caused by: com.android.tools.r8.errors.CompilationError: Program type already present: org.slf4j.helpers.BasicMarker at com.android.tools.r8.utils.ProgramClassCollection.resolveClassConflictImpl(ProgramClassCollection.java:64) at com.android.tools.r8.utils.ProgramClassCollection.lambda$create$0(ProgramClassCollection.java:25) at com.android.tools.r8.utils.ProgramClassCollection.create(ProgramClassCollection.java:24) at com.android.tools.r8.graph.LazyLoadedDexApplication$Builder.build(LazyLoadedDexApplication.java:124) at com.android.tools.r8.dex.ApplicationReader.read(ApplicationReader.java:123) at com.android.tools.r8.dex.ApplicationReader.read(ApplicationReader.java:86) at com.android.tools.r8.GenerateMainDexList.run(GenerateMainDexList.java:40) at com.android.tools.r8.GenerateMainDexList.run(GenerateMainDexList.java:110) at com.android.builder.multidex.D8MainDexList.generate(D8MainDexList.java:83)

so I excluded some dependencies from folio reader and included folioreader in this way implementation ('com.folioreader:folioreader:0.5.1'){ exclude group: "org.slf4j" exclude group: "joda-time" } will it effect the functionality of folioreader in any way ?

hrishikesh-kadam commented 5 years ago

Not sure, we never got exceptions like these. Even we have used multidex in the sample app module.

anuragvarshney commented 5 years ago

so this is not the problem of multidex some of the dependencies were clashing in my project and the library so I wanted to ask that excluding those would make any difference or not?

hrishikesh-kadam commented 5 years ago

@anuragvarshney I did reply saying "Not sure". Because we never had any issue like that, can't comment on it.

anuragvarshney commented 5 years ago

@hrishikesh-kadam thanks for your help and prompt response, closing this issue