Add billing module, provide a separate build for Google Play

This commit is contained in:
albexk 2024-09-17 20:51:02 +03:00
parent fe18472d07
commit 582bd92d31
6 changed files with 69 additions and 12 deletions

View file

@ -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)
}

View file

@ -42,17 +42,6 @@ android {
resourceConfigurations += listOf("en", "ru", "b+zh+Hans") 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 { signingConfigs {
register("release") { register("release") {
storeFile = providers.environmentVariable("ANDROID_KEYSTORE_PATH").orNull?.let { file(it) } 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 { splits {
abi { abi {
isEnable = true isEnable = true
@ -123,5 +142,9 @@ dependencies {
implementation(libs.google.mlkit) implementation(libs.google.mlkit)
implementation(libs.androidx.datastore) implementation(libs.androidx.datastore)
implementation(libs.androidx.biometric) implementation(libs.androidx.biometric)
implementation(libs.android.billing)
playImplementation(project(":billing"))
} }
fun DependencyHandler.playImplementation(dependency: Any): Dependency? =
add("playImplementation", dependency)

View file

@ -0,0 +1,7 @@
package org.amnezia.vpn
class BillingProvider {
fun type(): String {
return "OSS"
}
}

View file

@ -0,0 +1,7 @@
package org.amnezia.vpn
class BillingProvider {
fun type(): String {
return "PLAY"
}
}

View file

@ -31,6 +31,7 @@ rootProject.buildFileName = "build.gradle.kts"
include(":qt") include(":qt")
include(":utils") include(":utils")
include(":billing")
include(":protocolApi") include(":protocolApi")
include(":wireguard") include(":wireguard")
include(":awg") include(":awg")

View file

@ -156,6 +156,7 @@ class AmneziaActivity : QtActivity() {
* Activity overloaded methods * Activity overloaded methods
*/ */
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
Log.d(TAG, "Billing provider: ${BillingProvider().type()}")
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
Log.d(TAG, "Create Amnezia activity: $intent") Log.d(TAG, "Create Amnezia activity: $intent")
window.apply { window.apply {