Splitties est une collection de petites bibliothèques multiplateforme Kotlin (avec Android comme premier cible).
Ces bibliothèques sont destinées à réduire la quantité de code que vous devez écrire, à libérer le temps de lecture et d'écriture de code, vous pouvez donc vous concentrer davantage sur ce que vous souhaitez créer pour vos utilisateurs (même si vous êtes le seul), ou avoir plus de temps pour vous fun .
Ce projet est nommé "Splitties" car il est divisé dans de petits modules, distribué en bibliothèques indépendantes, vous ne pouvez donc ajouter que celles dont vous avez besoin à votre projet / module, aidant à réduire la taille du binaire final dont les appareils d'utilisateurs devront télécharger et conserver dans le stockage limité (BTW, tout est limité).
Certains modules de ciblage Android ont un contenu similaire à ce qu'offre Anko. Voir une courte comparaison des divisions avec Anko ici.
Chaque module a été conçu pour avoir une petite empreinte et être aussi efficace que possible.
Les fractionnements consistent à simplifier votre code. Voici quelques exemples:
Kotlin:
startActivity( Intent ( this , DemoActivity :: class .java))Kotlin avec des activités de fractionnement:
start< DemoActivity >()Kotlin:
Snackbar .make(root, R .string.refresh_successful, Snackbar . LENGTH_SHORT )
.show()Kotlin avec Splaties Snackbar:
root.snack( R .string.refresh_successful) Coroutines de course: ( raceOf(…) vient du module 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 avec Splaties Snackbar:
root.longSnack(str( R .string.deleted_x_items, deletedCount)) {
action(android. R .string.cancel, textColor = color( R .color.fancy_color)) {
deleteOperation.requestRollback()
}
}Context d'application à portée de main avec appCtx .context.getSystemService(NAME_OF_SERVICE) as NameOfManager . snack(…) et longSnack(…) .toast(yourText) et Dodge API 25 BadTokenException .showAndAwait pour AppCompat AlertDialog.View s.ImageView Tenting, ActionBar et Tool info.contentPadding .dp pour View et Context . Particulièrement pratique lorsque vous utilisez des vues DSL.foreground avant l'API 23.ViewHolder et ItemViewHolder pour une utilisation de base facile de RecyclerView .RecyclerView ). companion object en spécifications d'intention de type puissantes et créez PendingIntent le moyen propre et facile.BundleSpec pour utiliser Bundle avec syntaxe de propriété pour les extras Intent et plus encore. Lifecycle AndroidX.mainHandler de niveau supérieur pour cesser d'allocation de Handler en plusieurs multiples pour Looper principal.mainThreadLazy qui vérifie l'accès à la propriété sur SharedPreferences / DataStore et MacOS / IOS / Watchos NSUserDefaults .hasFlag , withFlag et minusFlag Extensions sur Long , Int , Short , Byte et leurs homologues non signés.forEach pour List S sans allocation Iterator . unexpectedValue(…) , unsupportedAction(…) et des fonctions similaires qui ne renvoient Nothing .ViewModel S, utiliser LiveData et observer Lifecycle . Assurez-vous d'avoir mavenCentral() dans les référentiels définis dans le fichier build.gradle de votre projet (Root) (par défaut pour les nouveaux projets Android Studio).
Pour faciliter le profit du contenu des divisions pour vos projets Android, il existe des artefacts de regroupement qui incluent la plupart des fentes.
Ajouter avec Refreshversions: Splitties.pack.androidBase ou Splitties.pack.androidBaseWithViewsDsl .
Ces 2 packs n'incluent pas AppCompat et conviennent aux applications WearOS.
Comprend les modules suivants:
Dépendance gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-base:3.0.0 " )Il y a aussi une version avec Views DSL. Il comprend en outre les modules suivants:
Dépendance gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-base-with-views-dsl:3.0.0 " ) Ajouter avec Refreshversions: Splitties.pack.appCompat ou Splitties.pack.appCompatWithViewsDsl .
Ces 2 packs incluent le pack de base Android et les modules suivants:
Dépendance gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-appcompat:3.0.0 " )Il y a aussi une version avec Views DSL. Il comprend également la version DSL Views du pack de base Android et le module suivant:
Dépendance gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-appcompat-with-views-dsl:3.0.0 " ) Ajouter avec Refreshversions: Splitties.pack.androidMdc ou Splitties.pack.androidMdcWithViewsDsl .
Ces 2 packs incluent le pack Android AppCompat et les modules suivants:
Dépendance gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-material-components:3.0.0 " )Il y a aussi une version avec Views DSL. Il comprend en outre la version DSL Views du pack Android AppCompat et les modules suivants:
Dépendance gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-material-components-with-views-dsl:3.0.0 " )Étant donné que vous pouvez utiliser plusieurs artefacts, pour ne pas vous répéter, nous vous recommandons de mettre la version dans un endroit central, il est donc peu d'effort de passer à des versions plus récentes.
La meilleure façon de le faire est d'utiliser des rafraîchissements, il a des notations de dépendance intégrées pour Splitties , ainsi que de nombreuses autres bibliothèques populaires et qualitatives, comme Kotlinx, Androidx, des bibliothèques de Square / CashApp et des bibliothèques de Google.
Plus important encore, avec lui, l'exécution de la tâche refreshVersions vous montrera les mises à jour disponibles en quelques secondes, pour toutes vos dépendances, directement dans les versions.properties , d'une manière qui rend la mise à niveau sans effort, même avec juste le clavier.
FYI, la dernière version actuelle des fentes est la 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
Disons que vous devez essayer une nouvelle fonctionnalité ou un correctif qui n'a pas encore atteint une version:
Vous pouvez le saisir dans la version instantanée en ajoutant le référentiel correspondant comme indiqué ci-dessous, et en modifiant la version de la bibliothèque en dernier instantané, 3.0.0-SNAPSHOT :
allProjects {
repositories {
mavenCentral()
google() // Add sonatype snapshots repo below
maven(url = " https://oss.sonatype.org/content/repositories/snapshots " )
}
}Les sorties sont annoncées sur GitHub, vous pouvez vous abonner en cliquant sur "Watch", puis "Releases Only".
Cependant, si vous utilisez des rafraîchissements, vous vous renseignerez également sur les mises à jour lorsque vous exécutez la tâche de refreshVersions dans le fichier versions.properties .
Si vous voulez que cette bibliothèque ait une nouvelle fonctionnalité ou une amélioration dans un nouveau ou dans un module existant, veuillez ouvrir un problème ou voter / commettre un similaire en premier, il peut donc être discuté.
Les contributions de documentation sont également les bienvenues. Pour les fautes de frappe ou d'autres petites améliorations, n'hésitez pas à soumettre directement un PR (demande de traction). Pour des contributions plus importantes, veuillez d'abord ouvrir un problème, afin qu'il puisse être discuté.
Si vous trouvez un bogue , veuillez ouvrir un problème avec tous les détails importants. Si vous connaissez une solution simple qui n'est pas une rupture de l'API et qui n'a pas d'effets secondaires qui doivent être pris en considération, vous pouvez également soumettre directement un PR.
Vous pouvez également participer à la discussion sur le Slack de Kotlin dans la chaîne #Splitties (vous pouvez obtenir une invitation ici).
Un "division" est un module de la bibliothèque Splitties que vous pouvez ajouter en tant que dépendance. Il comprend uniquement les dépendances transitives requises. Cela vous permet d'ajouter uniquement ce dont vous avez besoin dans votre application ou votre module de bibliothèque, de sorte que le dernier APK / IPA / App est aussi petit que possible et n'inclut pas les choses non utilisées par votre application.
Supposons que vous créez une application d'usage OS à l'aide du DSL Views. Les applications OS Wear n'ont pas besoin d'appartenance. Y compris ce serait un gaspillage de bande passante et de stockage. Le module Views DSL Core repose sur le SDK Android mais pas sur AppCompat, vous ne bloquez donc pas votre application de poignet avec AppCompat en utilisant des vues DSL. Cependant, si vous créez une application Android de téléphone, de tablette ou d'ordinateur, il y a une vue DSL AppCompat avec quelques extensions à utiliser.
Un merci spécial à jovche mitrejchevski pour avoir aidé à prendre des décisions pour ce projet.
Merci à JetBrains et aux contributeurs d'Anko, qui a été une grande source d'inspiration, en particulier pour les vues DSL, et bien sûr merci pour l'excellent langage de programmation Kotlin qui rend ce projet possible.
Merci à Doug Stevenson pour ses articles "Kotlin & Android: A Brass Tacks Experiment". Il est juste de dire que les vues DSL ont sa racine dans cette expérience.
Cette bibliothèque est publiée sous la version 2.0 de Licence Apache que vous pouvez voir ici.