pickFirst not work

编译错误

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上可行。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,787评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,286评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,010评论 6 342
  • 一点点的把自己遗失在曾经的美好幻想里 但心里的自己总会在某个时刻被突然惊醒 突然发现现在的自己是已经是Low到底线...
    在雨巷撑着油纸伞阅读 651评论 0 1
  • 心雨 雨夜,独自忧伤 到底心有涟漪 流逝的时光总是那样惹人怀想 如今的月夜依然在春寒中惆怅 缠绵的雨声也在...
    云瑾居士阅读 107评论 0 0