Splitties는 작은 Kotlin Multiplatform 라이브러리 모음입니다 (Android는 첫 번째 대상으로).
이 라이브러리는 작성해야 할 코드의 양을 줄이고 코드 읽기 및 쓰기 시간을 확보하기위한 것이므로 사용자를 위해 구축하려는 내용 (유일한 사람이더라도)에 더 집중하거나 fun 즐길 시간이 더 있습니다.
이 프로젝트는 독립적 인 라이브러리로 배포 된 작은 모듈로 분할되어 프로젝트/모듈에 필요한 것만 추가하여 사용자 장치가 제한된 스토리지에서 다운로드하고 유지 해야하는 최종 바이너리의 크기를 줄일 수 있으므로 "Splitties"라는 이름을 표시합니다.
일부 안드로이드 타겟팅 모듈에는 Anko가 제공하는 것과 유사한 컨텐츠가 있습니다. Anko와의 Splitties를 여기에서 짧은 비교하십시오.
각 모듈은 작은 발자국을 갖도록 설계되었으며 가능한 한 효율적 입니다.
Splitties는 코드를 단순화하는 것입니다. 몇 가지 예는 다음과 같습니다.
코 틀린 :
startActivity( Intent ( this , DemoActivity :: class .java))분할 활동이있는 Kotlin :
start< DemoActivity >()코 틀린 :
Snackbar .make(root, R .string.refresh_successful, Snackbar . LENGTH_SHORT )
.show()Splitties Snackbar와 Kotlin :
root.snack( R .string.refresh_successful) 레이싱 코 루틴 : ( raceOf(…) 는 코 루틴 모듈에서 나옵니다)
suspend fun awaitUserChoice ( ui : SomeUi , choices : List < Stuff >): Stuff ? = raceOf({
ui.awaitSomeUserAction(choices)
}, {
ui.awaitDismissal()
null
}, {
ui.showSomethingInRealtimeUntilCancelled() // Returns Nothing, will run, but never "win".
})코 틀린 :
Snackbar .make(root, getString( R .string.deleted_x_items, deletedCount), Snackbar . LENGTH_LONG )
.setAction(android. R .string.cancel) {
deleteOperation.requestRollback()
}
.setActionTextColor( ContextCompat .getColor( this , R .color.fancy_color))
.show()Splitties Snackbar와 Kotlin :
root.longSnack(str( R .string.deleted_x_items, deletedCount)) {
action(android. R .string.cancel, textColor = color( R .color.fancy_color)) {
deleteOperation.requestRollback()
}
}appCtx 와 항상 애플리케이션 Context 사용하십시오.context.getSystemService(NAME_OF_SERVICE) as NameOfManager 되지 않습니다. snack(…) 과 longSnack(…) 으로 의식없이 간식을 잡습니다.toast(yourText) 부르고 닷지 API 25 BadTokenException 부르면 토스트를 보여줍니다.showAndAwait 확장 기능.View 의 확장 기능 및 속성.ImageView Tinting, ActionBar 및 Tooltip을위한 도우미가 포함되어 있습니다.contentPadding 속성을 제공합니다.View 및 Context 위한 Android dp 확장. Views DSL을 사용할 때 특히 편리합니다.foreground 특성을 가진 선택 가능한 뷰 23.RecyclerView 의 기본 기본 사용을 쉽게위한 TypeAfe ViewHolder 및 ItemViewHolder .RecyclerView 에서 사용하기에 적합). companion object 를 강력한 TypeSafe 의도 사양으로 변환하고 청정하고 쉬운 방법을 PendingIntent 만듭니다.BundleSpec 엑스트라 등의 Intent 구문이있는 Bundle 사용합니다. Lifecycle 과의 코 루틴 통합.Looper 에 대한 다중 Handler 할당을 중지하는 최상위 mainHandler 속성.mainThreadLazy 속성 액세스를 확인하는 Mainthreadlazy SharedPreferences / DataStore 및 MacOS/iOS/WatchOS NSUserDefaults 의 속성 구문.Long , Int , Short , Byte 및 서명되지 않은 상대방의 hasFlag , withFlag 및 minusFlag Extension.Iterator 할당이없는 List S의 forEach . unexpectedValue(…) , unsupportedAction(…) 및 Nothing 반환하지 않는 유사한 기능.ViewModel 모델을 얻고 LiveData 사용하고 Lifecycle 주기를 관찰하십시오. 프로젝트 (루트) build.gradle 파일 (새로운 Android Studio 프로젝트의 기본값)에 정의 된 저장소에 mavenCentral() 있는지 확인하십시오.
안드로이드 프로젝트의 분할 내용을 쉽게 활용할 수 있도록 대부분의 분할을 포함하는 그룹화 아티팩트가 있습니다.
새로 고침으로 추가 : Splitties.pack.androidBase 또는 Splitties.pack.androidBaseWithViewsDsl .
이 2 팩에는 AppCompat이 포함되어 있지 않으며 WearOS 앱에 적합합니다.
다음 모듈을 포함합니다.
Gradle 종속성 :
implementation( " com.louiscad.splitties:splitties-fun-pack-android-base:3.0.0 " )Views DSL이있는 버전도 있습니다. 또한 다음 모듈이 포함되어 있습니다.
Gradle 종속성 :
implementation( " com.louiscad.splitties:splitties-fun-pack-android-base-with-views-dsl:3.0.0 " ) 새로 고침으로 추가 : Splitties.pack.appCompat 또는 Splitties.pack.appCompatWithViewsDsl
이 2 팩에는 Android 기본 팩과 다음 모듈이 포함됩니다.
Gradle 종속성 :
implementation( " com.louiscad.splitties:splitties-fun-pack-android-appcompat:3.0.0 " )Views DSL이있는 버전도 있습니다. 또한 Android 기본 팩의 Views DSL 버전과 다음 모듈이 포함되어 있습니다.
Gradle 종속성 :
implementation( " com.louiscad.splitties:splitties-fun-pack-android-appcompat-with-views-dsl:3.0.0 " ) 새로 고침으로 추가 : Splitties.pack.androidMdc 또는 Splitties.pack.androidMdcWithViewsDsl
이 2 팩에는 Android AppCompat 팩과 다음 모듈이 포함됩니다.
Gradle 종속성 :
implementation( " com.louiscad.splitties:splitties-fun-pack-android-material-components:3.0.0 " )Views DSL이있는 버전도 있습니다. 또한 Android AppCompat Pack의 Views DSL 버전과 다음 모듈이 추가로 포함되어 있습니다.
Gradle 종속성 :
implementation( " com.louiscad.splitties:splitties-fun-pack-android-material-components-with-views-dsl:3.0.0 " )여러 아티팩트를 사용하여 자신을 반복하지 않기 때문에 버전을 중앙 장소에 넣는 것이 좋습니다. 따라서 최신 버전으로 업그레이드하는 데 거의 노력하지 않습니다.
이를 수행하는 가장 좋은 방법은 새로 고침을 사용하는 것입니다. Splitties 위한 의존성 표기법 및 Kotlinx, Androidx, Square/Cashapp의 라이브러리 및 Google의 라이브러리와 같은 기타 인기 및 질적 라이브러리가 있습니다.
가장 중요한 것은 refreshVersions 작업을 실행하면 키보드만으로도 쉽게 업그레이드하는 방식으로 모든 종속성에 대해 몇 초 만에 사용 가능한 업데이트를 몇 versions.properties 안에 표시합니다.
FYI, 현재 Splitties의 최신 릴리스는 버전 3.0.0 입니다.
com.louiscad.splitties:splitties-activities
com.louiscad.splitties:splitties-alertdialog
com.louiscad.splitties:splitties-alertdialog-appcompat
com.louiscad.splitties:splitties-alertdialog-appcompat-coroutines
com.louiscad.splitties:splitties-appctx
com.louiscad.splitties:splitties-arch-lifecycle
com.louiscad.splitties:splitties-arch-room
com.louiscad.splitties:splitties-bitflags
com.louiscad.splitties:splitties-bundle
com.louiscad.splitties:splitties-checkedlazy
com.louiscad.splitties:splitties-collections
com.louiscad.splitties:splitties-coroutines
com.louiscad.splitties:splitties-dimensions
com.louiscad.splitties:splitties-exceptions
com.louiscad.splitties:splitties-fragments
com.louiscad.splitties:splitties-fragmentargs
com.louiscad.splitties:splitties-intents
com.louiscad.splitties:splitties-lifecycle-coroutines
com.louiscad.splitties:splitties-mainhandler
com.louiscad.splitties:splitties-mainthread
com.louiscad.splitties:splitties-material-colors
com.louiscad.splitties:splitties-material-lists
com.louiscad.splitties:splitties-permissions
com.louiscad.splitties:splitties-preferences
com.louiscad.splitties:splitties-resources
com.louiscad.splitties:splitties-snackbar
com.louiscad.splitties:splitties-stetho-init
com.louiscad.splitties:splitties-systemservices
com.louiscad.splitties:splitties-toast
com.louiscad.splitties:splitties-typesaferecyclerview
com.louiscad.splitties:splitties-views
com.louiscad.splitties:splitties-views-appcompat
com.louiscad.splitties:splitties-views-cardview
com.louiscad.splitties:splitties-views-coroutines
com.louiscad.splitties:splitties-views-coroutines-material
com.louiscad.splitties:splitties-views-dsl
com.louiscad.splitties:splitties-views-dsl-appcompat
com.louiscad.splitties:splitties-views-dsl-constraintlayout
com.louiscad.splitties:splitties-views-dsl-coordinatorlayout
com.louiscad.splitties:splitties-views-dsl-ide-preview
com.louiscad.splitties:splitties-views-dsl-material
com.louiscad.splitties:splitties-views-dsl-recyclerview
com.louiscad.splitties:splitties-views-material
com.louiscad.splitties:splitties-views-recyclerview
com.louiscad.splitties:splitties-views-selectable
com.louiscad.splitties:splitties-views-selectable-appcompat
com.louiscad.splitties:splitties-views-selectable-constraintlayout
아직 릴리스에 포함되지 않은 새로운 기능이나 수정 사항을 사용해야한다고 가정 해 봅시다.
아래와 같이 해당 저장소를 추가하고 라이브러리 버전을 최신 스냅 샷 3.0.0-SNAPSHOT 으로 변경하여 스냅 샷 버전으로 가져올 수 있습니다.
allProjects {
repositories {
mavenCentral()
google() // Add sonatype snapshots repo below
maven(url = " https://oss.sonatype.org/content/repositories/snapshots " )
}
}릴리스는 GitHub에서 발표되며 "Watch"를 클릭 한 다음 "릴리스 만"을 클릭하여 구독 할 수 있습니다.
그러나 새로 고침을 사용하는 경우 versions.properties 파일에서 refreshVersions 작업을 바로 실행할 때 업데이트에 대해 배우게됩니다.
이 라이브러리가 새로운 기능이나 기존 모듈에서 새로운 기능이나 개선을 원한다면 먼저 문제를 열거나 투표/의견을 우선시하여 논의 할 수 있습니다.
문서화 기여도 환영합니다. 오타 또는 기타 작은 개선 사항의 경우 PR (풀 요청)을 직접 제출하십시오. 보다 중요한 DOC 기부금을 원하시면 먼저 문제를 열어서 논의 할 수 있습니다.
버그를 찾으면 모든 중요한 세부 사항이있는 문제를 열어주십시오. API 파손이 아닌 간단한 수정 사항을 알고 있고 고려해야 할 부작용이없는 경우 PR을 직접 제출할 수도 있습니다.
#Splitties 채널에서 Kotlin의 Slack에 대한 토론에 참여할 수도 있습니다 (여기에서 초대장을받을 수 있음).
"분할"은 종속성으로 추가 할 수있는 Splitties 라이브러리의 모듈입니다. 필요한 전이 의존성 만 포함됩니다. 이를 통해 앱 또는 라이브러리 모듈에 필요한 것을 추가 할 수 있으므로 최종 APK/IPA/앱은 가능한 한 작으며 앱에서 사용하지 않는 물건을 포함하지 않습니다.
Views DSL을 사용하여 Wear OS 앱을 구축한다고 가정 해 봅시다. OS 앱은 AppComPat가 필요하지 않습니다. 그것을 포함하여 대역폭과 보관의 낭비가 될 것입니다. Views DSL Core 모듈은 Android SDK에 의존하지만 AppCompat에는 사용되지 않으므로 Views DSL을 사용하여 AppCompat로 손목 앱을 팽창시키지 않습니다. 그러나 전화, 태블릿 또는 컴퓨터 Android 앱을 구축하는 경우 DSL AppCompat가 사용할 수있는 몇 가지 확장 기능이있는 뷰가 있습니다.
이 프로젝트에 대한 결정을 내리는 데 도움을 준 Jovche Mitrejchevski에게 특별한 감사를드립니다.
JetBrains와 ANKO의 기고자 덕분에 특히 DSL의 뷰에게 영감을주는 훌륭한 원천이었으며 물론이 프로젝트를 가능하게하는 우수한 Kotlin 프로그래밍 언어에 감사드립니다.
그의 기사 "Kotlin & Android : 놋쇠 압정 실험"에 대한 Doug Stevenson에게 감사드립니다. DSL 이이 실험에 근본적이라고 말하는 것은 공평합니다.
이 라이브러리는 여기에서 볼 수있는 Apache 라이센스 버전 2.0에 게시되어 있습니다.