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