Splitties é uma coleção de pequenas bibliotecas multiplataformas de Kotlin (com Android como primeiro alvo).
Essas bibliotecas têm como objetivo reduzir a quantidade de código que você deve escrever, liberando o tempo de leitura e escrita de código, para que você possa se concentrar mais no que deseja criar para seus usuários (mesmo que você seja o único) ou tenha mais tempo para se fun .
Este projeto é nomeado "Splitties" porque é dividido em pequenos módulos, distribuídos como bibliotecas independentes, para que você possa adicionar apenas os que precisa ao seu projeto/módulo, ajudando a reduzir o tamanho do binário final que os dispositivos de usuários precisarão baixar e manter no armazenamento limitado (BTW, tudo é limitado).
Alguns módulos de segmentação do Android têm um conteúdo semelhante ao que o Anko oferece. Veja uma breve comparação de Splitties com Anko aqui.
Cada módulo foi projetado para ter uma pegada pequena e ser o mais eficiente possível.
Splitties tem tudo a ver com simplificar seu código. Aqui estão alguns exemplos:
Kotlin:
startActivity( Intent ( this , DemoActivity :: class .java))Kotlin com atividades de Splitties:
start< DemoActivity >()Kotlin:
Snackbar .make(root, R .string.refresh_successful, Snackbar . LENGTH_SHORT )
.show()Kotlin com Splitties Snackbar:
root.snack( R .string.refresh_successful) Coroutines de corrida: ( raceOf(…) vem do módulo 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 com 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 de aplicativo em questão com appCtx .context.getSystemService(NAME_OF_SERVICE) as NameOfManager . snack(…) e longSnack(…) .toast(yourText) e esquiva a API 25 BadTokenException .showAndAwait para AppCompat alertdialog.View s.ImageView , ActionBar e ToolTip.contentPadding .dp Android para View e Context . Particularmente útil ao usar as visualizações DSL.foreground antes da API 23.ViewHolder e ItemViewHolder para fácil uso básico do RecyclerView .RecyclerView ). companion object em poderosos especificações de intenção de TypeSafe e crie a maneira de PendingIntent e fácil.BundleSpec para usar Bundle com sintaxe de propriedades para extras Intent e muito mais. Lifecycle do Androidx.mainHandler de nível superior para interromper a alocação de múltiplos Handler para o principal Looper .mainThreadLazy que verifica o acesso à propriedade em SharedPreferences / DataStore e MacOS/iOS/WatchOS NSUserDefaults .hasFlag , withFlag e minusFlag Extensões em Long , Int , Short , Byte e suas contrapartes não assinadas.forEach para List sem alocação Iterator . unexpectedValue(…) , unsupportedAction(…) e funções semelhantes que não retornam Nothing .ViewModel s, use LiveData e observe Lifecycle s. Certifique -se de ter mavenCentral() nos repositórios definidos no arquivo build.gradle do seu projeto (ROOT) (padrão para novos projetos de estúdio Android).
Para facilitar a aprovação do conteúdo de divisões para seus projetos Android, existem artefatos de agrupamento que incluem a maioria das divisões.
Adicionando com atualizações: Splitties.pack.androidBase ou Splitties.pack.androidBaseWithViewsDsl .
Esses dois pacotes não incluem AppCompat e são adequados para aplicativos Wearos.
Inclui os seguintes módulos:
Gradle dependência:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-base:3.0.0 " )Há também uma versão com visualizações DSL. Além disso, inclui os seguintes módulos:
Gradle dependência:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-base-with-views-dsl:3.0.0 " ) Adicionando com refrescadores: Splitties.pack.appCompat ou Splitties.pack.appCompatWithViewsDsl .
Esses dois pacotes incluem o pacote base Android e os seguintes módulos:
Gradle dependência:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-appcompat:3.0.0 " )Há também uma versão com visualizações DSL. Além disso, inclui a versão DSL das visualizações do pacote base Android e o seguinte módulo:
Gradle dependência:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-appcompat-with-views-dsl:3.0.0 " ) Adicionando com atualizações: Splitties.pack.androidMdc ou Splitties.pack.androidMdcWithViewsDsl .
Esses dois pacotes incluem o pacote Android AppCompat e os seguintes módulos:
Gradle dependência:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-material-components:3.0.0 " )Há também uma versão com visualizações DSL. Além disso, inclui a versão DSL das visualizações do pacote Android AppCompat e os seguintes módulos:
Gradle dependência:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-material-components-with-views-dsl:3.0.0 " )Como você pode usar vários artefatos, para não se repetir, recomendamos que você coloque a versão em um local central, por isso é pouco esforço para atualizar para versões mais recentes.
A melhor maneira de fazer isso é usar o Refreshversions, possui notações de dependência integradas para Splitties e também muitas outras bibliotecas populares e qualitativas, como Kotlinx, Androidx, bibliotecas da Square/CashApp e bibliotecas do Google.
Mais importante, com ele, a execução da tarefa refreshVersions mostrará as atualizações disponíveis em questão de segundos, para todas as suas dependências, diretamente nas versions.properties .
FYI, o último lançamento atual de Splitties é a versão 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
Digamos que você precise experimentar um novo recurso ou uma correção que ainda não chegou a um lançamento:
Você pode pegá-lo na versão instantânea adicionando o repositório correspondente, como mostrado abaixo e alterando a versão da biblioteca para o instantâneo mais recente, 3.0.0-SNAPSHOT :
allProjects {
repositories {
mavenCentral()
google() // Add sonatype snapshots repo below
maven(url = " https://oss.sonatype.org/content/repositories/snapshots " )
}
}Os lançamentos são anunciados no Github, você pode se inscrever clicando em "Watch" e, em seguida, "apenas lançamentos".
No entanto, se você usar o refreschversions, também aprenderá sobre atualizações ao executar a tarefa de refreshVersions no arquivo versions.properties .
Se você deseja que esta biblioteca tenha um novo recurso ou uma melhoria em um novo ou em um módulo existente, abra um problema ou vote/comente primeiro primeiro, para que possa ser discutido.
As contribuições da documentação também são bem -vindas. Para erros de digitação ou outras pequenas melhorias, sinta -se à vontade para enviar um PR (solicitação de tração) diretamente. Para contribuições mais significativas do DOC, abra um problema primeiro, para que possa ser discutido.
Se você encontrar um bug , abra um problema com todos os detalhes importantes. Se você conhece uma correção simples que não está quebrando a API e que não tem efeitos colaterais que precisam ser considerados, também pode enviar diretamente um PR.
Você também pode participar da discussão sobre o Slack de Kotlin no canal #Splitties (você pode receber um convite aqui).
Uma "divisão" é um módulo da biblioteca Splitties que você pode adicionar como dependência. Inclui apenas as dependências transitivas necessárias. Isso permite que você adicione apenas o que você precisa no seu aplicativo ou módulo de biblioteca, para que o APK/IPA/aplicativo final seja o menor possível e não inclua coisas que não são usadas pelo seu aplicativo.
Digamos que você esteja construindo um aplicativo Wear OS usando o DSL de visualizações. Os aplicativos de sistema operacional Wear não precisam de appCompat. Incluindo seria um desperdício de largura de banda e armazenamento. O módulo Core DSL de visualizações depende do Android SDK, mas não do AppCompat, para que você não incha em seu aplicativo de pulso com AppCompat usando o Views DSL. No entanto, se você estiver criando um aplicativo Android de telefone, tablet ou computador, há uma divisão DSL AppCompat com algumas extensões para você usar.
Agradecimentos especiais a Jovche Mitrejchevski por ajudar a tomar decisões para este projeto.
Agradecemos aos JetBrains e aos colaboradores da ANKO, que foi uma ótima fonte de inspiração, especialmente para visualizações DSL, e, é claro, obrigado pela excelente linguagem de programação de Kotlin que torna esse projeto possível.
Agradecemos a Doug Stevenson por seus artigos "Kotlin & Android: A Brass Tacks Experiment". É justo dizer que as visualizações DSL têm sua raiz neste experimento.
Esta biblioteca é publicada no Apache License versão 2.0, que você pode ver aqui.