更新Jar包中的文件

遇上需要重写第三方库代码的情况, 要替换库jar包中的文件, 特此记录一下
Android Studio Gradle第三方库文件目录, macOS:
/Users/[用户名]/.gradle/caches/modules-2/files-2.1/xxx

项目中编译好的class文件目录:
[project目录]/build/tmp/expandedArchives/xxx

下面是转的:http://blackwing.iteye.com/blog/1545670

打包了个fat jar,后来程序作了小修改,如果重新打包一个fat jar再上传服务器实在麻烦,而如果能只把更改的class文件放到原来jar包替换相应文件,则简便很多。 jar命令可以替换jar包对于文件,但需要点小技巧。一般替换(增加)jar包根目录下的文件,用到的命令是:

jar uvf myjar.jar ClassToAdd.class  

就能把ClassToAdd.class添加到myjar.jar包根目录下。但通常,我们的包都是有多层目录的,这时就需要做点更改。例如,我要更新jar包下:com.blackwing目录下的ClassToAdd.class文件,则命令改为:

jar uvf myjar.jar com/blackwing/ClassToAdd.class  

记得在运行这条命令前,需要在当前文件夹下建立: com/blackwing文件夹,并且把类ClassToAdd.class放到这里,则可以更新jar包中相应目录的类。

推荐阅读更多精彩内容