Proguard的Android FirebasePerformance问题

时间:2018-07-19 06:17:04

标签: android android-proguard firebase-performance

我们在项目中以及无法构建项目时实施了FirebasePerformance。我在Proguard中遇到错误,这与在外部库(qrchart_obfuscation.jar)中具有两个名称相同但大小写不同的两个类(A.class和a.class)有关。我对proguard也不太熟悉。

通过阅读资料,我希望在proguard中添加-dontwarn选项,但这是我的最后选择,因为资料说“只有在知道自己在做什么时才使用它”。

我仍然尝试添加-dontwarn qr.android.chart,并且将Mapping.txt与以前没有FirebasePerformance的版本进行了比较,我发现类(qr.android.chart)有所不同,不确定此细节是否有帮助< / p>

通过Proguard的FirebasePerformance设置了解您的帮助和建议。

Reading program directory [C:\...\build\intermediates\transforms\FirebasePerformancePlugin\adevelop\release\4] (filtered)

Warning: class [qr/android/chart/b/a.class] unexpectedly contains class [qr.android.chart.b.A]
Warning: class [qr/android/chart/b/b.class] unexpectedly contains class [qr.android.chart.b.B]
Warning: class [qr/android/chart/b/c.class] unexpectedly contains class [qr.android.chart.b.C]
Warning: class [qr/android/chart/b/d.class] unexpectedly contains class [qr.android.chart.b.D]
Warning: class [qr/android/chart/b/e.class] unexpectedly contains class [qr.android.chart.b.E]
Warning: class [qr/android/chart/b/f.class] unexpectedly contains class [qr.android.chart.b.F]
Warning: class [qr/android/chart/b/g.class] unexpectedly contains class [qr.android.chart.b.G]
Warning: class [qr/android/chart/b/h.class] unexpectedly contains class [qr.android.chart.b.H]
Warning: class [qr/android/chart/b/i.class] unexpectedly contains class [qr.android.chart.b.I]
Warning: class [qr/android/chart/b/j.class] unexpectedly contains class [qr.android.chart.b.J]
Warning: class [qr/android/chart/b/k.class] unexpectedly contains class [qr.android.chart.b.K]

Warning: there were 11 classes in incorrectly named files.
         You should make sure all file names correspond to their class names.
         The directory hierarchies must correspond to the package hierarchies.
         (http://proguard.sourceforge.net/manual/troubleshooting.html#unexpectedclass)
         If you don't mind the mentioned classes not being written out,
         you could try your luck using the '-ignorewarnings' option.

我看到了在签名APK生成期间与Firebase性能和proguard问题有关的链接,但情况不同-FirebasePerformance SDK external library issue in progaurd

2 个答案:

答案 0 :(得分:0)

问题是在维护时qr.android.chart库未使用dontusemixedcaseclassnames选项。

在不区分大小写的文件系统(即Mac OSX喜欢使用的文件系统)上构建时,Firebase Performance使用的字节码检测过程会遇到问题,因为未归档的类最终会相互覆盖。

您的选择是禁用字节码检测,或者在激活dontusemixedcaseclassnames选项的情况下请求新的qr.android.chart库。

答案 1 :(得分:0)

如果您使用的是macOS,我发现了一个丑陋的解决方法。创建区分大小写的磁盘映像,然后在其中复制项目,以便firebase perf插件可以处理区分大小写的文件。

如何在此处创建磁盘映像:https://documentation.spryker.com/tutorials/howtos/ht-case-sensitive-file-system-mac.htm

对于我的项目,我需要一个5GB的图像。