android-plugins: convert to full plugins
This commit is contained in:
parent
fee7510496
commit
504c8b466c
22 changed files with 299 additions and 228 deletions
|
@ -28,7 +28,27 @@ gradlePlugin {
|
||||||
plugins {
|
plugins {
|
||||||
register("versioning") {
|
register("versioning") {
|
||||||
id = "com.github.android-password-store.versioning-plugin"
|
id = "com.github.android-password-store.versioning-plugin"
|
||||||
implementationClass = "versioning.VersioningPlugin"
|
implementationClass = "dev.msfjarvis.aps.gradle.versioning.VersioningPlugin"
|
||||||
|
}
|
||||||
|
register("android-application") {
|
||||||
|
id = "com.github.android-password-store.android-application"
|
||||||
|
implementationClass = "dev.msfjarvis.aps.gradle.ApplicationPlugin"
|
||||||
|
}
|
||||||
|
register("android-library") {
|
||||||
|
id = "com.github.android-password-store.android-library"
|
||||||
|
implementationClass = "dev.msfjarvis.aps.gradle.LibraryPlugin"
|
||||||
|
}
|
||||||
|
register("published-android-library") {
|
||||||
|
id = "com.github.android-password-store.published-android-library"
|
||||||
|
implementationClass = "dev.msfjarvis.aps.gradle.PublishedAndroidLibraryPlugin"
|
||||||
|
}
|
||||||
|
register("rename-artifacts") {
|
||||||
|
id = "com.github.android-password-store.rename-artifacts"
|
||||||
|
implementationClass = "dev.msfjarvis.aps.gradle.RenameArtifactsPlugin"
|
||||||
|
}
|
||||||
|
register("sentry") {
|
||||||
|
id = "com.github.android-password-store.sentry"
|
||||||
|
implementationClass = "dev.msfjarvis.aps.gradle.SentryPlugin"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,7 +67,7 @@ configurations.all {
|
||||||
val overridenVersion = System.getenv(overrideName)
|
val overridenVersion = System.getenv(overrideName)
|
||||||
if (!overridenVersion.isNullOrEmpty()) {
|
if (!overridenVersion.isNullOrEmpty()) {
|
||||||
project.logger.lifecycle(
|
project.logger.lifecycle(
|
||||||
"Overriding dependency ${requested.group}:${requested.name} to version ${overridenVersion}"
|
"Overriding dependency ${requested.group}:${requested.name} to version $overridenVersion"
|
||||||
)
|
)
|
||||||
useVersion(overridenVersion)
|
useVersion(overridenVersion)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,72 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved.
|
|
||||||
* SPDX-License-Identifier: GPL-3.0-only
|
|
||||||
*/
|
|
||||||
@file:Suppress("UnstableApiUsage")
|
|
||||||
|
|
||||||
import flavors.FlavorDimensions
|
|
||||||
import flavors.ProductFlavors
|
|
||||||
import signing.configureBuildSigning
|
|
||||||
import snapshot.SnapshotExtension
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
id("com.android.application")
|
|
||||||
id("com.github.android-password-store.android-common")
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Project.isSnapshot(): Boolean {
|
|
||||||
with(project.providers) {
|
|
||||||
val workflow = environmentVariable("GITHUB_WORKFLOW")
|
|
||||||
val snapshot = environmentVariable("SNAPSHOT")
|
|
||||||
return workflow.isPresent || snapshot.isPresent
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
android {
|
|
||||||
val minifySwitch = project.providers.environmentVariable("DISABLE_MINIFY")
|
|
||||||
|
|
||||||
adbOptions.installOptions("--user 0")
|
|
||||||
|
|
||||||
dependenciesInfo {
|
|
||||||
includeInBundle = false
|
|
||||||
includeInApk = false
|
|
||||||
}
|
|
||||||
|
|
||||||
buildFeatures {
|
|
||||||
viewBinding = true
|
|
||||||
buildConfig = true
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
named("release") {
|
|
||||||
isMinifyEnabled = !minifySwitch.isPresent
|
|
||||||
setProguardFiles(
|
|
||||||
listOf(
|
|
||||||
"proguard-android-optimize.txt",
|
|
||||||
"proguard-rules.pro",
|
|
||||||
"proguard-rules-missing-classes.pro",
|
|
||||||
)
|
|
||||||
)
|
|
||||||
buildConfigField("boolean", "ENABLE_DEBUG_FEATURES", "${project.isSnapshot()}")
|
|
||||||
}
|
|
||||||
named("debug") {
|
|
||||||
applicationIdSuffix = ".debug"
|
|
||||||
versionNameSuffix = "-debug"
|
|
||||||
isMinifyEnabled = false
|
|
||||||
buildConfigField("boolean", "ENABLE_DEBUG_FEATURES", "true")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
flavorDimensions.add(FlavorDimensions.FREE)
|
|
||||||
productFlavors {
|
|
||||||
register(ProductFlavors.FREE) {}
|
|
||||||
register(ProductFlavors.NON_FREE) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
project.configureBuildSigning()
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
extensions.add("snapshot", SnapshotExtension::class.java)
|
|
||||||
the<SnapshotExtension>().snapshot = isSnapshot()
|
|
||||||
}
|
|
|
@ -1,43 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved.
|
|
||||||
* SPDX-License-Identifier: GPL-3.0-only
|
|
||||||
*/
|
|
||||||
@file:Suppress("UnstableApiUsage")
|
|
||||||
|
|
||||||
import com.android.build.gradle.TestedExtension
|
|
||||||
import flavors.configureSlimTests
|
|
||||||
|
|
||||||
extensions.configure<TestedExtension> {
|
|
||||||
setCompileSdkVersion(31)
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = 23
|
|
||||||
targetSdk = 31
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceSets {
|
|
||||||
named("main") { java.srcDirs("src/main/kotlin") }
|
|
||||||
named("test") { java.srcDirs("src/test/kotlin") }
|
|
||||||
named("androidTest") { java.srcDirs("src/androidTest/kotlin") }
|
|
||||||
}
|
|
||||||
|
|
||||||
packagingOptions {
|
|
||||||
resources.excludes.add("**/*.version")
|
|
||||||
resources.excludes.add("**/*.txt")
|
|
||||||
resources.excludes.add("**/*.kotlin_module")
|
|
||||||
resources.excludes.add("**/plugin.properties")
|
|
||||||
resources.excludes.add("**/META-INF/AL2.0")
|
|
||||||
resources.excludes.add("**/META-INF/LGPL2.1")
|
|
||||||
}
|
|
||||||
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = JavaVersion.VERSION_11
|
|
||||||
targetCompatibility = JavaVersion.VERSION_11
|
|
||||||
}
|
|
||||||
|
|
||||||
testOptions {
|
|
||||||
animationsDisabled = true
|
|
||||||
unitTests.isReturnDefaultValues = true
|
|
||||||
}
|
|
||||||
|
|
||||||
configureSlimTests()
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved.
|
|
||||||
* SPDX-License-Identifier: GPL-3.0-only
|
|
||||||
*/
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
id("com.android.library")
|
|
||||||
id("com.github.android-password-store.android-common")
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved.
|
|
||||||
* SPDX-License-Identifier: GPL-3.0-only
|
|
||||||
*/
|
|
||||||
|
|
||||||
import com.vanniktech.maven.publish.AndroidSingleVariantLibrary
|
|
||||||
import com.vanniktech.maven.publish.SonatypeHost
|
|
||||||
import org.gradle.kotlin.dsl.provideDelegate
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
id("com.github.android-password-store.android-library")
|
|
||||||
id("com.vanniktech.maven.publish.base")
|
|
||||||
id("signing")
|
|
||||||
}
|
|
||||||
|
|
||||||
group = requireNotNull(project.findProperty("GROUP"))
|
|
||||||
|
|
||||||
version = requireNotNull(project.findProperty("VERSION_NAME"))
|
|
||||||
|
|
||||||
@Suppress("UnstableApiUsage")
|
|
||||||
mavenPublishing {
|
|
||||||
publishToMavenCentral(SonatypeHost.DEFAULT)
|
|
||||||
signAllPublications()
|
|
||||||
configure(AndroidSingleVariantLibrary())
|
|
||||||
pomFromGradleProperties()
|
|
||||||
}
|
|
||||||
|
|
||||||
afterEvaluate {
|
|
||||||
signing {
|
|
||||||
val signingKey: String? by project
|
|
||||||
val signingPassword: String? by project
|
|
||||||
useInMemoryPgpKeys(signingKey, signingPassword)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
import artifacts.CollectApksTask
|
|
||||||
import artifacts.CollectBundleTask
|
|
||||||
import com.android.build.api.artifact.SingleArtifact
|
|
||||||
|
|
||||||
plugins { id("com.android.application") }
|
|
||||||
|
|
||||||
androidComponents {
|
|
||||||
onVariants { variant ->
|
|
||||||
project.tasks.register<CollectApksTask>("collect${variant.name.capitalize()}Apks") {
|
|
||||||
variantName.set(variant.name)
|
|
||||||
apkFolder.set(variant.artifacts.get(SingleArtifact.APK))
|
|
||||||
builtArtifactsLoader.set(variant.artifacts.getBuiltArtifactsLoader())
|
|
||||||
outputDirectory.set(project.layout.projectDirectory.dir("outputs"))
|
|
||||||
}
|
|
||||||
project.tasks.register<CollectBundleTask>("collect${variant.name.capitalize()}Bundle") {
|
|
||||||
variantName.set(variant.name)
|
|
||||||
versionName.set(android.defaultConfig.versionName)
|
|
||||||
bundleFile.set(variant.artifacts.get(SingleArtifact.BUNDLE))
|
|
||||||
outputDirectory.set(project.layout.projectDirectory.dir("outputs"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
@file:Suppress("PropertyName")
|
|
||||||
|
|
||||||
import flavors.FlavorDimensions
|
|
||||||
import flavors.ProductFlavors
|
|
||||||
import io.sentry.android.gradle.extensions.InstrumentationFeature
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
id("com.android.application")
|
|
||||||
id("io.sentry.android.gradle")
|
|
||||||
}
|
|
||||||
|
|
||||||
val SENTRY_DSN_PROPERTY = "SENTRY_DSN"
|
|
||||||
val SENTRY_UPLOAD_MAPPINGS_PROPERTY = "sentryUploadMappings"
|
|
||||||
|
|
||||||
android {
|
|
||||||
androidComponents {
|
|
||||||
onVariants(selector().withFlavor(FlavorDimensions.FREE to ProductFlavors.NON_FREE)) { variant ->
|
|
||||||
val sentryDsn = project.providers.environmentVariable(SENTRY_DSN_PROPERTY)
|
|
||||||
if (sentryDsn.isPresent) {
|
|
||||||
variant.manifestPlaceholders.put("sentryDsn", sentryDsn.get())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sentry {
|
|
||||||
autoUploadProguardMapping.set(
|
|
||||||
project.providers.gradleProperty(SENTRY_UPLOAD_MAPPINGS_PROPERTY).isPresent
|
|
||||||
)
|
|
||||||
ignoredBuildTypes.set(setOf("debug"))
|
|
||||||
ignoredFlavors.set(setOf(ProductFlavors.FREE))
|
|
||||||
tracingInstrumentation {
|
|
||||||
enabled.set(true)
|
|
||||||
features.set(setOf(InstrumentationFeature.FILE_IO))
|
|
||||||
}
|
|
||||||
autoInstallation.enabled.set(false)
|
|
||||||
}
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
package dev.msfjarvis.aps.gradle
|
||||||
|
|
||||||
|
import com.android.build.gradle.TestedExtension
|
||||||
|
import dev.msfjarvis.aps.gradle.flavors.configureSlimTests
|
||||||
|
import org.gradle.api.JavaVersion
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.configure
|
||||||
|
|
||||||
|
@Suppress("UnstableApiUsage")
|
||||||
|
object AndroidCommon {
|
||||||
|
fun configure(project: Project) {
|
||||||
|
project.extensions.configure<TestedExtension> {
|
||||||
|
setCompileSdkVersion(31)
|
||||||
|
defaultConfig {
|
||||||
|
minSdk = 23
|
||||||
|
targetSdk = 31
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
named("main") { java.srcDirs("src/main/kotlin") }
|
||||||
|
named("test") { java.srcDirs("src/test/kotlin") }
|
||||||
|
named("androidTest") { java.srcDirs("src/androidTest/kotlin") }
|
||||||
|
}
|
||||||
|
|
||||||
|
packagingOptions {
|
||||||
|
resources.excludes.add("**/*.version")
|
||||||
|
resources.excludes.add("**/*.txt")
|
||||||
|
resources.excludes.add("**/*.kotlin_module")
|
||||||
|
resources.excludes.add("**/plugin.properties")
|
||||||
|
resources.excludes.add("**/META-INF/AL2.0")
|
||||||
|
resources.excludes.add("**/META-INF/LGPL2.1")
|
||||||
|
}
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_11
|
||||||
|
targetCompatibility = JavaVersion.VERSION_11
|
||||||
|
}
|
||||||
|
|
||||||
|
testOptions {
|
||||||
|
animationsDisabled = true
|
||||||
|
unitTests.isReturnDefaultValues = true
|
||||||
|
}
|
||||||
|
|
||||||
|
project.configureSlimTests()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,81 @@
|
||||||
|
@file:Suppress("UnstableApiUsage")
|
||||||
|
|
||||||
|
package dev.msfjarvis.aps.gradle
|
||||||
|
|
||||||
|
import com.android.build.gradle.AppPlugin
|
||||||
|
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
|
||||||
|
import dev.msfjarvis.aps.gradle.flavors.FlavorDimensions
|
||||||
|
import dev.msfjarvis.aps.gradle.flavors.ProductFlavors
|
||||||
|
import dev.msfjarvis.aps.gradle.signing.configureBuildSigning
|
||||||
|
import dev.msfjarvis.aps.gradle.snapshot.SnapshotExtension
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.apply
|
||||||
|
import org.gradle.kotlin.dsl.dependencies
|
||||||
|
import org.gradle.kotlin.dsl.getByType
|
||||||
|
import org.gradle.kotlin.dsl.the
|
||||||
|
|
||||||
|
@Suppress("Unused")
|
||||||
|
class ApplicationPlugin : Plugin<Project> {
|
||||||
|
|
||||||
|
override fun apply(project: Project) {
|
||||||
|
project.pluginManager.apply(AppPlugin::class)
|
||||||
|
AndroidCommon.configure(project)
|
||||||
|
project.extensions.getByType<BaseAppModuleExtension>().run {
|
||||||
|
val minifySwitch = project.providers.environmentVariable("DISABLE_MINIFY")
|
||||||
|
|
||||||
|
adbOptions.installOptions("--user 0")
|
||||||
|
|
||||||
|
dependenciesInfo {
|
||||||
|
includeInBundle = false
|
||||||
|
includeInApk = false
|
||||||
|
}
|
||||||
|
|
||||||
|
buildFeatures {
|
||||||
|
viewBinding = true
|
||||||
|
buildConfig = true
|
||||||
|
}
|
||||||
|
|
||||||
|
buildTypes {
|
||||||
|
named("release") {
|
||||||
|
isMinifyEnabled = !minifySwitch.isPresent
|
||||||
|
setProguardFiles(
|
||||||
|
listOf(
|
||||||
|
"proguard-android-optimize.txt",
|
||||||
|
"proguard-rules.pro",
|
||||||
|
"proguard-rules-missing-classes.pro",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
buildConfigField("boolean", "ENABLE_DEBUG_FEATURES", "${project.isSnapshot()}")
|
||||||
|
}
|
||||||
|
named("debug") {
|
||||||
|
applicationIdSuffix = ".debug"
|
||||||
|
versionNameSuffix = "-debug"
|
||||||
|
isMinifyEnabled = false
|
||||||
|
buildConfigField("boolean", "ENABLE_DEBUG_FEATURES", "true")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
flavorDimensions.add(FlavorDimensions.FREE)
|
||||||
|
productFlavors {
|
||||||
|
register(ProductFlavors.FREE) {}
|
||||||
|
register(ProductFlavors.NON_FREE) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
project.configureBuildSigning()
|
||||||
|
}
|
||||||
|
|
||||||
|
project.dependencies {
|
||||||
|
extensions.add("snapshot", SnapshotExtension::class.java)
|
||||||
|
the<SnapshotExtension>().snapshot = project.isSnapshot()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun Project.isSnapshot(): Boolean {
|
||||||
|
with(project.providers) {
|
||||||
|
val workflow = environmentVariable("GITHUB_WORKFLOW")
|
||||||
|
val snapshot = environmentVariable("SNAPSHOT")
|
||||||
|
return workflow.isPresent || snapshot.isPresent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package dev.msfjarvis.aps.gradle
|
||||||
|
|
||||||
|
import com.android.build.gradle.LibraryPlugin
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.apply
|
||||||
|
|
||||||
|
@Suppress("Unused")
|
||||||
|
class LibraryPlugin : Plugin<Project> {
|
||||||
|
|
||||||
|
override fun apply(project: Project) {
|
||||||
|
project.pluginManager.apply(LibraryPlugin::class)
|
||||||
|
AndroidCommon.configure(project)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
@file:Suppress("UnstableApiUsage")
|
||||||
|
|
||||||
|
package dev.msfjarvis.aps.gradle
|
||||||
|
|
||||||
|
import com.vanniktech.maven.publish.AndroidSingleVariantLibrary
|
||||||
|
import com.vanniktech.maven.publish.MavenPublishBaseExtension
|
||||||
|
import com.vanniktech.maven.publish.MavenPublishBasePlugin
|
||||||
|
import com.vanniktech.maven.publish.SonatypeHost
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.apply
|
||||||
|
import org.gradle.kotlin.dsl.getByType
|
||||||
|
import org.gradle.kotlin.dsl.provideDelegate
|
||||||
|
import org.gradle.plugins.signing.SigningExtension
|
||||||
|
import org.gradle.plugins.signing.SigningPlugin
|
||||||
|
|
||||||
|
@Suppress("Unused")
|
||||||
|
class PublishedAndroidLibraryPlugin : Plugin<Project> {
|
||||||
|
|
||||||
|
override fun apply(project: Project) {
|
||||||
|
project.plugins.run {
|
||||||
|
apply(LibraryPlugin::class)
|
||||||
|
apply(MavenPublishBasePlugin::class)
|
||||||
|
apply(SigningPlugin::class)
|
||||||
|
}
|
||||||
|
project.extensions.getByType<MavenPublishBaseExtension>().run {
|
||||||
|
publishToMavenCentral(SonatypeHost.DEFAULT)
|
||||||
|
signAllPublications()
|
||||||
|
configure(AndroidSingleVariantLibrary())
|
||||||
|
pomFromGradleProperties()
|
||||||
|
}
|
||||||
|
project.afterEvaluate {
|
||||||
|
project.extensions.getByType<SigningExtension>().run {
|
||||||
|
val signingKey: String? by project
|
||||||
|
val signingPassword: String? by project
|
||||||
|
useInMemoryPgpKeys(signingKey, signingPassword)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
package dev.msfjarvis.aps.gradle
|
||||||
|
|
||||||
|
import com.android.build.api.artifact.SingleArtifact
|
||||||
|
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
|
||||||
|
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
|
||||||
|
import dev.msfjarvis.aps.gradle.artifacts.CollectApksTask
|
||||||
|
import dev.msfjarvis.aps.gradle.artifacts.CollectBundleTask
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.getByType
|
||||||
|
import org.gradle.kotlin.dsl.register
|
||||||
|
|
||||||
|
@Suppress("Unused")
|
||||||
|
class RenameArtifactsPlugin : Plugin<Project> {
|
||||||
|
|
||||||
|
override fun apply(project: Project) {
|
||||||
|
project.pluginManager.withPlugin("com.android.application") {
|
||||||
|
val android = project.extensions.getByType<BaseAppModuleExtension>()
|
||||||
|
project.extensions.getByType<ApplicationAndroidComponentsExtension>().run {
|
||||||
|
onVariants { variant ->
|
||||||
|
project.tasks.register<CollectApksTask>("collect${variant.name.capitalize()}Apks") {
|
||||||
|
variantName.set(variant.name)
|
||||||
|
apkFolder.set(variant.artifacts.get(SingleArtifact.APK))
|
||||||
|
builtArtifactsLoader.set(variant.artifacts.getBuiltArtifactsLoader())
|
||||||
|
outputDirectory.set(project.layout.projectDirectory.dir("outputs"))
|
||||||
|
}
|
||||||
|
project.tasks.register<CollectBundleTask>("collect${variant.name.capitalize()}Bundle") {
|
||||||
|
variantName.set(variant.name)
|
||||||
|
versionName.set(android.defaultConfig.versionName)
|
||||||
|
bundleFile.set(variant.artifacts.get(SingleArtifact.BUNDLE))
|
||||||
|
outputDirectory.set(project.layout.projectDirectory.dir("outputs"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
package dev.msfjarvis.aps.gradle
|
||||||
|
|
||||||
|
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
|
||||||
|
import dev.msfjarvis.aps.gradle.flavors.FlavorDimensions
|
||||||
|
import dev.msfjarvis.aps.gradle.flavors.ProductFlavors
|
||||||
|
import io.sentry.android.gradle.SentryPlugin
|
||||||
|
import io.sentry.android.gradle.extensions.InstrumentationFeature
|
||||||
|
import io.sentry.android.gradle.extensions.SentryPluginExtension
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.apply
|
||||||
|
import org.gradle.kotlin.dsl.getByType
|
||||||
|
|
||||||
|
@Suppress("Unused")
|
||||||
|
class SentryPlugin : Plugin<Project> {
|
||||||
|
|
||||||
|
override fun apply(project: Project) {
|
||||||
|
project.pluginManager.withPlugin("com.android.application") {
|
||||||
|
project.extensions.getByType<ApplicationAndroidComponentsExtension>().run {
|
||||||
|
onVariants(selector().withFlavor(FlavorDimensions.FREE to ProductFlavors.NON_FREE)) {
|
||||||
|
variant ->
|
||||||
|
val sentryDsn = project.providers.environmentVariable(SENTRY_DSN_PROPERTY)
|
||||||
|
if (sentryDsn.isPresent) {
|
||||||
|
variant.manifestPlaceholders.put("sentryDsn", sentryDsn.get())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
project.plugins.apply(SentryPlugin::class)
|
||||||
|
project.extensions.getByType<SentryPluginExtension>().run {
|
||||||
|
autoUploadProguardMapping.set(
|
||||||
|
project.providers.gradleProperty(SENTRY_UPLOAD_MAPPINGS_PROPERTY).isPresent
|
||||||
|
)
|
||||||
|
ignoredBuildTypes.set(setOf("debug"))
|
||||||
|
ignoredFlavors.set(setOf(ProductFlavors.FREE))
|
||||||
|
tracingInstrumentation {
|
||||||
|
enabled.set(true)
|
||||||
|
features.set(setOf(InstrumentationFeature.FILE_IO))
|
||||||
|
}
|
||||||
|
autoInstallation.enabled.set(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private companion object {
|
||||||
|
private const val SENTRY_DSN_PROPERTY = "SENTRY_DSN"
|
||||||
|
private const val SENTRY_UPLOAD_MAPPINGS_PROPERTY = "sentryUploadMappings"
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package artifacts
|
package dev.msfjarvis.aps.gradle.artifacts
|
||||||
|
|
||||||
import com.android.build.api.variant.BuiltArtifactsLoader
|
import com.android.build.api.variant.BuiltArtifactsLoader
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
|
@ -1,4 +1,4 @@
|
||||||
package artifacts
|
package dev.msfjarvis.aps.gradle.artifacts
|
||||||
|
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import java.nio.file.StandardCopyOption
|
import java.nio.file.StandardCopyOption
|
|
@ -3,7 +3,7 @@
|
||||||
* SPDX-License-Identifier: GPL-3.0-only
|
* SPDX-License-Identifier: GPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package flavors
|
package dev.msfjarvis.aps.gradle.flavors
|
||||||
|
|
||||||
object FlavorDimensions {
|
object FlavorDimensions {
|
||||||
const val FREE = "free"
|
const val FREE = "free"
|
|
@ -3,7 +3,7 @@
|
||||||
* SPDX-License-Identifier: GPL-3.0-only
|
* SPDX-License-Identifier: GPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package flavors
|
package dev.msfjarvis.aps.gradle.flavors
|
||||||
|
|
||||||
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
|
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
|
||||||
import com.android.build.api.variant.LibraryAndroidComponentsExtension
|
import com.android.build.api.variant.LibraryAndroidComponentsExtension
|
|
@ -3,7 +3,7 @@
|
||||||
* SPDX-License-Identifier: GPL-3.0-only
|
* SPDX-License-Identifier: GPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package signing
|
package dev.msfjarvis.aps.gradle.signing
|
||||||
|
|
||||||
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
|
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
|
||||||
import java.util.Properties
|
import java.util.Properties
|
|
@ -3,7 +3,7 @@
|
||||||
* SPDX-License-Identifier: GPL-3.0-only
|
* SPDX-License-Identifier: GPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package snapshot
|
package dev.msfjarvis.aps.gradle.snapshot
|
||||||
|
|
||||||
abstract class SnapshotExtension {
|
abstract class SnapshotExtension {
|
||||||
abstract var snapshot: Boolean
|
abstract var snapshot: Boolean
|
|
@ -3,7 +3,7 @@
|
||||||
* SPDX-License-Identifier: GPL-3.0-only
|
* SPDX-License-Identifier: GPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package versioning
|
package dev.msfjarvis.aps.gradle.versioning
|
||||||
|
|
||||||
const val VERSIONING_PROP_FILE = "version.properties"
|
const val VERSIONING_PROP_FILE = "version.properties"
|
||||||
const val VERSIONING_PROP_VERSION_NAME = "versioning-plugin.versionName"
|
const val VERSIONING_PROP_VERSION_NAME = "versioning-plugin.versionName"
|
|
@ -3,7 +3,7 @@
|
||||||
* SPDX-License-Identifier: GPL-3.0-only
|
* SPDX-License-Identifier: GPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package versioning
|
package dev.msfjarvis.aps.gradle.versioning
|
||||||
|
|
||||||
import com.android.build.gradle.internal.plugins.AppPlugin
|
import com.android.build.gradle.internal.plugins.AppPlugin
|
||||||
import com.vdurmont.semver4j.Semver
|
import com.vdurmont.semver4j.Semver
|
|
@ -3,7 +3,7 @@
|
||||||
* SPDX-License-Identifier: GPL-3.0-only
|
* SPDX-License-Identifier: GPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package versioning
|
package dev.msfjarvis.aps.gradle.versioning
|
||||||
|
|
||||||
import com.vdurmont.semver4j.Semver
|
import com.vdurmont.semver4j.Semver
|
||||||
import org.gradle.api.DefaultTask
|
import org.gradle.api.DefaultTask
|
Loading…
Add table
Add a link
Reference in a new issue