Slide 1

Slide 1 text

Sungyong An @fornewid KotlinConf’23 Songdo Kotlin Multiplatform Library ߓನೞӝ

Slide 2

Slide 2 text

KOTLINCONF’23 SONGDO Sungyong An NAVER WEBTOON Android GDE @fornewid ⚠ Ӓېࢲ য়ט ߊ಴ب Android ѐߊ੗ ҙ੼ਵ۽ ૓೯ؾפ׮! ⚠

Slide 3

Slide 3 text

KOTLINCONF’23 SONGDO য়ט ߊ಴ח KotlinConf’23 ࣁ࣌ ղਊਸ ଵҊೞৈ ٜ݅঻णפ׮. • How to Publish Your First Kotlin Multipla tf orm • Kotlin Multipla tf orm Conversions at Android Jetpack Scale Library • Compose Multipla tf orm on iOS Link: https://kotlinconf.com/talks/

Slide 4

Slide 4 text

KOTLINCONF’23 SONGDO ❤ Android ѐߊ੗ח Kotlinী ஘ࣼೞ׮.

Slide 5

Slide 5 text

KOTLINCONF’23 SONGDO 👀 ೞ૑݅ Multipla tf ormীח ҙब੉ ੸׮.

Slide 6

Slide 6 text

KOTLINCONF’23 SONGDO Kotlin Multiplatform? नӏ জ ӝઓ জ Link: https://kotlinlang.org/lp/multiplatform/ ׮নೠ ೒ۖಬী ؀೧ زੌೠ ௏٘ܳ ҕਬೞৈ ѐߊೡ ࣻ ੓׮.

Slide 7

Slide 7 text

KOTLINCONF’23 SONGDO ৵ Ӓۡө? ׮ܲ ೒ۖಬ ѐߊ੗о Kotlinਸ ೟ण೧ঠ ೠ׮. ఋੋਸ ࢸٙೞח Ѫ਷ য۵׮. Link: https://kotlinlang.org/docs/multiplatform-mobile-introduce-your-team.html

Slide 8

Slide 8 text

KOTLINCONF’23 SONGDO Ӓۧ૑݅… 🚀 Android੄ ୭न UI ోఉ, Jetpack Compose! Link: https://goo.gle/compose

Slide 9

Slide 9 text

KOTLINCONF’23 SONGDO Link: https://www.jetbrains.com/lp/compose-multiplatform/ KOTLINCONF’23 SONGDO

Slide 10

Slide 10 text

KOTLINCONF’23 SONGDO ੉޷ ঌҊ ੓ח Compose APIܳ ੉ਊ೧ ৈ۞ ೒ۖಬী ز੘ೞח UIܳ ٜ݅ ࣻ ੓׮. ≈ Link: https://www.jetbrains.com/lp/compose-multiplatform/

Slide 11

Slide 11 text

KOTLINCONF’23 SONGDO Link: https://www.jetbrains.com/lp/compose-multiplatform/ ݃ஜղ ױੌ ௏٘݅ਵ۽ب Kotlin Multipla tf orm জਸ ٜ݅ ࣻ ੓׮. Kotlin Multipla tf orm Library੄ ژ ׮ܲ оמࢿ!

Slide 12

Slide 12 text

KOTLINCONF’23 SONGDO Kotlin Multiplatform੄ ѐ֛ਸ ੉೧ೞҊ, 
 Library۽ ߓನೡ ٸ Ҋ۰ೡ ੼ਸ ঌইࠇפ׮. ݾ಴ Multiplatform জਸ ٜ݅ ࣻ ੓ח ജ҃ਸ оԼࠁ੗!

Slide 13

Slide 13 text

KOTLINCONF’23 SONGDO Kotlin Multiplatform Link: https://kotlinlang.org/docs/multiplatform.html

Slide 14

Slide 14 text

KOTLINCONF’23 SONGDO Overview Kotlin/Native Kotlin/JVM п ೒ۖಬ੄ ೐۽ં౟ীࢲ ҕా ݽٕী ੄ઓࢿਸ ыח ҳઑ.

Slide 15

