mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-08-03 18:56:44 -04:00
Upload apk on play store instead of uploading the app bundle
This commit is contained in:
parent
f9ff02a45e
commit
093384d00f
@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package custom
|
package custom
|
||||||
|
|
||||||
|
import com.android.build.api.variant.VariantOutput
|
||||||
|
import com.android.build.gradle.api.ApkVariantOutput
|
||||||
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential
|
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential
|
||||||
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport
|
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport
|
||||||
import com.google.api.client.http.FileContent
|
import com.google.api.client.http.FileContent
|
||||||
@ -79,29 +81,29 @@ class Transaction(
|
|||||||
FileContent("application/octet-stream", file)
|
FileContent("application/octet-stream", file)
|
||||||
).execute().prettyPrint()
|
).execute().prettyPrint()
|
||||||
|
|
||||||
fun attachExpansionTo(versionCode: Int): ExpansionFile =
|
fun attachExpansionTo(expansionCode: Int, apkVariantOutput: ApkVariantOutput): ExpansionFile =
|
||||||
publisher.edits().expansionfiles().update(
|
publisher.edits().expansionfiles().update(
|
||||||
packageName,
|
packageName,
|
||||||
editId,
|
editId,
|
||||||
versionCode,
|
apkVariantOutput.versionCodeOverride,
|
||||||
"main",
|
"main",
|
||||||
ExpansionFile().apply { referencesVersion = versionCode }
|
ExpansionFile().apply { referencesVersion = expansionCode }
|
||||||
).execute().prettyPrint()
|
).execute().prettyPrint()
|
||||||
|
|
||||||
fun uploadBundle(outputFile: File) {
|
fun uploadApk(apkVariantOutput: ApkVariantOutput) {
|
||||||
publisher.edits().bundles().upload(
|
publisher.edits().apks().upload(
|
||||||
packageName,
|
packageName,
|
||||||
editId,
|
editId,
|
||||||
FileContent("application/octet-stream", outputFile)
|
FileContent("application/octet-stream", apkVariantOutput.outputFile)
|
||||||
).execute().prettyPrint()
|
).execute().prettyPrint()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addToTrackInDraft(versionCode: Int, versionName: String?): Track =
|
fun addToTrackInDraft(apkVariants: List<ApkVariantOutput>): Track =
|
||||||
publisher.edits().tracks().update(packageName, editId, "alpha", Track().apply {
|
publisher.edits().tracks().update(packageName, editId, "alpha", Track().apply {
|
||||||
releases = listOf(TrackRelease().apply {
|
releases = listOf(TrackRelease().apply {
|
||||||
status = "draft"
|
status = "draft"
|
||||||
name = versionName
|
name = apkVariants[0].versionNameOverride
|
||||||
versionCodes = listOf(versionCode.toLong())
|
versionCodes = apkVariants.map { it.versionCodeOverride.toLong() }
|
||||||
})
|
})
|
||||||
track = "alpha"
|
track = "alpha"
|
||||||
}).execute().prettyPrint()
|
}).execute().prettyPrint()
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
import com.android.build.gradle.api.ApplicationVariant
|
|
||||||
import com.android.build.gradle.api.ApkVariantOutput
|
import com.android.build.gradle.api.ApkVariantOutput
|
||||||
|
import com.android.build.gradle.api.ApplicationVariant
|
||||||
import com.android.build.gradle.internal.dsl.ProductFlavor
|
import com.android.build.gradle.internal.dsl.ProductFlavor
|
||||||
import custom.CustomApps
|
import custom.CustomApps
|
||||||
import custom.createPublisher
|
import custom.createPublisher
|
||||||
import custom.transactionWithCommit
|
import custom.transactionWithCommit
|
||||||
import plugin.KiwixConfigurationPlugin
|
import plugin.KiwixConfigurationPlugin
|
||||||
import java.io.FileNotFoundException
|
|
||||||
import java.net.URI
|
import java.net.URI
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
|
|
||||||
@ -26,16 +25,13 @@ android {
|
|||||||
all {
|
all {
|
||||||
File("$projectDir/src", "$name/$name.zim").let {
|
File("$projectDir/src", "$name/$name.zim").let {
|
||||||
createDownloadTask(it)
|
createDownloadTask(it)
|
||||||
createPublishBundleWithExpansionTask(it, applicationVariants)
|
createPublishApkWithExpansionTask(it, applicationVariants)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
splits {
|
||||||
bundle {
|
abi {
|
||||||
language {
|
isUniversalApk = false
|
||||||
// This is disabled so that the App Bundle does NOT split the APK for each language.
|
|
||||||
// We're gonna use the same APK for all languages.
|
|
||||||
enableSplit = false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -65,12 +61,12 @@ fun ProductFlavor.fetchUrl(): String {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun ProductFlavor.createPublishBundleWithExpansionTask(
|
fun ProductFlavor.createPublishApkWithExpansionTask(
|
||||||
file: File,
|
file: File,
|
||||||
applicationVariants: DomainObjectSet<ApplicationVariant>
|
applicationVariants: DomainObjectSet<ApplicationVariant>
|
||||||
): Task {
|
): Task {
|
||||||
val capitalizedName = name.capitalize()
|
val capitalizedName = name.capitalize()
|
||||||
return tasks.create("publish${capitalizedName}ReleaseBundleWithExpansionFile") {
|
return tasks.create("publish${capitalizedName}ReleaseApkWithExpansionFile") {
|
||||||
group = "publishing"
|
group = "publishing"
|
||||||
description = "Uploads $capitalizedName to the Play Console with an Expansion file"
|
description = "Uploads $capitalizedName to the Play Console with an Expansion file"
|
||||||
doLast {
|
doLast {
|
||||||
@ -79,20 +75,11 @@ fun ProductFlavor.createPublishBundleWithExpansionTask(
|
|||||||
createPublisher(File(rootDir, "playstore.json"))
|
createPublisher(File(rootDir, "playstore.json"))
|
||||||
.transactionWithCommit(packageName) {
|
.transactionWithCommit(packageName) {
|
||||||
val variants =
|
val variants =
|
||||||
applicationVariants.releaseVariantsFor(this@createPublishBundleWithExpansionTask)
|
applicationVariants.releaseVariantsFor(this@createPublishApkWithExpansionTask)
|
||||||
val generatedBundleFile =
|
variants.forEach(::uploadApk)
|
||||||
File(
|
uploadExpansionTo(file, variants[0].versionCodeOverride)
|
||||||
"$buildDir/outputs/bundle/${capitalizedName.toLowerCase()}" +
|
variants.drop(1).forEach { attachExpansionTo(variants[0].versionCodeOverride, it) }
|
||||||
"Release/custom-${capitalizedName.toLowerCase()}-release.aab"
|
addToTrackInDraft(variants)
|
||||||
)
|
|
||||||
if (generatedBundleFile.exists()) {
|
|
||||||
uploadBundle(generatedBundleFile)
|
|
||||||
uploadExpansionTo(file, variants[0].versionCode)
|
|
||||||
attachExpansionTo(variants[0].versionCode)
|
|
||||||
addToTrackInDraft(variants[0].versionCode, versionName)
|
|
||||||
} else {
|
|
||||||
throw FileNotFoundException("Unable to find generated aab file")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -100,14 +87,13 @@ fun ProductFlavor.createPublishBundleWithExpansionTask(
|
|||||||
|
|
||||||
fun DomainObjectSet<ApplicationVariant>.releaseVariantsFor(productFlavor: ProductFlavor) =
|
fun DomainObjectSet<ApplicationVariant>.releaseVariantsFor(productFlavor: ProductFlavor) =
|
||||||
find { it.name.equals("${productFlavor.name}Release", true) }!!
|
find { it.name.equals("${productFlavor.name}Release", true) }!!
|
||||||
.outputs.filterIsInstance<ApkVariantOutput>()
|
.outputs.filterIsInstance<ApkVariantOutput>().sortedBy { it.versionCodeOverride }
|
||||||
.filter { it.baseName.contains("universal") }.sortedBy { it.versionCode }
|
|
||||||
|
|
||||||
afterEvaluate {
|
afterEvaluate {
|
||||||
tasks.filter { it.name.contains("ReleaseBundleWithExpansionFile") }.forEach {
|
tasks.filter { it.name.contains("ReleaseApkWithExpansionFile") }.forEach {
|
||||||
val flavorName =
|
val flavorName =
|
||||||
it.name.substringAfter("publish").substringBefore("ReleaseBundleWithExpansionFile")
|
it.name.substringAfter("publish").substringBefore("ReleaseApkWithExpansionFile")
|
||||||
it.dependsOn.add(tasks.getByName("download${flavorName}Zim"))
|
it.dependsOn.add(tasks.getByName("download${flavorName}Zim"))
|
||||||
it.dependsOn.add(tasks.getByName("bundle${flavorName}Release"))
|
it.dependsOn.add(tasks.getByName("assemble${flavorName}Release"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user