修改 Android .aar 文件的内容 / 与 .zip 格式相互转换

Posted

技术标签:

【中文标题】修改 Android .aar 文件的内容 / 与 .zip 格式相互转换【英文标题】:Modifying contents of Android .aar file / Converting to and from .zip format 【发布时间】:2016-12-16 02:24:19 【问题描述】:

所以我有一个 .aar 文件,其中有一个需要从其中删除的文件。

我在 mac 上运行并将扩展名从 .aar 更改为 .zip 并解压缩 zip 文件。然后我从文件夹中删除了该文件,将其重新压缩为 .zip,然后尝试将扩展名从 .zip 更改回 .aar。

问题是现在修改的 .aar 没有被识别为 .aar 文件。它仍然被注册为 .zip,我不能再在我的项目中使用它。

所以我的问题有两个:

1) 如何轻松修改 .aar 文件的内容以及 2) 您如何正确转换为/从 .aar 和 .zip?

【问题讨论】:

对。问题是使用最新的 ios(2016 年 8 月),您根本无法删除 .zip 扩展名!如果您删除它,它只是再次添加它然后隐藏它。 @Fattie 您可以删除 zip 扩展名。我只是简单地取消选中“隐藏扩展名”框。然后我删除了 .zip 并在文件信息屏幕中将其替换为 .aar。点击回车,它应该会询问您更改文件扩展名。 【参考方案1】:

假设您的当前目录中有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 文件的问题,以上两行帮助我这样做了。 使用 jar 实用程序打包会生成无效的库文件。至少我收到一个错误:“无法解压缩 my-new-library.aar”我正在使用常规 zip 打包:cd tempFolder; zip -r ../my-new-library.aar * 当我尝试重新打包 aar 文件时,我得到了这种选项列表。 drive.google.com/open?id=1V6KpvJ-6KiWkHEW_1egsJENY7_Dkc8Od 最佳 n 最简单的解决方案 这帮助很大!谢谢!【参考方案2】:

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

unzip myLib.aar -d tempFolder

在提取的代码中进行所有更改,然后使用以下代码重新打包。

您必须在提取的文件夹内移动以再次重新打包它,使用以下代码:

cd tempFolder

这种方式可以重新打包 aar 文件:

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

上面提到的 3 个步骤经过我的实际测试并且可以正常工作。

【讨论】:

以上是关于修改 Android .aar 文件的内容 / 与 .zip 格式相互转换的主要内容,如果未能解决你的问题,请参考以下文章

Unity与Android的问题

怎么百变android studio 中库的arr文件的输出目录呢?

如何通过 AAR 形式集成 leakcanary-android 服务

AndroidStudio 打包 Android项目 成 aar

Android 源码环境下用Android.mk 导入aar

Android 源码环境下用Android.mk 导入aar