在Android Studio中无法解析符号'ImmutableList'。

4

我尝试实现Google Play支付,但不知如何解决此问题:无法解析ImmutableList的类型。 我需要导入一些包吗?

我已经在谷歌上搜索了,没有任何类似这样的问题(Android Studio)

ImmutableList.of(QueryProductDetailsParams.Product.newBuilder()
                                            .setProductId("product_id_example")
                                            .setProductType(BillingClient.ProductType.SUBS)
                                            .build())

请澄清您的具体问题或提供额外的细节,以准确突出您所需的内容。目前的描述不够清晰,很难确定您在询问什么。 - Community
2个回答

10

Android Studio建议使用firebase-crashlytics-buildtools依赖项来导入ImmutableList类。这样做会导致文件(bundle)大小大幅增加。

如果您的应用程序中没有使用crashlythics,则可以尝试包含guava作为依赖项:

// graddle

implementation 'com.google.guava:guava:31.1-android'

// java class/code

import com.google.common.collect.ImmutableList;

这对文件大小的影响要小得多。在我的情况下,与使用crashlythics-buildtools相比,bundle大小从10 MB减小到了2 MB。


1
感谢您的帖子。由于firebase-crashlytics-buildtools,我一直在寻找减小apk大小的方法。最后,我发现您的解决方案对于减小apk大小约8MB非常有帮助。非常感谢。 - Ashok

4

我遇到了同样的问题。将鼠标悬停在'ImmutableList'上后,我选择了条目在com.google.firebase:firebase-crashlitics-builtools上添加依赖项并导入...

此操作在我的activity文件的import部分创建了以下行:

import com.google.firebase.crashlytics.buildtools.reloc.com.google.common.collect.ImmutableList;

以及以下内容在build.gradle文件中:

implementation 'com.google.firebase:firebase-crashlytics-buildtools:2.7.1'
然而,在导入行中出现的单词reloc最初以红色出现,并提示无法解决符号“reloc”。然后我注意到,在build.gradle文件中,android studio建议将crashlytics-buildtools的版本从2.7.1更改为2.9.1。在这样做并同步gradle之后,reloc一词不再是红色的,ImmutableList也被正确识别。
我想知道是否真的有必要为Google计费库的集成导入firebase crashlytics-buildtools(我将其用于具有应用内购买的应用程序)或者是否有更简单的方法来实现此功能。

1
虽然我已经绕过了这个问题,但还是感谢您的帮助,我已经成功地按照您的指示构建了它。 - daoge
请注意,使用implementation 'com.google.firebase:firebase-crashlytics-buildtools:2.7.1'会在文件夹/base/root/dump_syms中为发布的APK/AAB文件添加额外的10兆字节。而使用implementation("com.google.guava:guava:31.1-android")可以将我的APK从20兆字节减少到10兆字节。 - Дмитрий Пупкинг

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