From 582bd92d31de448f83c542b8d7895cb24f40599f Mon Sep 17 00:00:00 2001 From: albexk Date: Tue, 17 Sep 2024 20:51:02 +0300 Subject: [PATCH] Add billing module, provide a separate build for Google Play --- client/android/billing/build.gradle.kts | 18 +++++++ client/android/build.gradle.kts | 47 ++++++++++++++----- .../oss/org/amnezia/vpn/BillingProvider.kt | 7 +++ .../play/org/amnezia/vpn/BillingProvider.kt | 7 +++ client/android/settings.gradle.kts | 1 + .../src/org/amnezia/vpn/AmneziaActivity.kt | 1 + 6 files changed, 69 insertions(+), 12 deletions(-) create mode 100644 client/android/billing/build.gradle.kts create mode 100644 client/android/oss/org/amnezia/vpn/BillingProvider.kt create mode 100644 client/android/play/org/amnezia/vpn/BillingProvider.kt diff --git a/client/android/billing/build.gradle.kts b/client/android/billing/build.gradle.kts new file mode 100644 index 00000000..a3bc6765 --- /dev/null +++ b/client/android/billing/build.gradle.kts @@ -0,0 +1,18 @@ +plugins { + id(libs.plugins.android.library.get().pluginId) + id(libs.plugins.kotlin.android.get().pluginId) +} + +kotlin { + jvmToolchain(17) +} + +android { + namespace = "org.amnezia.vpn.billing" +} + +dependencies { + implementation(libs.androidx.core) + implementation(libs.kotlinx.coroutines) + implementation(libs.android.billing) +} diff --git a/client/android/build.gradle.kts b/client/android/build.gradle.kts index 42384112..f22702ab 100644 --- a/client/android/build.gradle.kts +++ b/client/android/build.gradle.kts @@ -42,17 +42,6 @@ android { resourceConfigurations += listOf("en", "ru", "b+zh+Hans") } - sourceSets { - getByName("main") { - manifest.srcFile("AndroidManifest.xml") - java.setSrcDirs(listOf("src")) - res.setSrcDirs(listOf("res")) - // androyddeployqt creates the folders below - assets.setSrcDirs(listOf("assets")) - jniLibs.setSrcDirs(listOf("libs")) - } - } - signingConfigs { register("release") { storeFile = providers.environmentVariable("ANDROID_KEYSTORE_PATH").orNull?.let { file(it) } @@ -78,6 +67,36 @@ android { } } + flavorDimensions += "billing" + + productFlavors { + create("oss") { + dimension = "billing" + } + create("play") { + dimension = "billing" + } + } + + sourceSets { + getByName("main") { + manifest.srcFile("AndroidManifest.xml") + java.setSrcDirs(listOf("src")) + res.setSrcDirs(listOf("res")) + // androyddeployqt creates the folders below + assets.setSrcDirs(listOf("assets")) + jniLibs.setSrcDirs(listOf("libs")) + } + + getByName("oss") { + java.setSrcDirs(listOf("oss")) + } + + getByName("play") { + java.setSrcDirs(listOf("play")) + } + } + splits { abi { isEnable = true @@ -123,5 +142,9 @@ dependencies { implementation(libs.google.mlkit) implementation(libs.androidx.datastore) implementation(libs.androidx.biometric) - implementation(libs.android.billing) + + playImplementation(project(":billing")) } + +fun DependencyHandler.playImplementation(dependency: Any): Dependency? = + add("playImplementation", dependency) diff --git a/client/android/oss/org/amnezia/vpn/BillingProvider.kt b/client/android/oss/org/amnezia/vpn/BillingProvider.kt new file mode 100644 index 00000000..80274312 --- /dev/null +++ b/client/android/oss/org/amnezia/vpn/BillingProvider.kt @@ -0,0 +1,7 @@ +package org.amnezia.vpn + +class BillingProvider { + fun type(): String { + return "OSS" + } +} diff --git a/client/android/play/org/amnezia/vpn/BillingProvider.kt b/client/android/play/org/amnezia/vpn/BillingProvider.kt new file mode 100644 index 00000000..4d55c583 --- /dev/null +++ b/client/android/play/org/amnezia/vpn/BillingProvider.kt @@ -0,0 +1,7 @@ +package org.amnezia.vpn + +class BillingProvider { + fun type(): String { + return "PLAY" + } +} diff --git a/client/android/settings.gradle.kts b/client/android/settings.gradle.kts index 68426ec8..4955e163 100644 --- a/client/android/settings.gradle.kts +++ b/client/android/settings.gradle.kts @@ -31,6 +31,7 @@ rootProject.buildFileName = "build.gradle.kts" include(":qt") include(":utils") +include(":billing") include(":protocolApi") include(":wireguard") include(":awg") diff --git a/client/android/src/org/amnezia/vpn/AmneziaActivity.kt b/client/android/src/org/amnezia/vpn/AmneziaActivity.kt index 9d1c31cb..60d1a4b5 100644 --- a/client/android/src/org/amnezia/vpn/AmneziaActivity.kt +++ b/client/android/src/org/amnezia/vpn/AmneziaActivity.kt @@ -156,6 +156,7 @@ class AmneziaActivity : QtActivity() { * Activity overloaded methods */ override fun onCreate(savedInstanceState: Bundle?) { + Log.d(TAG, "Billing provider: ${BillingProvider().type()}") super.onCreate(savedInstanceState) Log.d(TAG, "Create Amnezia activity: $intent") window.apply {