[英]How to make Amazon In-App Purchasing (IAP) 2.0 work with Android R8
在收入大幅下降后,过了一段时间才发现Android R8 代码压缩器阻止了亚马逊应用内购买 (IAP) 2.0 的工作。 Android Studio 现在默认使用 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脚本来自亚马逊的In-App Purchasing文档, app的build.gradle有以下内容:
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
signingConfig signingConfigs.Release
}
proguard-android.txt
使用-dontoptimize
,因此无论指定的-dontoptimize
,它都不应该使用 ProGuard或R8 进行-optimizationpasses
。 如果您有兴趣,可以在build/intermediates/proguard-files/
下查看可用的默认 ProGuard 文件。 proguard-android-optimize.txt
是一个允许优化的文件。
在这一点上,鉴于 R8 的优化似乎没有开启,我不确定是否有很多解决方法。 我建议您向Google 的问题跟踪器提交问题,提供尽可能多的详细信息以帮助他们重现问题。 他们通常对这样的问题非常敏感。
现在应该可以与 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:...'
}
}
构建.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*
-dontoptimize
gradle.properties
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
这对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.