编译错误
Duplicate files copied in APK libstlport_shared.so
File 1: /path/to/libstlport_shared.so
File 2: /path/to/another/libstlport_shared.so
原因
有两个lib带有相同的so文件,导致打包时冲突
解决方法
方法一
gradle中设置
packagingOptions {
pickFirst '**/libstlport_shared.so'
}
方法二
gradle中设置
import com.android.build.gradle.internal.pipeline.TransformTask
def deleteDuplicateJniFiles() {
def files = fileTree("${buildDir}/path/to/") {
include "**/libstlport_shared.so"
}
files.each { it.delete() }
}
tasks.withType(TransformTask) { pkgTask ->
pkgTask.doFirst { deleteDuplicateJniFiles() }
}
故事
我们引入了腾讯的xlog和直播库,但是他们都是包含libstlport_shared.so,导致冲突。
网上搜索到方法一,经过尝试在gradle4.1版本没有问题。
但是在gradle2.10版本不行,pickFirst就像没有写一样。
后来搜索到方法二,实践在gradle2.10上可行。