Splitties ist eine Sammlung kleiner Kotlin -Multiplattformbibliotheken (mit Android als erstes Ziel).
Diese Bibliotheken sollen die Menge an Code reduzieren, die Sie schreiben müssen, die Code -Lesen und Schreiben von Zeit freigeben, damit Sie sich mehr auf das konzentrieren können, was Sie für Ihre Benutzer erstellen möchten (auch wenn Sie der einzige sind) oder mehr Zeit haben, um fun zu haben.
Dieses Projekt wird als "Splitties" bezeichnet, da es in kleinen Modulen als unabhängige Bibliotheken aufgeteilt ist, sodass Sie nur diejenigen hinzufügen können, die Sie zu Ihrem Projekt/Modul benötigen, um die Größe der endgültigen Binärzahlen zu verringern, die Benutzer Geräte herunterladen und im begrenzten Speicher halten müssen (übrigens, alles ist begrenzt).
Einige Android -Targeting -Module verfügen über einen Inhalt, ähnlich wie Anko. Sehen Sie hier einen kurzen Vergleich von Splitties mit Anko.
Jedes Modul wurde so konzipiert, dass er einen kleinen Fußabdruck hat und so effizient wie möglich ist.
Bei Splitties geht es darum, Ihren Code zu vereinfachen. Hier sind einige Beispiele:
Kotlin:
startActivity( Intent ( this , DemoActivity :: class .java))Kotlin mit Splitties -Aktivitäten:
start< DemoActivity >()Kotlin:
Snackbar .make(root, R .string.refresh_successful, Snackbar . LENGTH_SHORT )
.show()Kotlin mit Splitties Snackbar:
root.snack( R .string.refresh_successful) Renncoroutinen: ( raceOf(…) kommt aus dem Coroutines -Modul)
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".
})Kotlin:
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()Kotlin mit Splitties Snackbar:
root.longSnack(str( R .string.deleted_x_items, deletedCount)) {
action(android. R .string.cancel, textColor = color( R .color.fancy_color)) {
deleteOperation.requestRollback()
}
}Context bei appCtx immer zur Verfügung.context.getSystemService(NAME_OF_SERVICE) as NameOfManager . snack(…) und longSnack(…) .toast(yourText) anrufen und API 25 BadTokenException ausweichen.showAndAwait -Erweiterungsfunktionen für AppCompat alertDialog.View s.ImageView -Tönung, ActionBar und Tooltip.contentPadding -Immobilie.dp -Erweiterungen für View und Context . Besonders praktisch bei der Verwendung von Ansichten DSL.foreground vor API 23.ViewHolder und ItemViewHolder für eine einfache grundlegende Verwendung von RecyclerView .RecyclerView ). companion object verwandeln in leistungsstarke typeafe Absichtspezifikationen und erstellen Sie PendingIntent S den sauberen und einfachen Weg.BundleSpec , um Bundle mit Eigenschaftssyntax für Intent Extras und mehr zu verwenden. Lifecycle .mainHandler Eigenschaften, um mehreren Handler für den Haupt- Looper zuzuweisen.mainThreadLazy , das den Zugriff auf den Grundstück überprüft SharedPreferences / DataStore und macOS/iOS/watchos NSUserDefaults .hasFlag , withFlag und minusFlag -Erweiterungen auf Long , Int , Short , Byte und ihren nicht signierten Gegenstücken.forEach für List ohne Iterator . unexpectedValue(…) , unsupportedAction(…) und ähnliche Funktionen, die Nothing zurückgeben.ViewModel S zu erhalten, LiveData zu verwenden und Lifecycle zu beobachten. Stellen Sie sicher, dass Sie mavenCentral() in den in Ihrem Projekt (root) build.gradle -Datei definierten Repositorys (Standard für neue Android Studio -Projekte) haben.
Um den Inhalt von Splitties für Ihre Android -Projekte einfacher zu nutzen, gibt es Grupping -Artefakte, die die meisten Spaltungen enthalten.
Hinzufügen mit Aktualisierungen: Splitties.pack.androidBase oder Splitties.pack.androidBaseWithViewsDsl .
Diese 2 Packs enthalten AppCompat nicht und eignen sich für Wearos -Apps.
Enthält die folgenden Module:
Abhängigkeit von Gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-base:3.0.0 " )Es gibt auch eine Version mit Ansichten DSL. Darüber hinaus enthält es die folgenden Module:
Abhängigkeit von Gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-base-with-views-dsl:3.0.0 " ) Hinzufügen mit Refreshversionen: Splitties.pack.appCompat oder Splitties.pack.appCompatWithViewsDsl .
Diese 2 Packs enthalten das Android -Basispaket und die folgenden Module:
Abhängigkeit von Gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-appcompat:3.0.0 " )Es gibt auch eine Version mit Ansichten DSL. Darüber hinaus enthält es die Ansichten DSL -Version des Android -Basispakets und das folgende Modul:
Abhängigkeit von Gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-appcompat-with-views-dsl:3.0.0 " ) Hinzufügen mit Aktualisierungen: Splitties.pack.androidMdc oder Splitties.pack.androidMdcWithViewsDsl .
Diese 2 Packs enthalten das Android AppCompat -Paket und die folgenden Module:
Abhängigkeit von Gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-material-components:3.0.0 " )Es gibt auch eine Version mit Ansichten DSL. Darüber hinaus enthält es die Ansichten DSL -Version des Android AppCompat Packs und die folgenden Module:
Abhängigkeit von Gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-material-components-with-views-dsl:3.0.0 " )Da Sie möglicherweise mehrere Artefakte verwenden, um sich nicht zu wiederholen, empfehlen wir Ihnen, die Version an einem zentralen Ort zu setzen. Es ist also wenig Aufwand, auf neuere Versionen zu aktualisieren.
Der beste Weg, dies zu tun, besteht darin, Aktualisierungen zu verwenden. Es verfügt über integrierte Abhängigkeitsnotationen für Splitties sowie viele andere beliebte und qualitative Bibliotheken wie Kotlinx, Androidx, Bibliotheken von Square/Cashapp und Bibliotheken von Google.
Am wichtigsten ist, dass Sie die verfügbaren Aktualisierungen für alle Ihre Abhängigkeiten refreshVersions alle Ihre Abhängigkeiten direkt in die Versionen in den versions.properties in den Versionen ergeben.
Zu Ihrer Information, die aktuelle neueste Veröffentlichung von Splitties ist die Version 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
Nehmen wir an, Sie müssen eine neue Funktion oder ein Fix ausprobieren, das es noch nicht zu einer Veröffentlichung geschafft hat:
Sie können es in der Snapshot-Version greifen, indem Sie das entsprechende Repository wie unten gezeigt hinzufügen und die Bibliotheksversion in den neuesten Snapshot 3.0.0-SNAPSHOT ändern:
allProjects {
repositories {
mavenCentral()
google() // Add sonatype snapshots repo below
maven(url = " https://oss.sonatype.org/content/repositories/snapshots " )
}
}Veröffentlichungen werden auf GitHub bekannt gegeben. Sie können sich abonnieren, indem Sie auf "Watch" klicken und dann "nur veröffentlicht".
Wenn Sie jedoch Refreshversions verwenden, erfahren Sie auch über Updates, wenn Sie die refreshVersions -Aufgabe direkt in der Datei versions.properties ausführen.
Wenn Sie möchten, dass diese Bibliothek über eine neue Funktion oder eine Verbesserung in einem neuen oder in einem vorhandenen Modul verfügt, öffnen Sie bitte ein Problem oder stimmen/kommentieren Sie eine ähnliche zuerst, damit sie besprochen werden kann.
Dokumentationsbeiträge sind ebenfalls willkommen. Für Tippfehler oder andere kleine Verbesserungen können Sie eine PR (Pull -Anfrage) direkt einreichen. Für wichtigere DOC -Beiträge eröffnen Sie bitte zuerst ein Problem, sodass er diskutiert werden kann.
Wenn Sie einen Fehler finden , öffnen Sie bitte ein Problem mit allen wichtigen Details. Wenn Sie eine einfache Lösung kennen, die keine API -Brechung ist und keine Nebenwirkungen hat, die berücksichtigt werden müssen, können Sie auch direkt eine PR einreichen.
Sie können sich auch der Diskussion über Kotlins Lack im Kanal #Splitties anschließen (Sie können hier eine Einladung erhalten).
Ein "Split" ist ein Modul der Splitties -Bibliothek, das Sie als Abhängigkeit hinzufügen können. Es enthält nur die erforderlichen transitiven Abhängigkeiten. Auf diese Weise können Sie nur das hinzufügen, was Sie in Ihrem App- oder Bibliotheksmodul benötigen, sodass die endgültige APK/IPA/App so klein wie möglich ist und nicht von Ihrer App verwendet werden.
Angenommen, Sie erstellen eine Wear OS -App mit der Ansicht DSL. Wear OS -Apps benötigen nicht AppCompat. Einschließlich wäre es eine Verschwendung von Bandbreite und Lagerung. Das Ansichten DSL Core Modul basiert auf dem Android SDK, jedoch nicht auf AppCompat, sodass Sie Ihre Handgelenks -App nicht mit AppCompat mithilfe von Ansichten DSL aufblähen. Wenn Sie jedoch eine Telefon-, Tablet- oder Computer -Android -App erstellen, gibt es eine Aufenthaltsdauer von DSL AppCompat mit einigen Erweiterungen, die Sie verwenden können.
Besonderer Dank geht an Jovche Mitrejchevski für die Entscheidung für dieses Projekt.
Vielen Dank an Jetbrains und die Mitwirkenden für Anko, die eine großartige Inspirationsquelle war, insbesondere für die Ansichten DSL, und natürlich danke für die hervorragende Kotlin -Programmiersprache, die dieses Projekt ermöglicht.
Vielen Dank an Doug Stevenson für seine Artikel "Kotlin & Android: A Messing Tacks Experiment". Es ist fair zu sagen, dass Ansichten DSL in diesem Experiment seine Wurzel haben.
Diese Bibliothek wird unter Apache -Lizenzversion 2.0 veröffentlicht, die Sie hier sehen können.