Slide 15 text

KOTLINCONF’23 SONGDO expect / actual Kotlin Multipla tf orm ݽٕী ೒ۖಬ APIܳ োѾೞח ߑߨ. Link: https://kotlinlang.org/docs/multiplatform-connect-to-apis.html

Slide 16

Slide 16 text

KOTLINCONF’23 SONGDO expect / actual زੌೠ ੉ܴਸ о૑ݴ, زੌೠ ಁః૑ী ਤ஖೧ঠ ೠ׮. Link: https://kotlinlang.org/docs/multiplatform-connect-to-apis.html

Slide 17

Slide 17 text

KOTLINCONF’23 SONGDO expect / actual п ೒ۖಬ੄ ௏٘ח ೞա੄ ݽٕ উীࢲ Source Setsਵ۽ ҳ࠙ೡ ࣻ ੓׮. Link: https://kotlinlang.org/docs/multiplatform-connect-to-apis.html

Slide 18

Slide 18 text

KOTLINCONF’23 SONGDO Get started ѐߊജ҃ਸ ળ࠺ೠ׮. • ೙ਃೠ بҳܳ ࢸ஖ೠ׮: 
 Android Studio, XCode, JDK, KMM plugin, Kotlin plugin, 
 CocoaPods dependency manager • ѐߊജ҃੉ ੜ ҳࢿغ঻ח૑ ഛੋೠ׮: KDoctor Link: https://kotlinlang.org/docs/multiplatform-mobile-setup.html

Slide 19

Slide 19 text

KOTLINCONF’23 SONGDO Get started Kotlin Multipla tf orm জ ೐۽ં౟ܳ ݅ٚ׮. • Project Templateਵ۽ 
 KMM ೐۽ં౟ܳ ࢤࢿೠ׮. • ೐۽ં౟ ҳઑܳ ഛੋೡ ࣻ ੓ѱ 
 Androidীࢲ Project۽ ੹ജೠ׮. Link: https://kotlinlang.org/docs/multiplatform-mobile-create-first-app.html

Slide 20

Slide 20 text

KOTLINCONF’23 SONGDO Get started Kotlin Multipla tf orm জਸ प೯೧ࠄ׮. Link: https://kotlinlang.org/docs/multiplatform-mobile-create-first-app.html#run-your-application

Slide 21

Slide 21 text

KOTLINCONF’23 SONGDO Project Structure ೐۽ં౟ ҳઑܳ ࢓ಝࠁ੗. Link: https://kotlinlang.org/docs/multiplatform-mobile-create-first-app.html#examine-the-project-structure

Slide 22

Slide 22 text

KOTLINCONF’23 SONGDO Project Structure Link: https://kotlinlang.org/docs/multiplatform-hierarchy.html Target Source Sets

Slide 23

Slide 23 text

KOTLINCONF’23 SONGDO android Target Link: https://kotlinlang.org/docs/multiplatform-hierarchy.html#see-the-full-hierarchy-template

Slide 24

Slide 24 text

KOTLINCONF’23 SONGDO Source Sets androidMain

Slide 25

Slide 25 text

KOTLINCONF’23 SONGDO Source Sets ઺р ױ҅ Source Setsਸ ٜ݅ ࣻ ੓׮. Link: https://kotlinlang.org/docs/multiplatform-hierarchy.html#target-shortcuts

Slide 26

Slide 26 text

KOTLINCONF’23 SONGDO Configure compilations Link: https://kotlinlang.org/docs/multiplatform-configure-compilations.html

Slide 27

Slide 27 text

KOTLINCONF’23 SONGDO Restrictions • IntelliJ ژח Android Studio, Gradle ӝ߈੉ۄࢲ iOS ѐߊ੗ח ੽Ӕࢿ੉ ڄয૓׮. • ߈؀۽ iOS ೒ۖಬীࢲ ѐߊೞ۰ݶ ݓ੉ ೙ਃೞ׮. • ৈ۞ Targetਸ ૑ਗೞח Multipla tf orm ۄ੉࠳۞ܻо ੸׮. • kotlinx ۄ੉࠳۞ܻب Target ੌࠗ݅ ૑ਗೞח Ѫٜ੉ ݆׮. • Logging ۄ੉࠳۞ܻب ઑӘ গݒೞ׮. 
 h tt ps://tonisives.com/blog/2021/03/03/kotlin-multipla tf orm-logging-libraries/ • non-JVM targetਸ Ҋ۰ೞݶ, common ௏٘ী Java ௏٘ܳ ನೣೡ ࣻ হ׮. • IOException, @Jvm- annotation ١ਸ ࢎਊೡ ࣻ হ׮. • ١١…

Slide 28

Slide 28 text

KOTLINCONF’23 SONGDO Compose Multiplatform Link: https://www.jetbrains.com/lp/compose-multiplatform/

Slide 29

Slide 29 text

KOTLINCONF’23 SONGDO Available in Compose Multiplatform 1.4 Link: https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.4.0

Slide 30

Slide 30 text

KOTLINCONF’23 SONGDO Making Compose Multiplatform KOTLINCONF’23 SONGDO Link: https://github.com/androidx/androidx/tree/androidx-main/compose#readme

Slide 31

Slide 31 text

KOTLINCONF’23 SONGDO Making Compose Multiplatform KOTLINCONF’23 SONGDO Googleীࢲ ੉޷ Compose੄ ؀ࠗ࠙ਸ common Kotlinਵ۽ ੘ࢿ೮׮! Link: https://github.com/androidx/androidx/tree/androidx-main/compose/ui/ui/src

Slide 32

Slide 32 text

KOTLINCONF’23 SONGDO Making Compose Multiplatform Link: https://github.com/JetBrains/compose-multiplatform-core

Slide 33

Slide 33 text

KOTLINCONF’23 SONGDO Making Compose Multiplatform Link: https://github.com/JetBrains/compose-multiplatform-core/tree/jb-main/compose/ui/ui/src

Slide 34

Slide 34 text

KOTLINCONF’23 SONGDO Compose Multiplatform Architecture Compose Android Skia Skiko Desktop iOS Web Link: https://github.com/JetBrains/skiko

Slide 35

Slide 35 text

KOTLINCONF’23 SONGDO iOS port Compose Skiko Skia iOS specific Kotlin/Native UIViewController UIKit SwiftUI

Slide 36

Slide 36 text

KOTLINCONF’23 SONGDO Get started Compose Multipla tf orm জਸ प೯೧ࠄ׮. • Github Template Repository۽ 
 Compose Multipla tf orm ೐۽ં౟ܳ 
 ࢤࢿೠ׮. Link: https://github.com/JetBrains/compose-multiplatform-template

Slide 37

Slide 37 text

KOTLINCONF’23 SONGDO Get started জਸ प೯೧ࠄ׮. Link: https://kotlinlang.org/docs/multiplatform-mobile-create-first-app.html#run-your-application

Slide 38

Slide 38 text

KOTLINCONF’23 SONGDO Get started ೐۽ં౟ ҳઑܳ ࢓ಝࠁ੗. Link: https://github.com/JetBrains/compose-multiplatform-template#examine-the-project-structure Kotlin Gradle desktop app Kotlin Gradle Swift Xcode Kotlin Gradle iOS app Android app Shared module Root project

Slide 39

Slide 39 text

KOTLINCONF’23 SONGDO Compose Multiplatform on Android

Slide 40

Slide 40 text

KOTLINCONF’23 SONGDO Compose Multiplatform on Desktop

Slide 41

Slide 41 text

KOTLINCONF’23 SONGDO Compose Multiplatform on iOS

Slide 42

Slide 42 text

KOTLINCONF’23 SONGDO Wrapping platform widgets <- AndroidView Link: https://github.com/JetBrains/compose-multiplatform-core/blob/jb-main/.../interop/UIKitView.uikit.kt

Slide 43

Slide 43 text

