Android打包链接外部jar资源文件无法移除

最近在ios和android SDK中写EventSource进行事件监听,实现动态显示列表功能,如果你做一个聊天室,聊天室里面的人员列表会随着人员的入会和退会进行不断的更新,这就需要EventSource了,就是对服务器端的事件进行监听,如果有人员入会,会收到入会事件,如果人员退出会收到删除事件,如果人员被静音等,会收到删除事件。

这些事件都需要EventSource在客户端进行监听,然后上报处理。

在晚上找了一个开源的库,其中我IOS端引入的开源库为:
object c event source
这个库采用swift语言编写,用起来还是蛮舒服的。

android使用的开源库为:
android eventSource

这两个都进行了实验,好用。

android的eventSource中引入了网络框架netty,所以我继续引入netty,但是netty中使用了javax servlet,所以我又引入了 javax servlet,在android中 build make project时,不知道为什么总是把netty 和 servlet中的资源文件也会打入到对应的class.jar中,如果我把sdk给上层,就会出现资源文件重复,报告如下错误:

Android打包链接外部jar资源文件无法移除_第1张图片
5fa7b4fc-4bf8-41ed-af64-242e56cb34b9(1).png
Android打包链接外部jar资源文件无法移除_第2张图片
f5f5f78e-42de-4b7b-a5c4-ee7e82d8d048(1).png

这个目前我没有想到很好的解决方式,目前的解决方案是:
1、我把打包后的jar,解压后,删除重复打入的资源文件,然后再重新进行打包。
这种方式有一个问题:就是每次发版本都需要手工再删除资源文件,重新进行打包。会很麻烦。
2、直接把对应的netty 和servlet的jar包中的对应的资源文件去除,这样netty和servlet相当于经过了特殊处理,只要给一次即可。

这两种方式都不是很好的解决方式,目前只能用第二种先保证版本发布。

以后的尝试解决方式:据说这是gradle的一个bug,在0.7版本中有,我们现在的gradle太陈旧了,依然用的0.7的版本,尝试升级一下gradle,看下打包是否还有问题。

目前的解决方案中打包过程如下,首先把netty和servlet进行解压:

Android打包链接外部jar资源文件无法移除_第3张图片
Paste_Image.png

解压以后,删除对应的重复的资源文件,然后进行重新打包:
打包命令:

jar cvf servlet-api-2.5.jar  javax/*
Android打包链接外部jar资源文件无法移除_第4张图片
Paste_Image.png

netty打包命令:

jar cvf netty-3.5.7.Final.jar  org/*
Android打包链接外部jar资源文件无法移除_第5张图片
Paste_Image.png

你可能感兴趣的:(Android打包链接外部jar资源文件无法移除)