10 کتابخانه برتر اندرویدی که هر برنامه نویس اندروید باید بداند
همانطور که میدانید ، در زمینه توسعه نرمافزار ، همه چیز به سرعت تغییر میکند و تکامل مییابد . به همین دلیل به این نتیجه رسیدیم که یک لیست به روز شده از کتابخانه های اندروید تهیه کنیم .
بدون معطلی ، اجازه دهید به فهرست کتابخانه ها برویم. ما با یکی از قدیمی ترین و مفیدترین کتابخانه اندروید شروع می کنیم.
Retrofit یک سرویس گیرنده امن HTTP است که به شما اجازه میدهد تا REST API را به عنوان یک رابط تعریف کنید . شما میتوانید درخواست API بدنه ، headers ، پارامترهای پرس و جو و موارد دیگر را با استفاده از annotations دستکاری کنید ، این امر باعث می شود همه چیز تمیز و ساده شود. همچنین Retrofit امکان اجرای فراخوانی API همزمان و ناهمزمان را می دهد.
interface ApiService {
@GET("movie/{id}")
fun getMovieDetails(@Path("id") id: String) : Call<MovieDetails>
}
برای انجام این کار , Retrofit یک ماژولRx جداگانه پیشنهاد میدهد . اگر از Rx استفاده می کنید ، این ماژول فراخوانی API را به عنوان Observable برمی گرداند ، بنابراین می توانید آن را با بقیه برنامه خود متصل کنید.
اینها تنها چند دلیل برای استفاده از Retrofit است .
Moshi کتابخانهای است که JSON را به جاوا و Kotlin تبدیل میکند . بسیاری از مردم به Moshi به عنوان GSON 3.0 اشاره میکنند . این کتابخانه نسبت به GSON در چندین جنبه برتری دارد: سریعتر است ، از Kotlin پشتیبانی و آن را حفظ می کند، استثنائات قابل پیش بینی را به همراه می آورد و به طور پیش فرض از آداپتور DateTime منقضی استفاده نمی کند. علاوه بر این، تبدیل JSON به جاوا (و بالعکس) با Moshi ساده است.
val moshi = Moshi.Builder().build()
val jsonAdapter = moshi.adapter(Model::class.java)
/* JSON to Model */
val model = jsonAdapter.fromJson(json)
/* Model to JSON */
val json = jsonAdapter.toJson(model)
ما همچنین Moshi را بخاطر پشتیبانی از JSON API تحسین می کنیم. JSON API مشخصات مربوط به ساخت API است و بسیاری از API ها با استفاده از این ویژگیها نوشته شدهاند . Moshi JSON API زندگی ما را آسان تر می کند زیرا پاسخ JSON API را به اشیاء معنادار Java تبدیل می کند. Retrofit همچنین از Moshi پشتیبانی و با هم کار میکنند .
Chuck یک بازرس HTTP برای اندروید است که امکان می دهد تاریخچه HTTP برنامه خود را بر روی تلفن همراه ببینید. فایل HTTP به عنوان یک اعلان نمایش داده میشود ، که شما میتوانید برای باز کردن رابط Chuck UI، آن را گسترش دهید . زمانی که از Chuck استفاده میکنید , تیم تضمین کیفیت شما را تحسین خواهد کرد در حالی که آنها قادر خواهند بود ببینند، آیا یک مساله بر روی اندروید یا backend ادامه دارد یا خیر.
این کتابخانه گاهی از logcat نیز مفیدتر است . به این دلیل است که تاریخچه HTTP شما حتی اگر برنامه پایان پذیرد همچنان ادامه دارد ، در حالی که logcat پس از راه اندازی مجدد برنامه ، تاریخچه خود را پاک می کند.
همانطور که میدانید ، بارگذاری تصویر در اندروید و مدیریت تصویر API بسیار وحشتناک است . این یک کابوس است که حتی اندازه تصویر را بدون گرفتن ” OutOfMemoryException ” تغییر داد. Glide یک کتابخانه بارگذاری تصویری است که API خوبی را در معرض نمایش قرار می دهد و به شما این امکان را میدهد که تصویر خود را هرچقدر که می خواهید تغییر دهید.
GlideApp.with(context)
.load(url)
.centerCrop()
.placeholder(R.drawable.ic_placeholder)
.into(imageView)
این کتابخانه به شما این امکان را میدهد که یک تصویر را در ImageView بارگذاری کنید، تصاویر پشتیبان را تعریف کنید ، حافظه پنهان را ذخیره کرده و تصاویر خود را اندازه بگیرید و…. سعی کنید تمام این کارها را بدون Glide انجام دهید، به سرعت خواهید فهمید که چرا این کتابخانه، کتابخانه اصلی ما شده است.
Glide حتی از برخی تحولات رایج مانند یک تصویر دایره ای خارج از کادر نیز پشتیبانی میکند .
ThreeTen یک کتابخانه تاریخ و زمان برای اندروید است. این یک قانون از JSR-310 است ، که در جاوا 8 به عنوان یک بسته استاندارد ” java.time.*” درج شده است. ما این کتابخانه را دوست داریم زیرا استاندارد API تقویم اندروید کابوسی برای این کار است.
/* Current DateTime */
LocalDateTime.now()
/* String to DateTime */
val localDateTimeString = "2011-12-03T10:15:30"
val localDateTime = LocalDateTime.parse(localDateTimeString)
ThreeTen از لحاظ تعداد و اندازه باینری بسیار کوچکتر از JodaTime است . API آن نیز کوتاه تر نسبت به API JodaTime است. اگر در حال حاضر از JodaTime استفاده میکنید ، ارزش تعویض به ThreeTen را ندارد. با این حال ، اگر یک پروژه جدید را شروع میکنید ، توصیه میکنم که به جای آن ThreeTen را امتحان کنید .
Timber کتابخانه قدرتمند و در عین حال ساده است ، که در بالای کلاس ” Log” اندروید ساخته شده است و این امکان را به شما می دهد تا ورود به سیستم را به راحتی روشن یا خاموش کنید. هم چنین پشتیبانی خوبی را برای رشتهها و استثناها پیشنهاد میکند . به خاطر همه این مزایا ، Timber یکی از کتابخانه های اصلی است که تقریباً در تمام پروژه های Android خود استفاده می کنیم.
/* Log error */
Timber.e("Error happened")
/* Log warning with params */
Timber.w("Your variable value is %s", variable)
/* Log exception */
try {
...
} catch (e: Exception) {
Timber.e(e)
}
Room یک ORM رسمی اندروید است و دلایل مختلفی برای این وضعیت وجود دارد. این کتابخانه دارای یک API زیبا است که مشابه Retrofit است. همچنین به شدت وابسته به تفسیر و نحو استاندارد SQL است.
علاوه بر این ، Room از پشتیبانی خارجی Rx و “LiveData” استفاده می کند ، بنابراین می توانید تصمیم بگیرید به هر صورت که دوست دارید از آن استفاده کنید. مزیت اصلی Room نسبت به سایر ORM ها، سادگی آن است . ORMهای دیگر با api های بسیار پیچیدهتر نیاز به خواندن تمام مدارک، قبل از استفاده از آنها را دارد. به لطف نحو استاندارد sql , درک Room بسیار آسان است و به شما اجازه میدهد بدون صرف زمان برای خواندن مستندات از آن استفاده کنید.
RxJava یک کاربرد جاوا از ReactiveX APIاست که به شما اجازه میدهد تا وظایف و رویدادهای غیر همزمان را به توالی های قابل مشاهده متصل کنید. کاربران انتظار دارند برنامه های مدرن، داده ها را در زمان واقعی نمایش دهند. به عبارت دیگر ، آنها میخواهند به طور خودکار اطلاعات به روز را ببینند . این جایی است که RxJava میتواند به آن کمک کند.
هنگام بارگیری داده های بلادرنگ ، ادغام چندین فراخوانی API ، تغییر موضوعات و رسیدگی به خطاها بسیار دشوار می شود. اینجاست که RxJava میدرخشد و به همین دلیل ما شروع به استفاده از این کتابخانه کردهایم . اعتراف میکنم که RxJava گیجکننده و سخت است ، اما ارزش زمان شما را دارد . حتی بعد از اینکه ما به Kotlin رسیدیم ، به دلیل مزایای آن، به استفاده از RxJava ادامه دادیم . همراه با Kotlin ، API به دلیل توابع پسوند اضافی بهتر نیز هست.
Single.zip(
/* Execute first API call and retry twice if it fails */
apiService.getMovieActors(id).retry(2),
/* Execute second API call and retry twice if it fails */
apiService.getMovieDetails(id).retry(2),
/* Receive successful results and merge them into single model */
BiFunction<List<Actor>, MovieDetails, Movie> { actors, details -> Movie(details, actors) }
)
/* Execute API calls on IO thread */
.subscribeOn(Schedulers.io())
/* Receive results on MainThread */
.observeOn(AndroidSchedulers.mainThread())
.subscribeBy(
onError = { /* Handle error */ },
onSuccess = { /* Handle full movie data */ }
)
سعی کنید چیزی ساده مشابه موارد فوق را با Java انجام دهید. آیا جرات میکنید!
Android KTX مجموعه ای از بسط های Kotlin است که API Android را کاربرپسند تر می کند. هدف کلی این کتابخانه ساخت api های android است . این روش بسیاری از روشها و مشخصههای جدید مانند پارامترهای اسمی ، lambdas و مقادیر پیشفرض را اضافه میکند .
/* Display View */
view.isVisible = true
/* Apply padding to all sides */
view.setPadding(padding)
/* Update padding on any side */
view.updatePadding(left = newPadding, right = newPadding)
/* Quick Toast */
toast("Display test toast")
/* New way to create bundle */
bundleOf {
"key1" to item1
"key2" to item2
}
/* Better way to use SharedPreferences */
sharedPreferences.edit {
putString("key1", "value1")
putString("key2", "value2")
}
Android KTX دارای ویژگی های زیادی است و تنها راه برای یادگیری آن، جستجو در کد کتابخانه و دیدن API Android است. این کتابخانه روشی را که ما از API اندروید استفاده میکنیم تغییر میدهد و به همین دلیل باید به هر برنامه اندرویدی که در کاتلین نوشته می شود، تبدیل شود.
بدون Dagger ، فهرست ۱۰ کتابخانه برتر ما ناقص خواهد بود . Dagger کاملاً استاتیک است و چارچوب injection آن وابسته به کامپایل زمان است. مشابه با (RxJava )، درک آن واقعا ً دشوار است (برای من کمی طول کشید تا مثال coffeemaker را درک کنم ) ، اما به طور کامل ارزش زمان و تلاش شما را دارد .
injection وابسته روشی است که اجزای کوچکتر را به یک مدل دیگر تبدیل می کند و آنها را با حداقل تلاش به هم میچسباند . به عنوان مثال ، اگر یک مدل اتومبیل داشته باشید ، میتوانید برای آن تایر فراهم کنید و به راحتی تایر را در آینده جایگزین کنید، بدون اینکه مجبور شوید یک خط کد در مدل اتومبیل خود تغییر دهید .
هنگام توسعه برنامههای کاربردی بزرگتر ، نیاز نیست وابستگی injection را برای خود نگه دارید زیرا کد به سرعت رشد میکند و نگهداری آن بسیار دشوار میشود . Dagger به شما کمک میکند از این کار اجتناب کنید چون گراف وابستگی injection در زمان کامپایل از طریق پردازش تفسیر ایجاد می گردد .
در سال گذشته ، گوگل یک ماژول جداگانه Android Dagger را در اختیار شما قرار داد ، که به شما امکان می داد کد کمتری از boilerplate بنویسید و وابستگی آسانتر شود .
نتیجهگیری
در این مقاله فهرست ۲۰۱۸ از ۱۰ کتابخانه برتر اندروید را معرفی کردیم . این ده گزینه برتر باعث میشود تولید اندروید برای هر کسی که از آنها استفاده میکند بسیار لذت بخش باشد . به دنبال گزینههای بیشتر هستید ؟ ما در Infinum برخی از کتابخانههای اندروید خودمان را توسعه دادهایم . آنها را بررسی کنید :
MjolnirRecyclerView :
گسترش RecyclerView با پشتیبانی از هدرها ، پاورقی ها ، نمای خالی و DiffUtils.
Goldfinger :
تایید هویت اثر انگشت را ساده می کند.
DBInspector :
پایگاه داده های برنامه خود را مشاهده و به اشتراک بگذارید.
Complexify :
روشی آسان برای بررسی کیفیت رمز عبور کاربر.
Prince of Versions:
به روزرسانی های برنامه را در داخل برنامه کنترل کنید.
دیدگاهتان را بنویسید