繁体   English   中英

如何将外部库压缩到我自己的Android库构建中

[英]How to shrink external lib to my own Android Library build

我的图书馆引用了一些大罐子,例如番石榴,math3,但我只使用一种或两种方法。 我可以将第三方代码缩小到我的库中吗? 因为使用当前的aar输出,我的库大小似乎很小,但是对于使用我的lib的应用程序,它将下载所有第三部分jar并将整个代码构建到它们的apk中,这会导致很大的体积。

“ aar”似乎仅记录它将使用的库,而不会将使用的代码编译到其中。 是否有支持缩小代码的库输出类型?

我看到使用proguard或minifyEnalbed的建议。 他们没有为我想要的工作。 是否有人熟悉编译器或aar / jar? 是否可以将所有代码打包在一个文件中,而不是在apk编译时下载jar?

在build.gradle中,将minifyEnabled设置minifyEnabled true以启用proguard。 默认情况下,它将删除所有未使用的方法。 您可能需要在proguard-rules.pro文件中设置适当的规则。 通常,图书馆会记录这些内容。

这是示例发行版本类型。

release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

您也可以为调试版本设置它,但是,我建议不要在调试中启用proguard,因为它会使构建速度变慢,并且调试应用程序会很痛苦。

由于要减少库的文件大小以减少依赖性,因此仅使用两种方法。 我建议一种简单实用的方法:

只需复制这些方法。 (如果允许,请先检查许可证)

您可以辩称这不是最佳且难于维护的方法,但是对于两种方法而言,这是可以接受的。

关于库的事情是用户可能还希望拥有依赖项。 因此很难从打包的aar文件中删除依赖项。 如果您将一半的库打包到lib中,并且用户可能需要该库的最新版本,则可能导致不一致。

注意:

实际上,您不需要关心最终应用程序的大小。 因为Proguard最终可以缩减此最终应用程序。

有时将单个方法复制到我的代码中的原因是减少了打包调试应用程序所花费的时间。 因为如果您有很多依赖关系,那么等待时间会变得非常长。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM