Splitties هي مجموعة من مكتبات Kotlin الصغيرة المتعددة (مع Android كهدف أول).
تهدف هذه المكتبات إلى تقليل مقدار الكود الذي يجب أن تكتبه ، وتحرير قراءة التعليمات البرمجية ووقت الكتابة ، بحيث يمكنك التركيز أكثر على ما تريد إنشاءه للمستخدمين (حتى لو كنت الوحيد) ، أو لديك المزيد من الوقت fun .
يسمى هذا المشروع "Splitties" لأنه منقسم في وحدات صغيرة ، موزعة كمكتبات مستقلة ، بحيث يمكنك فقط إضافة تلك التي تحتاجها إلى مشروعك/الوحدة النمطية ، والمساعدة في تقليل حجم الثنائي النهائي الذي ستحتاجه أجهزة المستخدمين إلى التنزيل والاحتفاظ بها في التخزين المحدود (BTW ، كل شيء محدود).
تحتوي بعض وحدات استهداف Android على محتوى مشابه لما يقدمه Anko. شاهد مقارنة قصيرة من splitties مع Anko هنا.
تم تصميم كل وحدة للحصول على بصمة صغيرة وتكون فعالة قدر الإمكان.
Splitties هو كل شيء عن تبسيط الكود الخاص بك. فيما يلي بعض الأمثلة:
كوتلين:
startActivity( Intent ( this , DemoActivity :: class .java))Kotlin مع أنشطة Splitties:
start< DemoActivity >()كوتلين:
Snackbar .make(root, R .string.refresh_successful, Snackbar . LENGTH_SHORT )
.show()Kotlin مع Splitties Snackbar:
root.snack( R .string.refresh_successful) Racing Coroutines: ( raceOf(…) يأتي من وحدة 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".
})كوتلين:
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 مع 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 التطبيق في متناول اليد مع appCtx .context.getSystemService(NAME_OF_SERVICE) as NameOfManager . snack(…) و longSnack(…) .toast(yourText) ، و Dodge API 25 BadTokenException .showAndAwait لـ AppCompat Alertdialog.View .ImageView Tinting و ActionBar و Tooltip.contentPadding .dp View Context . مفيد بشكل خاص عند استخدام طرق العرض DSL.foreground قبل API 23.ViewHolder و ItemViewHolder لسهولة الاستخدام الأساسي لـ RecyclerView .RecyclerView ). companion object إلى مواصفات نية من أنواع الأنواع القوية ، وإنشاء PendingIntent نظيفة وسهلة.BundleSpec لاستخدام Bundle مع بناء جملة الخاصية للإضافات Intent والمزيد. Lifecycle Androidx.mainHandler -Level من المستوى الأعلى للتوقف عن تخصيص Handler متعددة لـ Looper الرئيسية.mainThreadLazy الذي يتحقق من الوصول إلى الممتلكات SharedPreferences / DataStore و MacOS/iOS/Watchos NSUserDefaults .hasFlag ، withFlag و minusFlag على امتدادات Long ، Int ، Short ، Byte ، ونظرائهم غير الموقعة.forEach للحصول على List دون تخصيص Iterator . unexpectedValue(…) ، unsupportedAction(…) ووظائف مماثلة لا تعيد Nothing .ViewModel ، استخدم LiveData ومراقبة Lifecycle . تأكد من أن لديك mavenCentral() في المستودعات المحددة في ملف build.gradle لمشروعك (ROOT) (افتراضي لمشاريع استوديو Android الجديدة).
لتسهيل الاستفادة من محتويات Splitties لمشاريع Android الخاصة بك ، هناك قطع أثرية تجميع تتضمن معظم الانقسامات.
إضافة مع refreshversions: Splitties.pack.androidBase أو Splitties.pack.androidBaseWithViewsDsl .
لا تتضمن هاتان الحزمان AppCompat وهي مناسبة لتطبيقات Wearos.
يتضمن الوحدات التالية:
تبعية Gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-base:3.0.0 " )هناك أيضًا إصدار مع Views DSL. بالإضافة إلى ذلك ، يتضمن الوحدات التالية:
تبعية Gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-base-with-views-dsl:3.0.0 " ) إضافة مع Refreshversions: Splitties.pack.appCompat أو Splitties.pack.appCompatWithViewsDsl .
تشمل هذه الحزمان حزمة قاعدة Android ، والوحدات التالية:
تبعية Gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-appcompat:3.0.0 " )هناك أيضًا إصدار مع Views DSL. ويتضمن بالإضافة إلى ذلك إصدار Views DSL من حزمة قاعدة Android والوحدة التالية:
تبعية Gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-appcompat-with-views-dsl:3.0.0 " ) إضافة مع refreshversions: Splitties.pack.androidMdc أو Splitties.pack.androidMdcWithViewsDsl .
تشمل هذه الحزم 2 حزمة Android AppCompat ، والوحدات النمطية التالية:
تبعية Gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-material-components:3.0.0 " )هناك أيضًا إصدار مع Views DSL. ويتضمن بالإضافة إلى ذلك إصدار Views DSL من حزمة Android AppCompat والوحدات النمطية التالية:
تبعية Gradle:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-material-components-with-views-dsl:3.0.0 " )نظرًا لأنك قد تستخدم العديد من القطع الأثرية ، لعدم تكرار نفسك ، نوصيك بوضع الإصدار في مكان مركزي ، لذلك ليس من الجهد القليل للترقية إلى إصدارات أحدث.
أفضل طريقة للقيام بذلك هي استخدام التحديثات ، ولديها ترميزات تبعية مدمجة لـ Splitties ، وكذلك العديد من المكتبات الشهيرة والنوعية الأخرى ، مثل Kotlinx و AndroidX ومكتبات من Square/CashApp والمكتبات من Google.
الأهم من ذلك ، مع ذلك ، سيظهر لك تشغيل مهمة refreshVersions التحديثات المتاحة في غضون ثوانٍ ، لجميع تبعياتك ، مباشرة في versions.properties .
لمعلوماتك ، الإصدار الأخير الحالي من Splitties هو الإصدار 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
لنفترض أنك بحاجة إلى تجربة ميزة جديدة أو إصلاح لم يصل إلى إصداره حتى الآن:
يمكنك الاستيلاء عليه في إصدار اللقطة عن طريق إضافة المستودع المقابل كما هو موضح أدناه ، وتغيير إصدار المكتبة إلى أحدث لقطة ، 3.0.0-SNAPSHOT :
allProjects {
repositories {
mavenCentral()
google() // Add sonatype snapshots repo below
maven(url = " https://oss.sonatype.org/content/repositories/snapshots " )
}
}يتم الإعلان عن الإصدارات على Github ، يمكنك الاشتراك بالنقر فوق "Watch" ، ثم "الإصدارات فقط".
ومع ذلك ، إذا كنت تستخدم Refreshversions ، فسوف تتعلم أيضًا عن التحديثات عند تشغيل مهمة refreshVersions مباشرة في ملف versions.properties .
إذا كنت تريد أن يكون لهذه المكتبة ميزة جديدة أو تحسن في وحدة جديدة أو في وحدة نمطية موجودة ، فيرجى فتح مشكلة أو تصويت/تعليق واحد مماثل ، بحيث يمكن مناقشتها.
مساهمات الوثائق موضع ترحيب أيضًا. بالنسبة إلى الأخطاء المطبعية أو غيرها من التحسينات الصغيرة ، لا تتردد في تقديم العلاقات العامة (طلب السحب) مباشرة. للحصول على مساهمات DOC أكثر أهمية ، يرجى فتح مشكلة أولاً ، بحيث يمكن مناقشتها.
إذا وجدت خطأ ، يرجى فتح مشكلة مع جميع التفاصيل المهمة. إذا كنت تعرف حلًا بسيطًا لا يمثل كسر API وليس له آثار جانبية يجب مراعاتها ، فيمكنك أيضًا إرسال العلاقات العامة مباشرة.
يمكنك أيضًا الانضمام إلى المناقشة على Slack Kotlin في قناة #Splitties (يمكنك الحصول على دعوة هنا).
"الانقسام" هو وحدة من مكتبة Splitties التي يمكنك إضافتها كاعتماد. ويشمل فقط التبعيات المتعدية المطلوبة. يتيح لك ذلك إضافة ما تحتاجه فقط في تطبيقك أو وحدة المكتبة الخاصة بك ، وبالتالي فإن تطبيق APK/IPA/التطبيق النهائي صغير بقدر الإمكان ولا يتضمن أشياء لا تستخدمها تطبيقك.
دعنا نقول أنك تقوم ببناء تطبيق نظام التشغيل WEAR باستخدام طرق العرض DSL. ارتداء تطبيقات نظام التشغيل لا تحتاج إلى appcompat. بما في ذلك سيكون مضيعة لعرض النطاق الترددي والتخزين. تعتمد Views DSL Core Module على Android SDK ولكن ليس على AppCompat ، لذلك لا تنفخ تطبيق المعصم الخاص بك باستخدام AppCompat باستخدام Views DSL. ومع ذلك ، إذا كنت تقوم ببناء هاتف أو جهاز لوحي أو تطبيق Android ، فهناك طرق عرض DSL AppCompat مع بعض الامتدادات التي يمكنك استخدامها.
شكر خاص لجوفش Mitrejchevski للمساعدة في اتخاذ القرارات لهذا المشروع.
بفضل Jetbrains والمساهمين على Anko ، الذي كان مصدرًا رائعًا للإلهام ، وخاصة بالنسبة للآراء DSL ، وبالطبع ، شكرًا على لغة برمجة Kotlin الممتازة التي تجعل هذا المشروع ممكنًا.
بفضل Doug Stevenson على مقالاته "Kotlin & Android: A Brass Tacks Experience". من العدل أن نقول إن وجهات النظر DSL لها جذرها في هذه التجربة.
يتم نشر هذه المكتبة ضمن إصدار ترخيص Apache 2.0 والتي يمكنك رؤيتها هنا.