Как заставить Amazon In-App покупок (IAP) 2.0 работать с Android R8 - PullRequest
2 голосов
/ 30 мая 2019

Через некоторое время после значительной потери дохода выяснилось, что Сокращение кода Android R8 препятствует работе Amazon In-App покупок (IAP) 2.0. Android Studio теперь использует R8 по умолчанию. К счастью, следующее в gradle.properties может остановить R8:

android.enableR8=false

Боюсь, R8 будет обязательным в будущем, и это будет катастрофа. Я пытаюсь найти способ сделать их совместимыми. Кто-то опубликовал аналогичный вопрос на форуме Amazon , который, как предполагается, является лучшим местом для таких вопросов, но у меня есть ощущение, что Amazon прекратил поддержку форума, потому что мои последние два вопроса там не получили ответа от Amazon ,

У меня есть следующий файл в proguard-project.txt, который используется R8

#amazon
-dontwarn com.amazon.**
-keep class com.amazon.** {*;}
-keepattributes *Annotation*
-optimizations !code/allocation/variable
-optimizationpasses 1

Как я понимаю, R8 игнорирует проходы оптимизации. Я подозреваю, что это причина.

Edit (2019-05-30) Вышеупомянутый скрипт для proguard-project.txt взят из Документа Amazon для покупки в приложении В build.gradle приложения есть следующее:

release {
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
    signingConfig signingConfigs.Release

}

Ответы [ 2 ]

2 голосов
/ 31 мая 2019

proguard-android.txt использует -dontoptimize, поэтому он вообще не должен оптимизироваться с ProGuard или R8, независимо от указанного числа -optimizationpasses. Если вам интересно, вы можете увидеть доступные файлы ProGuard по умолчанию в build/intermediates/proguard-files/. proguard-android-optimize.txt - это то, что позволяет оптимизировать.

На данный момент, учитывая, что оптимизация R8, кажется, не включена, я не уверен, есть ли много обходного пути. Я бы порекомендовал вам сообщить о проблеме в Google Issue Tracker , предоставив как можно больше подробностей, чтобы помочь им воспроизвести проблему. Они, как правило, довольно отзывчивы на подобные вопросы.

0 голосов
/ 02 июля 2019

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*
-dontoptimize

gradle.properties

# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false

Это работает для меня.

...