KOTLINCONF’23 SONGDO Restrictions • iOS ೐۽ં౟ীࢲ ૒੽ ଵઑೞח Kotlin Multipla tf orm Moduleীח 
 ݽٚ Composable ೣࣻо private ژח internal۽݅ ੿੄غযঠ ೠ׮. 
 h tt ps://github.com/JetBrains/compose-multipla tf orm/issues/2346#issuecomment-1381339854 • ܻࣗझܳ ҙܻೞח ࠗ࠙੉ গݒೞ׮. (ex. ׮Ҵয, ੉޷૑ ١) 
 h tt ps://github.com/JetBrains/compose-multipla tf orm/issues/1255 • iOS/Webীࢲח ই૒ ੉޷૑ ܻࣗझܳ ۪؊݂ೡ ࣻ হ׮. (JPG, PNG, SVG ١) 
 h tt ps://github.com/JetBrains/compose-multipla tf orm/issues/2498 • JetBrainsীࢲ ׮ܲ ೒ۖಬө૑ ഛ؀ೞৈ ҳഅೞ׮ ࠁפ, 
 android ৻ীח ز੘ೞ૑ ঋח APIо ҵؘҵؘ ੓׮. (੉गח ܻನ౟!) • ೒ۖಬ݃׮ UXо ׳ۄࢲ ࢎਊࢿਸ Ҋ۰ೞݶ, ױੌ ௏٘݅ਵ۽ ҳഅೞח Ѫী ೠ҅о ੓׮. • ١١…

Slide 44

Slide 44 text

KOTLINCONF’23 SONGDO জࠁ׮ח, ۄ੉࠳۞ܻܳ ٜ݅য ߓನ೧ࠁ੗! 🚀

Slide 45

Slide 45 text

KOTLINCONF’23 SONGDO Link: https://github.com/fornewid/material-motion-compose Android জীࢲ ࢎਊೡ ݾ੸ਵ۽ ݅ٚ 
 Jetpack Compose Libraryܳ Compose Multiplatformਵ۽ ഛ੢೮׮.

Slide 46

Slide 46 text

KOTLINCONF’23 SONGDO Android Library ߓನೞӝ Link: https://developer.android.com/studio/projects/android-library

Slide 47

Slide 47 text

KOTLINCONF’23 SONGDO Lifecycle 🧑💻 Develop 📝 👾 Requirements 🚀 Release 👥 Users

Slide 48

Slide 48 text

KOTLINCONF’23 SONGDO ௏٘ܳ ੘ࢿೠ׮. Develop KOTLINCONF’23 SONGDO

Slide 49

Slide 49 text

KOTLINCONF’23 SONGDO Release • Maven ੷੢ࣗܳ ࢤࢿೠ׮. • ৘ܳ ٜয, Maven Central Repositoryۄݶ 1. ੉गܳ ࢤࢿೞҊ, 2. Project URL ӂೠਸ ੋૐೠ׮. • زੌೠ Group IDח 
 Repositoryܳ ೠߣ݅ ࢤࢿೞݶ ػ׮. Link: https://issues.sonatype.org/browse/OSSRH-80194

Slide 50

Slide 50 text

KOTLINCONF’23 SONGDO Release • ই౭ಂ౟ܳ ѱदೠ׮. 1. GPG ఃܳ ࢤࢿೠ׮. 
 h tt ps://central.sonatype.org/publish/requirements/gpg/ 2. ೐۽ં౟ী ই౭ಂ౟ ੿ࠁܳ ࢸ੿ೠ׮. 
 h tt ps://github.com/vanniktech/gradle-maven-publish-plugin 3. Gradle Task۽ ѱदೠ׮. 
 h tt ps://central.sonatype.org/publish/publish-guide/ $ gpg --full-gen-key Link: https://developer.android.com/studio/projects/android-library // gradle.properties GROUP=io.github.fornewid POM_ARTIFACT_ID=material-motion-compose-core POM_PACKAGING=aar VERSION_NAME=1.0.0 ... // {library_module_name}/build.gradle plugins { id 'com.vanniktech.maven.publish' } ./gradlew publish --no-daemon --no-parallel signing.keyId={GPG_KEY} signing.password={password} signing.secretKeyRingFile=release/secring.gpg mavenCentralUsername=fornewid mavenCentralPassword=*********** 🔑

