2015-12-04 45 views
0

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

“aar”似乎只记录它将使用的库,但不会将使用的代码编译进去。有没有库输出类型支持缩小代码?

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

+0

你应该看看Proguard能为你做些什么 – k3v1n4ud3

回答

0

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

以下是示例发布构建类型。

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

你也可以将它设置为您的调试版本不过,我建议不要启用调试proguard的,因为它会使您的构建缓慢和调试应用程序将是痛苦的。

+0

其实它已经在build.gradle中,但它不适用于aar输出。请检查我的最后一句话。 –

0

由于您希望减少库的文件大小以减少依赖性,并且只使用两种方法。我推荐一个简单而实用的方法:

只需复制这些方法。(也许之前检查许可证,如果你被允许)

你可以争辩说,这是不是最佳和难以维护,但两种方法是可以接受的。

关于一个库的事情是,用户可能也想拥有依赖关系。所以很难从打包的aar文件中删除依赖关系。如果将库的一半打包到您的库中,并且用户可能需要相同库的更新版本,则这可能会导致不一致。

注:

其实你不需要大小约离最终的应用服务。因为Proguard最终可以收缩这个最终的应用程序。

为什么有时将单个方法复制到我的代码的原因是减少了打包调试应用程序的时间。因为如果你有很多依赖关系,等待时间可能会相当长。

相关问题