موقع ساختن پروژه های اندروید از چه کتابخونه هایی استفاده میکنم؟
25 بهمن 1399 1399-11-25 20:09موقع ساختن پروژه های اندروید از چه کتابخونه هایی استفاده میکنم؟
موقع ساختن پروژه های اندروید از چه کتابخونه هایی استفاده میکنم؟
همواره استفاده کردن از کتابخونهها توی هر سیستم و پلتفرمی ممکنه باعث یکسری معضلها بشه.
- اینکه از چه کتابخونههایی استفاده کنیم بهتره؟
- برای فلان کار از چه کتابخونهای باید استفاده کنم؟
- ممکنه این کتابخونهای که استفاده میکنم مشکلات امنیتی ایجاد کنه؟
اینها سوالاتی هستند که شاید بارها و بارها از خودتون پرسیده باشید.
استفاده از کتابخونهها همیشه هم خوب نیست و ممکنه مشکلات زیادی برتون وجود بیاره.
از مشکلات ساختاری برنامه گرفته تا مشکلات امنیتی!
پس انتخاب صحیح کتابخونهها یکی از اصلی ترین نکاتی هستش که باید بهش توجه کنید.
خب بعد از کلی مقدمه چینی، حالا برین سراغ اینکه من خودم از چه کتابخونههایی استفاده میکنم ؟
-
تزریق وابستگی
برای تزریق وابستگی (Dependency Injection) کتابخونههای مختلفی وجود داره.
ولی من از Dagger (دَگِر) استفاده میکنم.
دگر قویترین و بینظیرترین کتابخونه برای اینکار هستش.
البته از حق هم نگذریم خیلی سخته (اگه توی StackOverFlow سرچ کنید میبینید که بارها و بارها عبارت سرطان رو برای این کتابخونه به کار بردن😁)
برای استفاده از این کتابخونه این کدها رو باید به پروژه اضافه کنی
implementation 'com.google.dagger:dagger:2.28.1' annotationProcessor 'com.google.dagger:dagger-compiler:2.28.1' implementation 'com.google.dagger:dagger-android:2.28.1' annotationProcessor 'com.google.dagger:dagger-android-processor:2.28.1'
-
برنامه نویسی ناهمزمانی
مسائل ناهمزمانی در برنامه نویسی خیلی مهم هستن.
طبیعتا اندروید هم از این قضیه مستثنا نیستش.
برای من از Rx استفاده میکنم.
Rx هم مثل دگر خیلی سخته، اگه بخواین کل Rx رو یاد بگیرید باید 3 الی 6 ماه زمان سپری کنید.
برای استفاده از این کتابخونه این کدها رو باید به پروژه اضافه کنی
implementation "io.reactivex.rxjava2:rxandroid:2.1.1" implementation "io.reactivex.rxjava2:rxjava:2.2.12"
-
ارتباط با اینترنت
اصلیترین کار هنگام ساختن اپلیکیشنهای آنلاین اینه که اپلیکیشن با سرور در ارتباط باشه.
برای اینکار هم کلی کتابخونه وجود داره.
ولی من از Retrofit (رِتروفیت) استفاده میکنم.
این کتابخونه واقعا قدرتمنده و به جرات میشه گفت توی ارتباط با سرور میتونه حرف اول رو بزنه.
برای استفاده از این کتابخونه این کدها رو باید به پروژه اضافه کنی
implementation "com.squareup.retrofit2:retrofit:2.9.0" implementation "com.squareup.retrofit2:adapter-rxjava2:2.5.0" implementation 'com.squareup.retrofit2:converter-gson:2.7.2'
-
تنظیمات بیشتربرای ارتباط با سرور
زمانی که میخوای اپلیکیشنهای آنلاین درست کنی، باید حواست باشه که بتونی ارتباط با سرور رو زیر نظر داشته باشی.
یا اینکه یکسری تنظیمات رو بهش اضافه کنی که اپلیکیشن توی شرایط مختلف با مشکل رو برو نشه.
برای اینکه من از OkHttp استفاده میکنم و با اون روی Retrofit میتونم یکسری تنظیمات خاصی که مدنظرم هست رو اضافه کنم.
برای استفاده از این کتابخونه این کدها رو باید به پروژه اضافه کنی
implementation 'com.squareup.okhttp3:okhttp:3.14.9' implementation "com.squareup.okhttp3:logging-interceptor:3.14.0"
-
بارگذاری تصاویر
مگه میشه اپلیکیشن آنلانی نوشت و عکسی رو از سرور دریافت کرد؟😀
برای بارگذاری تصاویر من از Glide (گِلاید) استفاده میکنم.
چون گلاید به نسب بقیه کتابخونهها سریعتره، از منابع به خوبی استفاده میکنه، سیستم کش خیلی قوی داره و کلی مسائل دیگه که من ترجیح میدم از این کتابخونه استفاده کنم
برای استفاده از این کتابخونه این کدها رو باید به پروژه اضافه کنی
implementation 'com.github.bumptech.glide:glide:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
-
دیتابیس
به نظرم Room (روم) توی دیتابیس اندروید حرف اول رو میزنه.
سرعت خیلی خوب و عالی داره از طرفی پیاده سازیش هم خیلی خیلی راحته!
به گوگل باید واسه ساختن این دیتابیس واقعا تبریک گفت.
برای استفاده از این کتابخونه این کدها رو باید به پروژه اضافه کنی
implementation 'androidx.room:room-runtime:2.2.6' kapt 'androidx.room:room-compiler:2.2.6'
-
ایجاد ارتباط بین صفحات
من برای اینکار از کتابخونه عالی که خود گوگل ساخته استفاده میکنم.
اسم این کتابخونه Navigation هستش.
این کتابخونه یک شعار باحالی داره، اونم اینه که : <<<یک اکتیویتی و بینهایت فرگمنت>>>
یعنی اینکه اپلیکیشن رو طوری بسازی که یک اکتیویتی داشته باشه و بقیه صفحاتت فرگمنت باشن.
درضمن برنامه نویسی مدرن اندروید هم به همین موضوع اشاره داره.
برای استفاده از این کتابخونه این کدها رو باید به پروژه اضافه کنی
implementation 'android.arch.navigation:navigation-fragment:1.0.0' implementation 'android.arch.navigation:navigation-ui:1.0.0'
-
افزایش سرعت توسعه
توی همه برنامههای اندرویدی یه چالش خیلی بزرگ داریم.
اونم اینکه چطور میشه برنامهای درست کنیم که توی همه صفحه نمایشها خوب و عالی نشون بده، بدون هیچ نوع بهم ریختگی!
یا اینکه اطلاعات سَبُک برنامه (مثلا شماره موبایل، توکن یا …) چطور سریع و مطمئن ذخیره کنم؟
علاج این مشکل پیش دکتر نوریه😁
پایین 2 تا کتابخونه رو معرفی میکنم.
اولی برای حل مشکل ریسپانسیو بودن اپلیکیشنه، دومی هم برای ذخیره سازی اطلاعات.
برای استفاده از این کتابخونه این کدها رو باید به پروژه اضافه کنی
implementation 'com.github.MrNouri:DynamicSizes:1.0' implementation 'com.github.MrNouri:GoodPrefs:1.0'
-
کنترل بهتر تِرِدها
روشهای مختلفی رو برای عملیات MultiThreading (مالتی تِرِدینگ) یا چند نخی داریم.
ولی یکی از بهترین روشهاش که چند وقت اخیر معرفی شده Coroutines (کروتینز) هستش.
Coroutines یه کتابخونه خیلی سبک ولی پرقدرت توی این زمینه هستش.
حتما حتما این مبحث رو خوب یاد بگیرید که خیلی حیاتی هستش.
برای استفاده از این کتابخونه این کدها رو باید به پروژه اضافه کنی
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'
-
اعمال فونت
فونتهای توی رابط کاربری تاثیر خیلی زیاده دارن.
توی اندروید هم چندین روش برای اعمال فونت روی viewها وجود داره.
که هرکدوم یکسری مشکلاتی دارن، حتی بعضیهاش باعث میشه اپلیکیشنت با مشکل روبرو بشن و درست اجرا نشن!
Calligraphy یه کتابخونه خیلی خوبی هستش که با چند خط کد ساده، فونت رو به مخزن اصلی پروژهت اضافه میکنه.
پس خیلی راحت میتونی روی همه viewهات فونت دلخواهت رو اعمال کنی و ازش لذت ببری.
برای استفاده از این کتابخونه این کدها رو باید به پروژه اضافه کنی
implementation 'io.github.inflationx:calligraphy3:3.1.1' implementation 'io.github.inflationx:viewpump:2.0.3'
-
مدیریت رخداد ها
خیلی مواقع پیش میاد که میخوایم ارتباط های مختلفی رو بین صفحات برقرار کنیم.
یعنی اگه توی فلان صفحه اتفاقی افتاد، بلافاصله توی یه صفحه دیگهای هم یه کاری به صورت خودکار انجام بگیره!
خب ارتباط بین صفحات مختلف توی اندروید یکم سخته! مخصوصا زمانی که به اون صفحات دسترسی نداشته باشیم.
EventBus (ایونت باس) یکی از اون کتابخونههایی هستش که باید توی هر برنامهای باشه.
چون خیلی خیلی راحت این مباحث رو هندل میکنه، بدون اینکه مشکلاتی جای دیگهای بوجود بیاد.
برای استفاده از این کتابخونه این کدها رو باید به پروژه اضافه کنی
implementation 'org.greenrobot:eventbus:3.2.0'
خب اینها کتابخونههایی هستن که من اکثرا ازشون توی برنامههام استفاده میکنم.
البته ممکنه کتابخونههای دیگهای هم باشن، ولی خب اینا جز مواردی هستن که بیشتر ساختاری هستن و توی همه پروژهها ازشون استفاده میکنم.
شما از چه کتابخونههایی استفاده میکنید؟
به نظرت کتابخونهای بوده خیلی خوب باشه و اسمش رو نبرده باشم ؟🤔