热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从混淆的classes.jar中删除外部库(在AndroidStudio/Gradle中)

如何解决《从混淆的classes.jar中删除外部库(在AndroidStudio/Gradle中)》经验,谁能帮忙解答一下?

我创建了一个安卓库(使用Android Studio),它导入外部.jar文件(仅包含接口)以便正确构建.但最终的库文件不应包含此文件,因为主应用程序项目将包含已包含外部库中包含的这些接口类的.jar文件.如果我将文件留在里面,编译器会抱怨"多个dex文件定义...".

我可以使用gradle从.aar中自动删除外部.jar库,如下所示:

android.libraryVariants.all { variant ->
    variant.outputs.each { output ->
        def packageLib = output.getPackageLibrary()
        packageLib.exclude('libs/externalLibrary.jar')
    }
}

但是如果使用ProGuard对模块进行模糊处理(minifyEnabled为true),则将外部库中的所有类文件添加到classes.jar中,然后将其打包到.aar文件中,因此不能以这种方式排除.

我可以编辑classes.jar文件并使用gradle自动从中删除文件,如下所示:

task makeRelease(type: Jar) {
    baseName='changedClasses'
    destinatiOnDir=file('../../release/')

    from zipTree('build/intermediates/bundles/release/classes.jar')
    exclude "com/externallibrary/**"
}

在完成库的构建后运行此任务时有效.但是我需要在proguard任务完成后运行此任务,但在将文件打包到最终的.aar之前,以便自动构建并运行最终的应用程序.到目前为止我还没有找到任何方法做到这一点......

因此:如何自动从包含在最终.aar文件中的classes.jar中删除文件?或者我可能会以错误的方式解决这个问题,还有另一种方法可以解决我的问题,就像告诉proguard不包含classes.jar中的文件一样?


推荐阅读
author-avatar
odile微笑头
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有