Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Publish Android-specific artifact #70

Merged
merged 3 commits into from
Jul 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.buildlogic.kotlin.multiplatform.library) apply false
alias(libs.plugins.compose) apply false
alias(libs.plugins.kotlin.atomicfu) apply false
Expand Down
1 change: 1 addition & 0 deletions buildlogic/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ plugins {

dependencies {
compileOnly(gradleApi())
implementation(libs.plugin.android.build)
implementation(libs.plugin.kotlin)
implementation(libs.plugin.vanniktech.publish)
}
Expand Down
1 change: 1 addition & 0 deletions buildlogic/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
dependencyResolutionManagement {
repositories {
google()
gradlePluginPortal()
mavenCentral()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package buildlogic

import com.android.build.api.dsl.LibraryExtension
import com.vanniktech.maven.publish.JavadocJar
import com.vanniktech.maven.publish.KotlinMultiplatform
import com.vanniktech.maven.publish.MavenPublishBaseExtension
Expand All @@ -8,6 +9,7 @@ import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.artifacts.VersionCatalogsExtension
import org.gradle.kotlin.dsl.configure
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension

Expand All @@ -18,6 +20,12 @@ internal class KotlinMultiplatformLibraryPlugin : Plugin<Project> {
KotlinMultiplatformLibraryPluginExtension::class.java,
)
val libs = extensions.getByType(VersionCatalogsExtension::class.java).named("libs")
pluginManager.apply(
libs.findPlugin("android-library")
.get()
.get()
.pluginId,
)
pluginManager.apply(
libs.findPlugin("kotlin-multiplatform")
.get()
Expand All @@ -31,6 +39,27 @@ internal class KotlinMultiplatformLibraryPlugin : Plugin<Project> {
.pluginId,
)
group = "com.tidal.networktime"
configure<KotlinMultiplatformExtension> {
applyDefaultHierarchyTemplate()
androidTarget {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_1_8)
}
publishLibraryVariants("release")
}
jvm()
sourceSets.androidMain.get().dependsOn(sourceSets.jvmMain.get())
}
configure<KotlinProjectExtension> {
sourceSets.all {
languageSettings.optIn("kotlin.experimental.ExperimentalObjCName")
}
}
configure<LibraryExtension> {
compileSdk = 34
defaultConfig.minSdk = 26
namespace = "com.tidal.networktime${customExtension.androidNamespaceSuffix.getOrElse("")}"
}
configure<MavenPublishBaseExtension> {
pom {
name.set(project.name)
Expand Down Expand Up @@ -62,14 +91,5 @@ internal class KotlinMultiplatformLibraryPlugin : Plugin<Project> {
signAllPublications()
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL, true)
}
configure<KotlinMultiplatformExtension> {
applyDefaultHierarchyTemplate()
jvm()
}
configure<KotlinProjectExtension> {
sourceSets.all {
languageSettings.optIn("kotlin.experimental.ExperimentalObjCName")
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ open class KotlinMultiplatformLibraryPluginExtension @Inject constructor(
private val project: Project,
objectFactory: ObjectFactory,
) {
val androidNamespaceSuffix: Property<String> = objectFactory.property(String::class.java)
val pomDescription: Property<String> = objectFactory.property(String::class.java)

fun xCFramework(xCFrameworkName: String) = with(project) {
Expand Down
1 change: 1 addition & 0 deletions changelog/1.1.2
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add Android-specific artifact.
3 changes: 2 additions & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,17 @@ kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-c
kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinx-datetime" }
kotlinx-serialization-json-okio = { module = "com.squareup.okio:okio", version.ref = "okio" }
okio = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json-okio", version.ref = "kotlinx-serialization-json-okio" }
plugin-android-build = { module = "com.android.tools.build:gradle", version.ref = "android-build" }
plugin-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
plugin-vanniktech-publish = { module = "com.vanniktech:gradle-maven-publish-plugin", version.ref = "vanniktech-publish" }

[plugins]
android-application = { id = "com.android.application", version.ref = "android-build" }
android-library = { id = "com.android.library", version.ref = "android-build" }
buildlogic-kotlin-multiplatform-library = { id = "buildlogic.kotlin.multiplatform.library", version = "unspecified" }
compose = { id = "org.jetbrains.compose", version.ref = "compose" }
kotlin-atomicfu = { id = "org.jetbrains.kotlin.plugin.atomicfu", version.ref = "kotlin" }
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
vanniktech-publish = { id = "com.vanniktech.maven.publish", version.ref = "vanniktech-publish" }
1 change: 1 addition & 0 deletions networktime-singletons/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ plugins {
}

buildlogicKotlinMultiplatformLibrary {
androidNamespaceSuffix = ".singletons"
pomDescription = "Singleton API extension."
xCFramework("TidalNetworkTimeSingletons")
}
Expand Down
7 changes: 7 additions & 0 deletions networktime/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget

plugins {
Expand All @@ -11,6 +12,12 @@ buildlogicKotlinMultiplatformLibrary {
}

kotlin {
androidTarget {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_1_8)
}
publishLibraryVariants("release")
}
targets.filterIsInstance<KotlinNativeTarget>()
.forEach {
it.compilations.configureEach { cinterops.create("NetworkFrameworkWorkaround") }
Expand Down
5 changes: 5 additions & 0 deletions networktime/src/androidMain/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

<uses-permission android:name="android.permission.INTERNET" />
</manifest>
5 changes: 1 addition & 4 deletions samples/multiplatform-kotlin/android/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,6 @@ kotlin {

android {
compileSdk = 34
defaultConfig {
minSdk = 21
targetSdk = 34
}
defaultConfig.minSdk = 26
namespace = "com.tidal.networktime.sample.android"
}
Loading