Как использовать gradle для выбора между двумя импортами Kotlin (библиотека биллинга Google и Amazon Java)?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Гость
 Как использовать gradle для выбора между двумя импортами Kotlin (библиотека биллинга Google и Amazon Java)?

Сообщение Гость »

У меня есть приложение Google Play для Android, которое использует библиотеку Google Billing Library, и я хотел бы использовать недавно выпущенный SDK Amazon Appstore Billing Compatibility SDK, реализующий совместимый API.
Их руководство предлагает заменить строки Java/Kotlin следующим образом, и с первого раза это работает хорошо:

Код: Выделить всё

import com.android.billingclient.api.*
с

Код: Выделить всё

import com.amazon.device.iap.billingclient.api.*
Я уже использую механизм Gradle, чтобы немного подправить сборку (например, разные URL-адреса магазина и поддержки), поэтому в идеальном мире я мог бы использовать это. Т.е. У меня есть это в файле app/build.gradle:

Код: Выделить всё

flavorDimensions = ["appstore"]
productFlavors {
google {
dimension "appstore"
buildConfigField "String", "ENCRYPTED_GOOGLE_IAP_KEY", ""
}
amazon {
dimension "appstore"
buildConfigField "String", "ENCRYPTED_GOOGLE_IAP_KEY", "ignored"
}
}
и я настроил зависимости в том же build.gradle, чтобы была доступна только соответствующая библиотека:

Код: Выделить всё

dependencies {
...

googleImplementation 'com.android.billingclient:billing:6.1.0'
amazonImplementation files('libs/appstore-billing-compatibility-4.1.0.jar')
}
Итак, мне бы очень хотелось иметь возможность условно импортировать соответствующую зависимость, т. е. с помощью препроцессора это было бы примерно так:

Код: Выделить всё

#if defined(amazon)
import com.android.billingclient.api.*
#endif
#if defined(google)
import com.amazon.device.iap.billingclient.api.*
#endif
но, конечно, это несовместимый с Java/Kotlin подход. Я мог бы скопировать существующую реализацию в две папки и настроить только строку импорта, то есть:

Код: Выделить всё

src/
|-- google/
|   |-- java/
|       |-- com/
|           |-- example/
|               |-- MyPurchaseCode.kt
|-- amazon/
|   |-- java/
|       |-- com/
|           |-- example/
|               |-- MyPurchaseCode.kt
но код идентичен, за исключением одной этой строки, поэтому его будет сложно поддерживать (и, в конце концов, это не является целью библиотеки совместимости Amazon, которая Я могу сохранить существующий код :) )
Есть предложения, как это сделать? Я задался вопросом о создании своего рода интерфейса-обертки, а затем о наличии двух исходных файлов, расположенных, как указано выше, которые его реализуют. Но они большие и содержат множество классов, и я понимаю, что мне придется клонировать объявления.
Возможно, я слишком много думаю об этом, и есть какой-то простой ответ! (Я признаю, что мои знания Java/Kotlin угасли…)
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/781 ... -vs-amazon
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»