“shrinkResources true” 不能在即时应用程序功能中使用?

15

当我试图缩小我的特征APK大小时,我在我的特征Build Gradle中使用shrinkResources true。然而它报错了:Error:Resource shrinker cannot be used for libraries.

这篇文章要求我们使用它:https://medium.com/jet-stories/make-your-app-instant-33855ab5d02b

我做错了什么还是这确实不受Instant Apps的支持?


1
这可能是最近Gradle版本中的一个可能问题。在AS 3.0 Canary 4上,shrinkResources对我来说很好用。但是当我尝试在AS 3 beta 4中使用shrinkResources true时,我得到了与你相同的错误。你能否提交一个bug,然后在这里链接它?这对所有人都有帮助,谢谢!https://issuetracker.google.com/issues/new?component=316045&template=1018787 - Julia K
@Elye能否分享问题链接?我无法找到它 https://issuetracker.google.com/issues?q=componentid:316045%20shrinkResources 或 https://issuetracker.google.com/issues?q=componentid:316045 谢谢! - Xavier Rubio Jansana
1
哎呀,这里有。https://issuetracker.google.com/issues/65708840 - Elye
很失望AS3.0已经正式发布,但ShrinkResources仍然无法用于IA :( - Elye
3个回答

9
据我从文章中了解到(我只是在快速阅读,仍在我的阅读列表中),shrinkResources true仅需要通过删除未使用的资源来减小APK大小,但它不是即时应用程序的正式要求。我猜工具链不能确定库中的资源是否会被使用,因为最终APK没有构建。

因此,如果您的项目中没有未使用的资源,就不应该有问题,可以将其删除。

然后,有一件事可能在您的项目中不正确(没有尝试过即时应用程序,只是阅读并观看了Google IO演讲):据我所知,即时应用程序的所有模块都是APK,而不是库。因此,如果您将shrinkResources true应用于APK,则应该可以顺利运行。如果您的项目中有用于组装最终APK模块的库,请在那里删除shrinkResources true,并在模块中保留它。


1
即时应用中的功能将被转换为 APK。因此它是一个 APK 而不是库。这就是为什么 AS 抱怨无法使用 shrinkResources 的原因。 - Elye
谢谢澄清!那对我来说似乎是个bug,同意。我会关注你已经打开的那个。 - Xavier Rubio Jansana
1
感谢澄清。这真的很有效。 - ASKAR ALI

2

我认为这不是AndroidStudio的问题,而是Gradle的问题。我正在尝试使用Jenkins进行构建,并使用更新版本的Gradle(之前使用的是com.android.tools.build:gradle:2.2.3,升级到了com.android.tools.build:gradle:3.0.1),但仍然出现错误:

"> 资源缩减器不能用于库。"


如果您有不同的问题,可以提出问题并向Google提交错误报告,然后在此处链接回来吗?这对所有人都会有帮助,谢谢!https://issuetracker.google.com/issues/new?component=316045&template=1018787 - Prags

1

关于Google问题跟踪器

修复将在3.2金丝雀版1以及之后的版本中发布。

我刚刚在3.2金丝雀版3上再次尝试,它可以正常工作。你确定已经更新了插件版本为3.2.0-alpha03吗?这很容易被忽视。

如果仍有任何问题,请报告到Google问题跟踪器,他们会重新开放以进行检查。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接