在重大收入损失后过了一段时间才发现 Android R8 code shrinker阻止亚马逊应用内购买 (IAP) 2.0 工作。 Android Studio 现在默认使用 R8。幸运的是,gradle.properties 中的以下内容似乎能够停止 R8:
android.enableR8=false
我担心 R8 将来会强制执行,这将是一场灾难。我正在尝试找到一种使它们兼容的方法。 有人发了a similar question on Amazon's forum这应该是此类问题的最佳地点,但我感觉亚马逊已经停止支持该论坛,因为我最近在那里的两个问题没有收到亚马逊的回复。
我在 R8 使用的 proguard-project.txt 中有以下内容
#amazon
-dontwarn com.amazon.**
-keep class com.amazon.** {*;}
-keepattributes *Annotation*
-optimizations !code/allocation/variable
-optimizationpasses 1
据我了解,R8 忽略了优化过程。我怀疑这是原因。
编辑(2019-05-30) 上述 proguard-project.txt 脚本来自 Amazon's document for In-App Purchasing 该应用的 build.gradle 具有以下内容:
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
signingConfig signingConfigs.Release
}
最佳答案
proguard-android.txt
使用 -dontoptimize
,因此它根本不应该使用 ProGuard 或 R8 进行优化,无论指定的 -optimizationpasses
的数量。如果您有兴趣,可以在 build/intermediates/proguard-files/
下查看可用的默认 ProGuard 文件。 proguard-android-optimize.txt
是允许优化的文件。
在这一点上,鉴于 R8 的优化似乎没有开启,我不确定是否有很多解决方法。我建议您使用 Google's Issue Tracker 提出问题,提供尽可能详细的信息以帮助他们重现问题。他们通常对此类问题非常敏感。
关于android - 如何使亚马逊应用内购买 (IAP) 2.0 与 Android R8 兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56381805/