More than one file was found with OS independent path 'com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF'

Viewed 1280

Can someone please help me? I have been stuck with error for few days I have tried to exclude it using package options but doesn't seem to work.

caused by: com.android.builder.merge.DuplicateRelativeFileException: More than one file was found with OS independent path 'com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF'
at com.android.builder.merge.StreamMergeAlgorithms.lambda$acceptOnlyOne$2(StreamMergeAlgorithms.java:75)
at com.android.builder.merge.StreamMergeAlgorithms.lambda$select$3(StreamMergeAlgorithms.java:100)
at com.android.builder.merge.IncrementalFileMergerOutputs$1.create(IncrementalFileMergerOutputs.java:86)
at com.android.builder.merge.DelegateIncrementalFileMergerOutput.create(DelegateIncrementalFileMergerOutput.java:61)
at com.android.build.gradle.internal.transforms.MergeJavaResourcesTransform$1.create(MergeJavaResourcesTransform.java:386)
at com.android.builder.merge.IncrementalFileMerger.updateChangedFile(IncrementalFileMerger.java:221)
at com.android.builder.merge.IncrementalFileMerger.mergeChangedInputs(IncrementalFileMerger.java:190)
at com.android.builder.merge.IncrementalFileMerger.merge(IncrementalFileMerger.java:77)
at com.android.build.gradle.internal.transforms.MergeJavaResourcesTransform.transform(MergeJavaResourcesTransform.java:419)
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)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
at sun.reflect.GeneratedMethodAccessor312.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
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:131)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)
... 115 more

here are gradle dependencies used in this project.

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'androidx.appcompat:appcompat:1.1.0-alpha01'
    implementation project(':com.android.phone.common')
    implementation project(':com.android.contacts.common')
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha01'
    implementation 'com.google.android.material:material:1.1.0-alpha02'
    implementation 'androidx.legacy:legacy-support-v13:1.0.0'
    implementation 'com.umeng.analytics:analytics:6.1.4'
    implementation 'com.google.guava:guava:27.0.1-android'
    implementation project(path: ':com.android.common')
    implementation 'com.googlecode.libphonenumber:libphonenumber:8.10.2'
    implementation 'com.googlecode.libphonenumber:geocoder:2.108'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}
3 Answers

a) you'd have to add packagingOptions, to either include that file only once - or to exclude it:

android {

    ...

    packagingOptions {
        pickFirst "com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF"
        // exclude "com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF"
    }
}

b) another possible solution (the name of the project might vary):

implementation (project(":com.android.phone.common")) {
    exclude group: "com.googlecode.libphonenumber", module: "libphonenumber"
}

First Invalidate caches and restart, then clean the project and rebuild it .hope it helps.

I tried the above answers, and they unfortunately did not help. After finding the more general question below, I raised the JVM heap size specified in gradle.properties.

Insufficient memory explains why this did not happen on my CI pipeline, which has its own JVM options defined. It was only happening on my local build. A very strange error presentation, though.

https://stackoverflow.com/a/57607026/1454558

Related