Slide 51

Slide 51 text

KOTLINCONF’23 SONGDO Release • ই౭ಂ౟ܳ ҕѐೠ׮. 
 h tt ps://s01.oss.sonatype.org/#stagingRepositories • Close, Release ࣽਵ۽ ૓೯ೠ׮. • Gradle Taskب ઁҕػ׮. Link: https://central.sonatype.org/publish/release/ ./gradlew closeAndReleaseRepository

Slide 52

Slide 52 text

KOTLINCONF’23 SONGDO Develop & Release Tools ߈ࠂ೧ࢲ ѐߊ/ߓನೞӝ औѱ, ৈ۞о૑ بҳ੄ ب਑ਸ ߉ਸ ࣻ ੓׮. • Public API: Kotlin Explicit API mode • Compatibility: Metalava • Code Format: spotless • Documentation: KDoc + Dokka, .md + mkdocs + Github Pages • Publish: vanniktech/gradle-maven-publish-plugin • CI: Github Actions • ١١…

Slide 53

Slide 53 text

KOTLINCONF’23 SONGDO • APIী ੽Ӕ੗৬ return typeਸ ݺदೞب۾, ҃Ҋ ഑਷ য়ܨܳ ߊࢤदఅ׮. Public API Kotlin Explicit API mode 💾 {library_module}/build.gradle android { kotlinOptions { freeCompilerArgs += '-Xexplicit-api=warning' } } Link: https://github.com/Kotlin/KEEP/blob/master/proposals/explicit-api-mode.md

Slide 54

Slide 54 text

KOTLINCONF’23 SONGDO Compatibility Metalava • API Metadataܳ ୶୹ೞৈ ഐജࢿ੉ ߸҃غח૑ܳ х૑ೠ׮. Link: https://github.com/tylerbwong/metalava-gradle 💾 .github/workflows/build.yaml ./gradlew metalavaCheckCompatibility package com.webtoonscorp.android.readmore { public final class ReadMoreTextView extends androidx.appcompat.widget.AppCompatTextView { ctor public ReadMoreTextView(android.content.Context context, optional android.util.AttributeSet? attrs, optional int defStyleAttr); ctor public ReadMoreTextView(android.content.Context context, optional android.util.AttributeSet? attrs); ctor public ReadMoreTextView(android.content.Context context); method public boolean isExpanded(); method public void setExpanded(boolean expanded); method public void setOnStateChangeListener(com.webtoonscorp.android.readmore.ReadMoreTextView.OnStateChangeListener listener); method public void toggle(); field public static final int OVERFLOW_CLIP = 1; // 0x1 field public static final int OVERFLOW_ELLIPSIS = 2; // 0x2 } public static fun interface ReadMoreTextView.OnStateChangeListener { method public void onStateChanged(boolean expanded); } } Generate: 💾 {library_module}/api/current.api ./gradlew metalavaGenerateSignature If changes APIs intentionally:

Slide 55

Slide 55 text

KOTLINCONF’23 SONGDO • ࣗझ௏٘ ഋध੉ ৢ߄ܲ૑ Ѩࢎೠ׮. • ࣗझ௏٘ী LICENSE ઱ࢳਸ ୶оೞח Ѫب ੗زചೡ ࣻ ੓׮. Code Format spotless Link: https://github.com/diffplug/spotless // build.gradle plugins { id 'com.diffplug.spotless' version '5.12.4' } subprojects { apply plugin: 'com.diffplug.spotless' spotless { kotlin { target '**/*.kt' targetExclude("$buildDir/**/*.kt") targetExclude('bin/**/*.kt') ktlint(“0.42.1") licenseHeaderFile rootProject.file('spotless/copyright.kt') } } } // spotless/copyright.kt /* * Copyright $YEAR SOUP * * ... */

Slide 56

Slide 56 text

