Splitties es una colección de pequeñas bibliotecas multiplataforma de Kotlin (con Android como primer objetivo).
Estas bibliotecas están destinadas a reducir la cantidad de código que tiene que escribir, liberar tiempo de lectura y escritura, para que pueda concentrarse más en lo que desea construir para sus usuarios (incluso si usted es el único) o tener más tiempo para fun .
Este proyecto se llama "divisiones" porque se divide en módulos pequeños, distribuido como bibliotecas independientes, por lo que puede agregar solo las que necesita a su proyecto/módulo, ayudando a reducir el tamaño del binario final que los dispositivos de usuarios necesitarán descargar y mantener el almacenamiento limitado (por cierto, todo es limitado).
Algunos módulos de orientación de Android tienen un contenido similar al que ofrece Anko. Vea una breve comparación de divisiones con Anko aquí.
Cada módulo ha sido diseñado para tener una pequeña huella y ser lo más eficiente posible.
Las divisiones se trata de simplificar su código. Aquí hay algunos ejemplos:
Kotlin:
startActivity( Intent ( this , DemoActivity :: class .java))Kotlin con actividades de división:
start< DemoActivity >()Kotlin:
Snackbar .make(root, R .string.refresh_successful, Snackbar . LENGTH_SHORT )
.show()Kotlin con bucle de buceo:
root.snack( R .string.refresh_successful) Racing Coroutines: ( raceOf(…) proviene del módulo de Coroutines)
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 con bucle de buceo:
root.longSnack(str( R .string.deleted_x_items, deletedCount)) {
action(android. R .string.cancel, textColor = color( R .color.fancy_color)) {
deleteOperation.requestRollback()
}
}Context de aplicación con appCtx .context.getSystemService(NAME_OF_SERVICE) as NameOfManager . snack(…) y longSnack(…) .toast(yourText) y Dodge API 25 BadTokenException .showAndAwait de extensión Funciones para AppCompat AlertDialog.View s.ImageView , ActionBar y ToolTiP.contentPadding .dp de Android para View y Context . Particularmente útil cuando se usa Vistas DSL.foreground antes de la API 23.ViewHolder y ItemViewHolder para un uso básico fácil de RecyclerView .RecyclerView ). companion object en especificaciones de intención tipos poderosas y cree PendingIntent de la manera limpia y fácil.BundleSpec para usar Bundle con sintaxis de propiedad para extras Intent y más. Lifecycle de Androidx.mainHandler de nivel superior para dejar de asignar múltiples Handler para Looper principal.mainThreadLazy que verifica el acceso a la propiedad en SharedPreferences / DataStore de Android y MacOS/iOS/WatchOS NSUserDefaults .hasFlag , withFlag extensiones de Flag y minusFlag en Long , Int , Short , Byte y sus homólogos sin firmar.forEach para List sin asignación Iterator . unexpectedValue(…) , unsupportedAction(…) y funciones similares que no devuelven Nothing .ViewModel s, usar LiveData y observar Lifecycle s. Asegúrese de tener mavenCentral() en los repositorios definidos en el archivo build.gradle de su proyecto (root) (predeterminado para nuevos proyectos de Android Studio).
Para facilitar el aprovechamiento del contenido de las divisiones para sus proyectos de Android, hay artefactos de agrupación que incluyen la mayoría de las divisiones.
Agregar con refrescantes: Splitties.pack.androidBase o Splitties.pack.androidBaseWithViewsDsl .
Estos 2 paquetes no incluyen AppCompat y son adecuados para aplicaciones de WearOS.
Incluye los siguientes módulos:
Dependencia de graduación:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-base:3.0.0 " )También hay una versión con vistas DSL. Además incluye los siguientes módulos:
Dependencia de graduación:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-base-with-views-dsl:3.0.0 " ) Agregando con Refreshversions: Splitties.pack.appCompat o Splitties.pack.appCompatWithViewsDsl .
Estos 2 paquetes incluyen el paquete base de Android y los siguientes módulos:
Dependencia de graduación:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-appcompat:3.0.0 " )También hay una versión con vistas DSL. También incluye la versión DSL Vistas del paquete base de Android y el siguiente módulo:
Dependencia de graduación:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-appcompat-with-views-dsl:3.0.0 " ) Agregar con refrescos: Splitties.pack.androidMdc o Splitties.pack.androidMdcWithViewsDsl .
Estos 2 paquetes incluyen el paquete Android AppCompat y los siguientes módulos:
Dependencia de graduación:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-material-components:3.0.0 " )También hay una versión con vistas DSL. Además, incluye la versión DSL Vistas del paquete Android AppCompat y los siguientes módulos:
Dependencia de graduación:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-material-components-with-views-dsl:3.0.0 " )Dado que puede usar múltiples artefactos, para no repetirse, le recomendamos que ponga la versión en un lugar central, por lo que es poco esfuerzo actualizar a versiones más nuevas.
La mejor manera de hacerlo es usar refrescantes, tiene anotaciones de dependencia incorporadas para Splitties y también muchas otras bibliotecas populares y cualitativas, como Kotlinx, Androidx, bibliotecas de Square/CashApp y bibliotecas de Google.
Lo más importante, con ella, ejecutar la tarea refreshVersions le mostrará las actualizaciones disponibles en cuestión de segundos, para todas sus dependencias, directamente en las versions.properties .
FYI, el último lanzamiento actual de las divisiones es la versión 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
Supongamos que necesita probar una nueva función o una solución que aún no llegó a un lanzamiento:
Puede obtenerlo en la versión de instantánea agregando el repositorio correspondiente como se muestra a continuación y cambiando la versión de la biblioteca a la última instantánea, 3.0.0-SNAPSHOT :
allProjects {
repositories {
mavenCentral()
google() // Add sonatype snapshots repo below
maven(url = " https://oss.sonatype.org/content/repositories/snapshots " )
}
}Las versiones se anuncian en GitHub, puede suscribirse haciendo clic en "Reloj", luego "Libraciones solo".
Sin embargo, si usa refrescantes, también aprenderá sobre las actualizaciones cuando ejecute la tarea de refreshVersions directamente en el archivo versions.properties .
Si desea que esta biblioteca tenga una nueva característica o una mejora en un módulo nuevo o en un módulo existente, por favor, abra un problema o vote/comente una similar primero, por lo que se puede discutir.
Las contribuciones de documentación también son bienvenidas. Para errores tipográficos u otras pequeñas mejoras, no dude en enviar directamente un PR (solicitud de extracción). Para obtener contribuciones de DOC más significativas, primero abra un problema, por lo que se puede discutir.
Si encuentra un error , abra un problema con todos los detalles importantes. Si conoce una solución simple que no es una ruptura de API y que no tiene efectos secundarios que deben considerarse, también puede enviar directamente un PR.
También puede unirse a la discusión sobre la holgura de Kotlin en el canal #Splities (puede recibir una invitación aquí).
Una "división" es un módulo de la biblioteca de división que puede agregar como dependencia. Solo incluye las dependencias transitivas requeridas. Esto le permite solo agregar lo que necesita en su aplicación o módulo de biblioteca, por lo que la aplicación APK/IPA/IPA final es lo más pequeña posible y no incluye cosas que su aplicación no usan.
Digamos que está construyendo una aplicación Wear OS utilizando las vistas DSL. Usar aplicaciones del sistema operativo no necesitan AppCompat. Incluir sería un desperdicio de ancho de banda y almacenamiento. El módulo de Core DSL Views se basa en el SDK de Android pero no en AppCompat, por lo que no bloquee su aplicación de muñeca con AppCompat utilizando Views DSL. Sin embargo, si está construyendo una aplicación de Android de teléfono, tableta o computadora, hay una aplicación DSL DSL dividida con algunas extensiones para que lo use.
Un agradecimiento especial a Jovche Mitrejchevski por ayudar a tomar decisiones para este proyecto.
Gracias a JetBrains y los colaboradores de ANKO, que fue una gran fuente de inspiración, especialmente para Views DSL, y por supuesto gracias por el excelente lenguaje de programación de Kotlin que hace posible este proyecto.
Gracias a Doug Stevenson por sus artículos "Kotlin & Android: un experimento de tachuelas de latón". Es justo decir que Views DSL tiene su raíz en este experimento.
Esta biblioteca se publica en Apache License versión 2.0 que puede ver aquí.