Splitties
SplittiesisacollectioofsmallKotlimultiplatformlibraries(withAdroidasfirsttarget).
Theselibrariesareitededtoreducetheamoutofcodeyouhavetowrite,freeigcodereadigadwritigtime,soyoucafocusmoreowhatyouwattobuildforyourusers(eveifyou'retheolyoe),orhavemoretimetohavefu.
Thisprojectisamed"Splitties"becauseitissplitismallmodules,distributedasidepedetlibraries,soyoucaaddolytheoesyoueedtoyourproject/module,helpigreducethesizeofthefialbiarythatusersdeviceswilleedtodowloadadkeepithelimitedstorage(BTW,everythigislimited).
SomeAdroidtargetigmoduleshaveacotetsimilartowhatAkooffers.SeeashortcomparisoofSplittieswithAkohere.
Eachmodulehasbeedesigedtohaveasmallfootpritadbeasefficietaspossible.
AfewexamplesSplittiesisallaboutsimplifyigyourcode.Hereareafewexamples:
Kotli:
startActivity(Itet(this,DemoActivity::class.java))KotliwithSplittiesActivities:
start<DemoActivity>()Kotli:
Sackbar.make(root,R.strig.refresh_successful,Sackbar.LENGTH_SHORT).show()KotliwithSplittiesSackbar:
root.sack(R.strig.refresh_successful)Racigcorouties:(raceOf(…)comesfromtheCoroutiesmodule)
suspedfuawaitUserChoice(ui:SomeUi,choices:List<Stuff>):Stuff?=raceOf({ui.awaitSomeUserActio(choices)},{ui.awaitDismissal()ull},{ui.showSomethigIRealtimeUtilCacelled()//RetursNothig,willru,butever"wi".})Kotli:
Sackbar.make(root,getStrig(R.strig.deleted_x_items,deletedCout),Sackbar.LENGTH_LONG).setActio(adroid.R.strig.cacel){deleteOperatio.requestRollback()}.setActioTextColor(CotextCompat.getColor(this,R.color.facy_color)).show()KotliwithSplittiesSackbar:
root.logSack(str(R.strig.deleted_x_items,deletedCout)){actio(adroid.R.strig.cacel,textColor=color(R.color.facy_color)){deleteOperatio.requestRollback()}}OverviewSystemiteractio(Adroidoly)UseriputaduseriterfacerelatedsplitsSmallmessages(Adroidoly)Dialogs(Adroidoly)SystemUI(Adroidoly)ExtesiosforViews(Adroidoly)CreatigViewbasedUIswiththepowerofKotli(Adroidoly)VariousUIutilities(Adroidoly)MaterialDesighelpers(Adroidoly)Iteradcrossappcommuicatio:Activities,Fragmets,Itets,adBudlesCocurrecy(Multiplatform)Datapersistece(Multiplatform)Utilities(Multiplatform)Debuggig(Adroidoly)Legacy(Adroidoly)Systemiteractio(Adroidoly):AppCotext:AlwayshaveyourapplicatioCotextathadwithappCtx.SystemServices:Nomorecotext.getSystemService(NAME_OF_SERVICE)asNameOfMaager.Useriputaduseriterfacerelatedsplits:Smallmessages(Adroidoly)Sackbar:Grabasackwithoutceremoywithsack(…)adlogSack(…).Toast:Showatoastbyjustcalligtoast(yourText),addodgeAPI25BadTokeExceptio.Dialogs(Adroidoly)AlertDialog:Createsimplealertdialogswithsimplecode.AlertDialogAppCompat:AppCompatversioofAlertDialog.AlertDialogAppCompatCorouties:showAdAwaitextesiofuctiosforAppCompatAlertDialog.AlertDialogMaterial:MaterialCompoetsextesioofAlertDialogAppCompat.SystemUI(Adroidoly)Dagerouspermissios:Requestrutimepermissioswithoutpollutigyourcodebase.ExtesiosforViews(Adroidoly)Views:ExtesiosfuctioadpropertiesoViews.ViewsAppCompat:AppCompatextesioofViews.IcludeshelpersforImageViewtitig,ActioBaradtooltip.ViewsCardView:CardViewextesioofViews.ProvidesacotetPaddigproperty.ViewsMaterial:MaterialCompoetsextesioofViews.ViewsCoroutiesMaterial:MaterialCompoets+Kotlicorouties.ViewsRecyclerView:RecyclerViewextesioofViews.ViewsCorouties:AdroidViews+Kotlicorouties.CreatigViewbasedUIswiththepowerofKotli(Adroidoly)ViewsDSL:CreateUIswithreadableKotlicode(IDEpreviewsupported).ViewsDSLAppCompat:AppCompatextesioofViewsDSL.ViewsDSLCostraitLayout:CostraitLayoutextesioofViewsDSL.ViewsDSLCoordiatorLayout:CoordiatorLayoutextesioofViewsDSL.ViewsDSLMaterial:MaterialCompoetsextesioofViewsDSL.ViewsDSLRecyclerView:RecyclerViewextesioofViewsDSL.VariousUIutilities(Adroidoly)Resources:Extesiostogetresourceslikestrigs,colorsordrawableseasily,withsupportforthemedattributes.Dimesios:AdroiddpextesiosforViewadCotext.ParticularlyhadywheusigViewsDSL.SelectableviewsSelectableViews:SelectableViewswithforegroudpropertybeforeAPI23.SelectableViewsAppCompat:SelectableViewsforAppCompatTextView.SelectableViewsCostraitLayout:SelectableViewsforCostraitLayout.TypesafeRecyclerView:TypesafeViewHolderadItemViewHolderforeasybasicusageofRecyclerView.MaterialDesighelpers(Adroidoly)MaterialColors:2014MaterialDesigcolorpalettesascolorresources.MaterialLists:ListitemViewsimplemetigMaterialDesigguidelies(perfectforusageiaRecyclerView).Iteradcrossappcommuicatio:Activities,Fragmets,Itets,adBudlesActivities:Startactivitieswithmiimalboilerplate.Itets:Trasformcompaioobjectsitopowerfultypesafeitetspecs,adcreatePedigItetsthecleaadeasyway.Fragmets:Startactivitiesfromfragmetsaddotrasactioswithmiimalboilerplate.FragmetArgs:Fragmetargumetswithoutceremoythakstodelegatedproperties.Budle:BudleSpectouseBudlewithpropertysytaxforItetextrasadmore.Cocurrecy(Multiplatform)Corouties:Geeralpurposeextesiostokotlix.corouties.LifecycleCorouties(Adroidoly):CoroutiesitegratiowithAdroidXLifecycle.MaiThread:Propertiesadprecoditiocheckersrelatedtothemaithread.MaiHadler(Adroidoly):Top-levelmaiHadlerpropertytostopallocatigmultipleHadlersformaiLooper.CheckedLazy(Adroidoly):maiThreadLazythatcheckspropertyaccessoDatapersistece(Multiplatform)Prefereces:PropertysytaxforAdroid'sSharedPrefereces/DataStoreadmacOS/iOS/watchOSNSUserDefaults.ArchRoom:RoomhelperstoistatiateyourDBadperformtrasactiosiKotli.Utilities(Multiplatform)BitFlags:hasFlag,withFlagadmiusFlagextesiosoLog,It,Short,Byte,adtheirusigedcouterparts.Collectios:forEachforListswithoutIteratorallocatio.Debuggig(Adroidoly)Stethoiit:HaveStethoforyourdebugbuilds,withoutwritigaycode!Legacy(Adroidoly)Exceptios:uexpectedValue(…),usupportedActio(…)adsimilarfuctiosthatreturNothig.ArchLifecycle:ExtesiostogetViewModels,useLiveDataadobserveLifecycles.DowloadGradleistructiosMakesureyouhavemaveCetral()itherepositoriesdefiediyourproject's(root)build.gradlefile(defaultforewAdroidStudioprojects).
TomakeiteasiertotakeadvatageofthecotetsofSplittiesforyourAdroidprojects,therearegroupigartifactsthaticludemostsplits.
AdroidbaseAddigwithrefreshVersios:Splitties.pack.adroidBaseorSplitties.pack.adroidBaseWithViewsDsl.
These2packsdo'ticludeAppCompatadaresuitableforWearOSapps.
Icludesthefollowigmodules:
activitiesappctxbitflagsbudlecollectioscoroutiesdimesiosfragmetsfragmetargsitetslifecycle-coroutiesmaihadlermaithreadmaterial-colorspermissiospreferecesresourcessystemservicestoastviewsviews-coroutiesviews-recyclerviewviews-selectableviews-selectable-costraitlayoutGradledepedecy:
implemetatio("com.louiscad.splitties:splitties-fu-pack-adroid-base:3.0.0")There'salsoaversiowithViewsDSL.Itadditioallyicludesthefollowigmodules:
views-dslviews-dsl-costraitlayoutviews-dsl-recyclerviewGradledepedecy:
implemetatio("com.louiscad.splitties:splitties-fu-pack-adroid-base-with-views-dsl:3.0.0")AdroidAppCompatAddigwithrefreshVersios:Splitties.pack.appCompatorSplitties.pack.appCompatWithViewsDsl.
These2packsicludetheAdroidbasepack,adthefollowigmodules:
alertdialog-appcompatalertdialog-appcompat-coroutiesviews-appcompatviews-selectable-appcompatGradledepedecy:
implemetatio("com.louiscad.splitties:splitties-fu-pack-adroid-appcompat:3.0.0")There'salsoaversiowithViewsDSL.ItadditioallyicludestheViewsDSLversiooftheAdroidbasepackadthefollowigmodule:
views-dsl-appcompatGradledepedecy:
implemetatio("com.louiscad.splitties:splitties-fu-pack-adroid-appcompat-with-views-dsl:3.0.0")AdroidMaterialCompoetsAddigwithrefreshVersios:Splitties.pack.adroidMdcorSplitties.pack.adroidMdcWithViewsDsl.
These2packsicludetheAdroidAppCompatpack,adthefollowigmodules:
alertdialog-materialmaterial-listssackbarviews-cardviewviews-corouties-materialviews-materialGradledepedecy:
implemetatio("com.louiscad.splitties:splitties-fu-pack-adroid-material-compoets:3.0.0")There'salsoaversiowithViewsDSL.ItadditioallyicludestheViewsDSLversiooftheAdroidAppCompatpackadthefollowigmodules:
views-dsl-coordiatorlayoutviews-dsl-materialGradledepedecy:
implemetatio("com.louiscad.splitties:splitties-fu-pack-adroid-material-compoets-with-views-dsl:3.0.0")Alltheartifacts(47)Siceyoumightusemultipleartifacts,tootrepeatyourself,werecommedyoutoputtheversioiacetralplace,soit'slittleefforttoupgradetoewerversios.
ThebestwaytodothisistouserefreshVersios,ithasbuilt-idepedecyotatiosforSplitties,adalsomayotherpopularadqualitativelibraries,likekotlix,AdroidX,librariesfromSquare/CashAppadlibrariesfromGoogle.
Mostimportatly,withit,ruigtherefreshVersiostaskwillshowyoutheavailableupdatesiamatterofsecods,forallofyourdepedecies,rightitotheversios.properties,iawaythatmakesupgradigeffortless,evewithjustthekeyboard.
FYI,thecurretlatestreleaseofSplittiesistheversio3.0.0
Herearethemavecoordiatesofalltheartifactsofthislibrary,forreferece.(Clicktoexpad)com.louiscad.splitties:splitties-activitiescom.louiscad.splitties:splitties-alertdialogcom.louiscad.splitties:splitties-alertdialog-appcompatcom.louiscad.splitties:splitties-alertdialog-appcompat-coroutiescom.louiscad.splitties:splitties-appctxcom.louiscad.splitties:splitties-arch-lifecyclecom.louiscad.splitties:splitties-arch-roomcom.louiscad.splitties:splitties-bitflagscom.louiscad.splitties:splitties-budlecom.louiscad.splitties:splitties-checkedlazycom.louiscad.splitties:splitties-collectioscom.louiscad.splitties:splitties-coroutiescom.louiscad.splitties:splitties-dimesioscom.louiscad.splitties:splitties-exceptioscom.louiscad.splitties:splitties-fragmetscom.louiscad.splitties:splitties-fragmetargscom.louiscad.splitties:splitties-itetscom.louiscad.splitties:splitties-lifecycle-coroutiescom.louiscad.splitties:splitties-maihadlercom.louiscad.splitties:splitties-maithreadcom.louiscad.splitties:splitties-material-colorscom.louiscad.splitties:splitties-material-listscom.louiscad.splitties:splitties-permissioscom.louiscad.splitties:splitties-preferecescom.louiscad.splitties:splitties-resourcescom.louiscad.splitties:splitties-sackbarcom.louiscad.splitties:splitties-stetho-iitcom.louiscad.splitties:splitties-systemservicescom.louiscad.splitties:splitties-toastcom.louiscad.splitties:splitties-typesaferecyclerviewcom.louiscad.splitties:splitties-viewscom.louiscad.splitties:splitties-views-appcompatcom.louiscad.splitties:splitties-views-cardviewcom.louiscad.splitties:splitties-views-coroutiescom.louiscad.splitties:splitties-views-corouties-materialcom.louiscad.splitties:splitties-views-dslcom.louiscad.splitties:splitties-views-dsl-appcompatcom.louiscad.splitties:splitties-views-dsl-costraitlayoutcom.louiscad.splitties:splitties-views-dsl-coordiatorlayoutcom.louiscad.splitties:splitties-views-dsl-ide-previewcom.louiscad.splitties:splitties-views-dsl-materialcom.louiscad.splitties:splitties-views-dsl-recyclerviewcom.louiscad.splitties:splitties-views-materialcom.louiscad.splitties:splitties-views-recyclerviewcom.louiscad.splitties:splitties-views-selectablecom.louiscad.splitties:splitties-views-selectable-appcompatcom.louiscad.splitties:splitties-views-selectable-costraitlayoutSapshotsLet'ssayyoueedtotryaewfeatureorafixthatdidotmakeittoareleaseyet:
Youcagrabitithesapshotversiobyaddigthecorrespodigrepositoryasshowbelow,adchagigthelibraryversiotothelatestsapshot,3.0.0-SNAPSHOT:
allProjects{repositories{maveCetral()google()//Addsoatypesapshotsrepobelowmave(url="https://oss.soatype.org/cotet/repositories/sapshots")}}NewversiosotificatiosReleasesareaoucedoGitHub,youcasubscribebyclickigo"Watch",the"Releasesoly".
However,ifyouuserefreshVersios,you'llalsolearaboutupdateswheyourutherefreshVersiostaskrightitheversios.propertiesfile.
ImprovethislibraryIfyouwatthislibrarytohaveaewfeatureoraimprovemetiaeworiaexistigmodule,please,opeaissueorvote/commetasimilaroefirst,soitcabediscussed.
Documetatiocotributiosarealsowelcome.Fortyposorothersmallimprovemets,feelfreetosubmitaPR(pullrequest)directly.Formoresigificatdoccotributios,pleaseopeaissuefirst,soitcabediscussed.
Ifyoufidabug,pleaseopeaissuewithalltheimportatdetails.IfyoukowasimplefixthatisotAPIbreakigadthatdoesothavesideeffectsthateedtobecosidered,youmayalsodirectlysubmitaPR.
YoucaalsojoithediscussiooKotli'sSlackithe#splittieschael(youcagetaivitatiohere).
WhatisasplitA"split"isamoduleoftheSplittieslibrarythatyoucaaddasadepedecy.Itolyicludestherequiredtrasitivedepedecies.Thisallowsyoutoolyaddwhatyoueediyourapporlibrarymodule,sothefialapk/ipa/appisassmallaspossibleaddoes'ticludestuffotusedbyyourapp.
Let'ssayyou'rebuildigaWearOSappusigtheViewsDSL.WearOSappsdo'teedAppCompat.Icludigitwouldbeawasteofbadwidthadstorage.TheViewsDSLcoremodulereliesotheAdroidSDKbutotoAppCompat,soyoudo'tbloatyourwristappwithAppCompatbyusigViewsDSL.However,ifyouarebuildigaphoe,tabletorcomputerAdroidapp,there'saViewsDSLAppCompatsplitwithafewextesiosforyoutouse.
CreditsSpecialthakstoJovcheMitrejchevskiforhelpigitakigdecisiosforthisproject.
ThakstoJetBraisadthecotributorsforAko,whichwasagreatsourceofispiratio,especiallyforViewsDSL,adofcoursethaksfortheexcelletKotliprogrammiglaguagethatmakesthisprojectpossible.
ThakstoDougStevesoforhisarticles"Kotli&Adroid:ABrassTacksExperimet".ItisfairtosaythatViewsDSLhasitsrootithisexperimet.
LiceseThislibraryispublisheduderApacheLiceseversio2.0whichyoucaseehere.







评论