防止在 Android 中达到 65k 方法
Posted
技术标签:
【中文标题】防止在 Android 中达到 65k 方法【英文标题】:Prevent reaching 65k methods in Android 【发布时间】:2016-06-15 20:54:12 【问题描述】:每次不经考虑地使用外部库都会导致 Gradle 错误达到 65k 方法。所以我想知道防止这种情况的最佳解决方案是什么,我不想考虑使用 Proguard 自定义设置。
我想到的(当然,如果我们使用开源库)只是下载代码并手动将其放入我们的项目中。然后我们可以删除未使用的类和方法。看起来我们正在扮演 Proguard 角色,这很耗时。
问题
但是使用 Gradle 获取 jar 和 手动输入代码?还是在性能上有什么不同?我将感谢在使用许多库创建项目时的任何最佳实践。
注意:我想暂时停止考虑 Proguard 自定义设置,因为它经常会产生警告,其中省略它们对我来说看起来有点奇怪,例如-dontwarn
。另外我有点害怕使用 MultiDex 支持,我认为不建议这样做。
【问题讨论】:
【参考方案1】:您可以在 gradle 中做的一件事是非常具体地了解您所包含的代码模块。
例如:
compile 'com.google.android.gms:play-services:8.4.0'
将包括更多的东西,而不仅仅是......
compile 'com.google.android.gms:play-services-location:8.4.0'
一般最好让 gradle 管理外部依赖。最大的原因是您可以放心,您可以获得与特定版本相关的代码的快照。如果您只是手动导入代码,很容易忘记您正在使用的代码版本。从第 3 方修改(或有选择地包含)代码的一大风险是当第 3 方更新他们的代码时,可能是为了修复由新版本的 Android 引起的主要错误,并且其中包含一些会破坏您的手动调整的更改。现在你手上的问题比你刚刚将它包含为一个 gradle 依赖项更复杂。
【讨论】:
以上是关于防止在 Android 中达到 65k 方法的主要内容,如果未能解决你的问题,请参考以下文章
Android 方法数 65k 限制与 LinearAlloc 限制