修改Android .aar文件的内容/转换为.zip格式和从.zip格式转换

52
我有一个.aar文件,里面有一个我需要删除的文件。
我在macOS上运行,并将扩展名从.aar更改为.zip,然后解压缩了zip文件。然后我从文件夹中删除了文件,重新压缩成.zip,然后尝试将扩展名从.zip更改回.aar。
问题是,现在修改后的.aar文件无法被识别为.aar文件。它仍然被注册为.zip文件,我无法在我的项目中使用它。
如何轻松修改.aar文件的内容,以及如何正确地转换为/从.aar和.zip文件?

没错。问题在于最新的iOS(2016年8月)中,你根本无法删除.zip扩展名!如果你删除它,它会再次添加并隐藏它。 - Fattie
@Fattie 你可以删除zip扩展名。我只是简单地取消了“隐藏扩展名”框。然后在文件信息屏幕中删除.zip并将其替换为.aar。按回车键,它应该会询问您是否更改文件扩展名。 - Jay Snayder
2个回答

117

假设你的当前目录中有mylib.aar,请尝试以下操作:

$ unzip myLib.aar -d tempFolder # or other extracting tool
# Change whatever you need
$ jar cvf myNewLib.aar -C tempFolder/ .

非常好的提示,我一直在努力解决一个问题,即从Fresco的imagepipeline.aar中删除libjpeg-turbo.so文件,上面的两行代码帮助了我。 - shekar
1
使用jar工具打包会生成无效的库文件。至少我会收到一个错误:“无法解压缩my-new-library.aar”我正在使用常规zip进行打包: cd tempFolder; zip -r ../my-new-library.aar * - DrMoriarty
当我尝试重新打包aar文件时,我会得到这样的选项列表。https://drive.google.com/open?id=1V6KpvJ-6KiWkHEW_1egsJENY7_Dkc8Od - Siddharth
最好的且最简单的解决方案 - Richard Fu
这非常有帮助!谢谢! - Tgo1014

28

要提取以下命令,您需要执行:

unzip myLib.aar -d tempFolder

在提取的代码中进行所有更改,使用下面的代码,您可以重新打包它。

您必须进入提取的文件夹以重新打包它,使用以下代码:

cd tempFolder

重新打包aar文件的方法如下:

zip -r ../my-new-library.aar *

以上提到的三个步骤已由我实际测试,其功能正常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接