如何从模块中仅导入一个特定的包以避免65k问题

时间:2015-07-09 18:13:28

标签: android android-studio android-proguard

我在项目(A,B,C)中有几个模块。模块B正由另一个模块使用。结果我得到65k方法限制问题。

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

2 个答案:

答案 0 :(得分:0)

我认为,这是一个更简单的解决方案(尽管不是更好):

  1. 您可以在构建配置中使用multidex选项。请参阅google doc
  2. 如果您使用的是游戏服务,则只能使用您真正需要的游戏服务,因为它们已被分成单独的services

答案 1 :(得分:0)

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

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

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

Proguard将删除未使用的课程。

Multidex是你的最后手段 - 对于低于21的minSdk,你的构建时间会增加。我在处理代码时会切换到minSdk 21(它构建速度更快)并在测试时返回目标minSdk。你仍然不应该被multidex吓到,当你将处理具有大量视图和功能的大项目时,你需要习惯它。