KOTLINCONF’23 SONGDO • APIী ੸যك ௏٘ ઱ࢳਸ, API ޙࢲ۽ ߸ജೡ ࣻ ੓׮. Documentation KDoc + Dokka Link: https://kotlinlang.org/docs/kotlin-doc.html, https://github.com/Kotlin/dokka 💾 .github/workflows/publish-docs.yml 💾 generate_docs.sh # Generate API docs ./gradlew dokkaHtmlMultiModule jobs: update_draft_release: ... steps: ... - name: Generate docs run: ./generate_docs.sh ...

Slide 57

Slide 57 text

KOTLINCONF’23 SONGDO Documentation .md + mkdocs + Github Pages • .md ౵ੌী ۄ੉࠳۞ܻী ؀ೠ ࢸݺਸ ੿ܻ೧فҊ, ਢಕ੉૑۽ ߸ജೠ׮. Link: https://www.mkdocs.org/ jobs: update_draft_release: ... steps: ... - name: Install dependencies run: | python3 -m pip install --upgrade pip python3 -m pip install mkdocs python3 -m pip install mkdocs-material - name: Build site run: mkdocs build ... 💾 .github/workflows/publish-docs.yml 💾 mkdocs.yml ... remote_branch: gh-pages # Navigation nav: - "Overview": index.md - "View": - 'Guide': readmore-view.md - 'API': api/readmore-view/ # Configuration theme: name: material language: "en"

Slide 58

Slide 58 text

KOTLINCONF’23 SONGDO Documentation .md + mkdocs + Github Pages • Github Actionਸ ੉ਊೞৈ, ࢤࢿػ ਢಕ੉૑ܳ Github Page۽ ഐझ౴ೡ ࣻ ੓׮. Link: https://github.com/peaceiris/actions-gh-pages on: push: tags: - v* jobs: update_draft_release: ... steps: ... - name: Deploy uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./site 💾 .github/workflows/publish-docs.yml

Slide 59

Slide 59 text

KOTLINCONF’23 SONGDO Github Actions • খࢲ ࣗѐೠ بҳٜਸ ۽ஸݠनীࢲ ࣻزਵ۽ Ѩࢎೞ૑ ঋҊ, ੗زചೡ ࣻ ੓׮. Link: https://docs.github.com/ko/actions CI (Continuous Integration)

Slide 60

Slide 60 text

KOTLINCONF’23 SONGDO Link: https://getstream.io/blog/publishing-libraries-to-mavencentral-2021/, https://proandroiddev.com/3a008b50b808 Futhermore…

Slide 61

Slide 61 text

KOTLINCONF’23 SONGDO Kotlin Multiplatform Library۽ ੹ജೞӝ Link: https://kotlinlang.org/docs/multiplatform-library.html

Slide 62

Slide 62 text

KOTLINCONF’23 SONGDO KOTLINCONF’23 SONGDO ௏٘ܳ ߸҃ೠ׮. Develop

Slide 63

Slide 63 text

KOTLINCONF’23 SONGDO Develop build.gradle 1. Kotlin pluginਸ ߸҃ೠ׮. 2. Targetਸ ࢶ঱ೠ׮. 3. Source Setਸ ੿੄ೞҊ, 
 dependenciesܳ ৤ӟ׮. • ߈٘द Groovyীࢲ KTS۽ 
 ߸҃೧ঠ ೞח Ѫ਷ ইפ׮. Link: https://kotlinlang.org/docs/multiplatform-dsl-reference.html, https://developer.android.com/build/migrate-to-kotlin-dsl

Slide 64

Slide 64 text

KOTLINCONF’23 SONGDO • ҕాചೞ۰ח ௏٘ח commonMainਵ۽ ੉زೠ׮. • ӝઓ੄ Android ௏٘ח ইې୊ۢ ৤ӟ׮. • ӝࠄ੸ਵ۽ androidInstrumentedTestীࢲח commonTestী ੽Ӕೡ ࣻ হ׮. Develop Source Setsী ݏ୾ࢲ srcী ೒ۖಬ ਊ ಫ؊ܳ ୶оೠ׮. Link: https://kotlinlang.org/docs/whatsnew18.html#kotlinsourceset-naming-schema Kotlin 1.8 ੉੹ Kotlin 1.8 ੉റ Android

Slide 65

Slide 65 text

