0

我在项目中有几个模块(A、B、C)。模块 B 正在被其他模块使用。结果我遇到了 65k 方法限制问题。

所以。有没有办法只将特定包从模块 B 导入到模块 A?可以用proguard实现吗?

4

2 回答 2

0

我认为,有一个更简单的解决方案(虽然不是更好):

  1. 您可以在构建配置中使用 multidex 选项。见谷歌文档
  2. 如果您正在使用播放服务,则只能使用您真正需要的服务,因为它们已被划分为单独的服务
于 2015-07-09T18:52:34.943 回答
0

您最好的选择是只使用需要的库,搜索方法数较少的替代库。例如 Picasso 库使用不到 1k 的方法,Glide 大约 4k 但它有更多的功能。

对于 Google 服务,请使用细粒度依赖项 - 仅导入需要的依赖项。

您可以重新打包现有的库,只需获取所需的功能或仅在 github 存储库中搜索特定类

Proguard 将剥离未使用的类。

Multidex 是你最后的选择——对于低于 21 的 minSdk,你的构建时间将会增加。我在处理代码时切换到 minSdk 21(它构建得更快)并在测试时回到目标 minSdk。不过你也不应该被multidex吓到,当你在做一个有很多视图和特性的大项目时,你需要习惯它。

于 2015-07-09T19:12:18.557 回答