android - 防止在 Android 中达到 65k 方法

标签 android gradle proguard android-multidex

每次未考虑使用外部库都会导致有关达到 65k 方法的 Gradle 错误。所以我想知道防止这种情况的最佳解决方案是什么,我不想考虑使用 Proguard 自定义设置。

我想到的(当然如果我们使用的是开源库)只是下载代码并手动将其放入我们的项目中。然后我们可以删除不用的类和方法。看起来我们在扮演 Proguard 的角色,而且很耗时。

问题

  • 但是使用 Gradle 获取 jar 和 手动输入代码?或者在性能上有什么不同吗?

我将感谢在使用许多库创建项目时的任何最佳实践。

注意:我想暂时停止考虑 Proguard 自定义设置,因为它经常会产生警告,而忽略它们对我来说看起来有点奇怪,例如-不要警告。此外,我有点害怕使用 MultiDex 支持,我认为不推荐这样做。

最佳答案

您可以在 gradle 中做的一件事是非常具体地了解您要包含的代码模块。

例如:

编译 'com.google.android.gms:play-services:8.4.0'

将包含更多的东西,而不仅仅是...

编译 'com.google.android.gms:play-services-location:8.4.0'

一般最好让gradle来管理外部依赖。最大的原因是您可以放心,您获得的是与特定版本相关联的代码快照。如果您只是手动导入代码,很容易忘记您正在使用的代码版本。修改(或有选择地包含)来自第三方的代码的一个很大风险是,当第三方更新他们的代码时,可能是为了修复由新版本的 Android 引起的主要错误,并且他们包含了一些更改,这些更改会破坏您的手动调整。现在,与将其作为 gradle 依赖项包含在内相比,现在您手上的问题更复杂。

关于android - 防止在 Android 中达到 65k 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35756793/

相关文章:

android - 如何修复 'react-native run-android' 启动错误 "Resetting to invalid mark"

gradle - flutter 不安全的未检查操作并覆盖已弃用的 api 错误

java - 防止 ProGuard 混淆类成员名称

android - 如何在 Android 中保留嵌套的 Bundle?

android - Paypal Android SDK 是否支持并行、链式支付?

android - 在包裹在 ScrollView 中的 ConstraintLayout 中添加约束会切断底部

java - 使用 putExtras 将 int 变量传递给另一个 Activity 会导致应用程序崩溃

gradle - 未找到模块化 java 模块

java - Joda-Time 库无法在启用 Proguard 的 Android 5 上运行

android - 将 SafeArgs 与 Proguard 和导航架构组件一起使用时出现 ClassNotFoundException?