如何将外部lib缩小到我自己的Android库构建

时间:2015-12-04 03:57:20

标签: java android shrink

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

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

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

2 个答案:

答案 0 :(得分:0)

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

以下是示例发布版本类型。

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

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

答案 1 :(得分:0)

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

只需复制这些方法。(如果允许,可以查看许可证)

你可以说它不是最优的,也很难维护,但是对于两种方法,它是可以接受的。

关于库的问题是用户可能也希望拥有依赖项。因此很难从打包的aar文件中删除依赖项。如果您将一半的库打包到lib并且用户可能需要更新版本的同一个库,这可能会导致不一致。

注意:

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

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