KOTLINCONF’23 SONGDO Develop ౠ੿ ೒ۖಬী ઙࣘػ APIܳ ઁѢೞҊ, Link: https://github.com/fornewid/material-motion-compose/pull/190/files#diff

Slide 66

Slide 66 text

KOTLINCONF’23 SONGDO Develop ҕా ௏٘۽ ੸੺൤ ߸҃೧ঠ ೠ׮. ইפݶ expect / actualਸ ҳഅ೧ঠ ೠ׮. Link: https://github.com/fornewid/material-motion-compose/pull/190/files#diff

Slide 67

Slide 67 text

KOTLINCONF’23 SONGDO Develop ੌࠗ Jetpack ۄ੉࠳۞ܻب ݣ౭೒ۖಬਸ ૑ਗೠ׮. Link: https://android-developers.googleblog.com/2023/04/whats-new-in-jetpack-multiplatform.html

Slide 68

Slide 68 text

KOTLINCONF’23 SONGDO Develop & Release Tools ׮೯൤ ݽف Kotlin Multipla tf ormਸ ૑ਗೞח بҳ. (ױ, ߡ੹਷ ഛੋ೧ࠅ Ѫ!) • Public API: Kotlin Explicit API mode ✅ • Compatibility: Metalava ✅ • Code Format: spotless ✅ • Documentation: KDoc + Dokka ✅, .md + mkdocs + Github Pages ✅ • Publish: vanniktech/gradle-maven-publish-plugin ✅ • CI: Github Actions ⚠ • ١١…

Slide 69

Slide 69 text

KOTLINCONF’23 SONGDO Github Actions • ૑ਗೞח Targetী ݏѱ, runnerܳ ઑ੿೧઻ঠ ೮׮. Link: https://docs.github.com/ko/actions/using-workflows/workflow-syntax-for-github-actions#choosing-github-hosted-runners CI (Continuous Integration)

Slide 70

Slide 70 text

KOTLINCONF’23 SONGDO Release • ߓನೞח ߑߨ਷ Ѣ੄ زੌೞ૑݅, Ѿҗޛ੉ ׳ۄ૓׮. 
 (vanniktech/gradle-maven-publish-plugin ࢎਊೞח Ѫਸ ୶ୌ!) Link: https://search.maven.org/search?q=material-motion-compose-core Android ۄ੉࠳۞ܻܳ ѱदೞ۰ݶ 
 variant nameਸ ݺद೧ঠ ೤פ׮. Link: https://kotlinlang.org/docs/multiplatform-publish-lib.html

Slide 71

Slide 71 text

KOTLINCONF’23 SONGDO Users ۄ੉࠳۞ܻ ੄ઓࢿ ୶оೞӝ • ݽٚ Source Setਸ ૑ਗೞח ۄ੉࠳۞ܻח ҕా Source Setী ୶оೡ ࣻ ੓׮. 
 Kotlin Multipla tf orm plugin੉ п Source Setী ݏח ੗زਵ۽ ୶о೧ળ׮. Link: https://kotlinlang.org/docs/multiplatform-add-dependencies.html#library-shared-for-all-source-sets

Slide 72

Slide 72 text

KOTLINCONF’23 SONGDO Users ۄ੉࠳۞ܻ ੄ઓࢿ ୶оೞӝ • ౠ੿ Source Setীࢲ݅ ݣ౭೒ۖಬ ۄ੉࠳۞ܻܳ ࢎਊೡ ࣻب ੓׮. • ݣ౭೒ۖಬ ۄ੉࠳۞ܻо ইפۄݶ ഒزغ૑ ঋب۾, 
 ೒ۖಬ ݺடਸ ࢎਊೞ૑ ঋח Ѫਸ ӂ੢ೠ׮. 
 Link: https://kotlinlang.org/docs/multiplatform-add-dependencies.html#library-used-in-specific-source-sets

Slide 73

Slide 73 text

KOTLINCONF’23 SONGDO Demo

Slide 74

Slide 74 text

хࢎ೤פ׮! Slide Link: https://speakerdeck.com/fornewid/publishing-kotlin-multiplatform-library