生成 apk 时包含第 3 方 android 库的哪一部分?

Posted

技术标签:

【中文标题】生成 apk 时包含第 3 方 android 库的哪一部分?【英文标题】:What portion of 3rd party android library is included when generating apk? 【发布时间】:2015-07-27 20:36:07 【问题描述】:

我在我的 android 应用中使用了许多第三方库,例如 AndEngine、ButterKnife、Parse、Picasa 等。

这是否意味着我必须将它们全部包含到我的 APK 中? 例如,我只使用 Picasa 库中的一种静态方法来加载图片:

Picasa.load(image, this, null, null);

但我仍然需要将整个 jar 文件添加为我的 Eclipse IDE 中支持的库。

生成 APK 时,它是否以某种方式仅捕获/包含来自 3rd 方库的特定方法,还是包含整个库?

【问题讨论】:

【参考方案1】:

我认为 Proguard 是您正在寻找的:

http://developer.android.com/tools/help/proguard.html

ProGuard 工具通过以下方式缩小、优化和混淆您的代码 删除未使用的代码并重命名类、字段和方法 语义模糊的名称。结果是一个较小的 .apk 文件 这更难逆向工程。

确保在开始使用后进行彻底测试,因为它有时会过于激进。

【讨论】:

【参考方案2】:

我遇到了同样的问题。我不知道这是不是一个好的选择。我从库源代码中获取了我需要的任何相关方法、类和侦听器的代码。然后我添加到我的项目中。这就对了。我没有添加整个罐子。但我不知道在你的情况下,是否有可能获得源代码。

【讨论】:

这通常不是一个很好的解决方案。这使得升级 3rd 方库非常困难,以及其他问题。 我的意思是,如果您只需要特定的一项功能并且它不会改变未来。 当然。我并不是说它永远不合适。只是这通常不是最好的方法。 “不会改变”通常是一个糟糕的假设。有时我只在使用一年后才在 3rd 方库中发现错误。另外,我不是律师,但我想在某些情况下,如果您复制或修改了代码而不是包含在库中,那么许可证可能会要求您做一些不同的事情,因此请务必先检查。跨度>

以上是关于生成 apk 时包含第 3 方 android 库的哪一部分?的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 构建生成的 apk 包含混淆和非混淆类

来自第 3 方静态库的回调中未捕获的异常

在 Android Studio 3 中激活 proguard 生成签名 Apk 时出错

Android APK打包流程

如何使用Android studio生成APK

如何使用Android studio生成APK