一段时间后,重大的收入损失,才发现Android R8代码收缩器阻止亚马逊在应用程序采购(IAP) 2.0的工作。Android现在默认使用R8。幸运的是,gradle.properties中的以下内容似乎能够阻止R8:
android.enableR8=false我担心R8在未来会被强制执行,这将是一场灾难。我正试图找到一种方法使他们兼容。有人在亚马逊论坛上的类似问题上发布了这类问题的最佳位置,但我觉得亚马逊已经不再支持这个论坛了,因为我最近的两个问题还没有得到亚马逊的回应。
下面是R8使用的proguard-project.txt
#amazon
-dontwarn com.amazon.**
-keep class com.amazon.** {*;}
-keepattributes *Annotation*
-optimizations !code/allocation/variable
-optimizationpasses 1据我理解,R8忽略了优化。我怀疑这就是原因。
Edit(2019-05-30),上面提到的proguard-project.txt脚本来自亚马逊的应用程序采购文档,应用程序的build.gradle有以下内容:
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
signingConfig signingConfigs.Release
}发布于 2019-05-31 13:29:03
proguard-android.txt使用-dontoptimize,因此它不应该使用ProGuard或R8进行优化,而不管指定了多少-optimizationpasses。如果您感兴趣,您可以看到可用的默认ProGuard文件下的build/intermediates/proguard-files/。proguard-android-optimize.txt是允许优化的那种。
在这一点上,考虑到R8的优化似乎没有启动,我不确定是否有很多解决办法。我建议您向谷歌的问题追踪器提交一个问题,提供尽可能多的细节,以帮助他们重现问题。他们通常对这样的问题有很好的反应。
发布于 2019-11-21 12:37:27
现在应该使用R8,将其添加到主要的build.gradle依赖项中:
buildscript {
repositories {
maven {
url 'http://storage.googleapis.com/r8-releases/raw'
}
}
dependencies {
classpath 'com.android.tools:r8:1.6.42' //Must be before the Gradle Plugin for Android. - Or any other version
classpath 'com.android.tools.build:gradle:...'
}
}发布于 2019-07-02 07:32:47
build.gradle
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}proguard-rules.pro
-dontwarn com.amazon.**
-keep class com.amazon.** {*;}
-keepattributes *Annotation*
-dontoptimizegradle.properties
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false这对我有用。
https://stackoverflow.com/questions/56381805
复制相似问题