مقالات باگتو

آموزش اندروید جت پک (android jetpack)
آموزش اندروید جت پک (android jetpack)

Android Jetpackتلفیقی از تعدادی کتابخانه و ابزار جداگانه در زیر یک پرچم که درI / O 2018اعلام شد.

بیشتر برنامه هایAndroid از support library ها برای کمک به کاربران در افزودن انواع ویجت های به روز شده و رفع مشکلات سازگاری در دستگاه های Android و نسخه های سیستم عامل استفاده می کنند.

به سختی می توانید یک برنامهAndroidپیدا کنید که از آن ها استفاده نکند و این به عنوان یک وابستگی در پروژه های  templateاست که درAndroid Studioساخته شده است. ویجت های اساسیRecyclerViewدر آنها گنجانده شده است.

استفاده ازsupport libraryها بسیار عالی است ، اما در طول سال ها بسیار پیشرفت کرده و نام ها تا حدی گیج کننده شده است. به عنوان مثالcom.android.support:support-v4وcom.android.support:support-v13وجود دارد. با نگاهی به اسامی آیا می دانید چه کلاسهایی در آنها وجود دارد؟ قرار است این نام ها مشخص کنند که از چه نسخه ای ازAndroidپشتیبانی می کنند  اما همانطور که تکامل یافته اند حداقل نسخه بهAPIسطح 14 افزایش یافته است.

گوگل متوجه شده است که این تنوع کتابخانه ای که همیشه در حال تغییر است ، برای توسعه دهندگان جدید (و قدیمی) بسیار گیج کننده است و تصمیم گرفته است از ابتدا شروع به کار کند. در نتیجهAndroid Jetpackرا به عنوان راهی برای ارائه راهنما و همچنین به عنوان مجموعه پیشنهادی کتابخانه ها و ابزارها ایجاد کرده است.google از طریقJetpackاجزایی را ارائه می دهد که روشی توصیه شده برای طراحی برنامه شما را تشکیل می دهند. بعلاوهgoogleامیدوار است کهJetpackبتواندboilerplate codeرا از بین ببرد و کارهای پیچیده را ساده کند در حالی که هنوز سازگاری معکوس ارائه می دهد.

برای کمک به رفع سردرگمی نسخه کتابخانه هاGoogleکلیه کتابخانه های مربوط بهJetpackرا به نسخه 1.0.0 بازنشانی کرده وpackage nameآنها را با نام پایهandroidxشروع می کند. علاوه بر این ، هرcomponentدر کتابخانه خود خواهد بود توجه داشته باشیم کهGoogleهنوز در حال کار بر روی انتقال کتابخانه ها بهpackage nameجدید است.

همچنین چندresourceدیگر درJetpackوجود دارد از جمله کتابخانهAndroid KTXکه استفاده از کاتلین را باAndroidآسان تر می کند.

Jetpackبه چهار حوزه اصلی تقسیم شده است:Architecture،Foundation،BehaviorوUI. بیشتر موارد موجود درJetpack، مرتب سازی و طبقه بندی  شده کتابخانه های موجود است.تعداد کمی از آنها جدید هستند.

Jetpack: Architecture(جت پک - معماری)

ArchitectureازJetpackشامل هشت کتابخانه و ابزار مختلف است که به شما کمک می کنند برنامه خود را معماری کرده و داده های استفاده شده و نمایش داده شده در برنامه را مدیریت کنید. بیشتر اینها کتابخانه های موجود هستند. با این وجود ، سه کتابخانه جدید وجود دارد:Navigation،PagingوWorkManager.

 از جدیدترین کتابخانه ها شروع میکنیم:

Navigation

حرکت بینactivityها یاfragmentها هرگز کار ساده ای نبوده. اکنون ، با استفاده از کتابخانهNavigationوnavigation viewerدرAndroid Studioمی توانید بصورت ویژوالی نحوه اتصال صفحه های خود به یکدیگر را طراحی کنید. بسیاری از افراد متوجه شده اند که این شبیهStoryboardsدرApple’s Interface Builderبرای توسعه برنامهiOSاست.

با استفاده ازNavigationشما به صورت ویژوالی یک صفحه را به صفحه دیگر متصل می کنید. شما یک نمودارnavigationایجاد می کنید که یک نقطه شروع دارد که می تواند اقداماتی برای رفتن به نقطه دیگر داشته باشد. نکته جالب در این مورد این است که شما می توانید انیمیشن ها را در ویرایشگر ویژوالی تعریف کنید. این کتابخانه حتیdeep linkبا برنامه شما را انجام می دهد. انتقال داده ها بین نقاط مختلف با روشی ایمن با یک پلاگین جدید به نامsafeargsانجام می شود. شما می توانید تعریف کنید کهFragmentها در نمودار  navigation  چه استدلال هایی را از درون خود فایلnavigationقبول می کنند.

در اینجا تصویری از دوfragmentبا یکactionبین این دو وجود دارد. می توانید برنامه خود را تنظیم کنید تا با کلیک بر روی دکمه درfragmentاول بهfragmentدوم بروید.

Paging(صفحه بندی)

آیا تاکنون مجبور شده اید با مقادیر زیادی از داده های مرتبط سر و کار داشته باشید؟ ممکن است بیش از حد برای بارگیری همه داده ها سنگین باشد کتابخانهPagingبا ارائه روش هایی برای کنترل صفحه بندی داده ها درRecyclerViewبه شما کمک می کند.

 

کتابخانهPagingاز چندین کلاس کلیدی استفاده می کند: PagedList،PagedListAdapterوDataSource.

PagedListلیستی است که داده ها را با روشlazyilyازDataSourceبارگیری می کند و به برنامه اجازه می دهد تا داده ها را در تکه ها یا صفحات بارگیری کند.

PagedListAdapterیکRecyclerViewAdapterسفارشی است که صفحات را با پاسخDiffUtilمدیریت می کند.

برایDataSourceاز زیر کلاس هایPageKeyedDataSource،ItemKeyedDataSourceیاPositionalDataSourceاستفاده خواهید کرد.

 

Work Manager(مدیریت کارها)

در طول سال ها ، سیستم های مختلفی درAndroidبرای کار باbackground jobsیاalarmها تعبیه شده است. آنها در نسخه های مختلف اندروید متفاوت هستند و شما برای مدیریت نسخه های مختلف سیستم عامل باید کد زیادی بنویسید.

WorkManagerاین مشکل را برطرف می کند و به شما یک کتابخانه برای ایجاد وظایف غیر قابل تأخیر و قابل تعویض و تعیین زمان اجرای آنها می دهد. می توانیدjobهای یکبار مصرف یاjobهای تکراری را تعریف کنید.

 

Data Binding(اتصال داده)

مدتی این کتابخانه وجود داشته است. Data Bindingبه شما امکان می دهد داده های خود را درXMLبهlayoutخود متصل کنید بنابراین وقتی داده های خود را در کد تغییر می دهیدviewهای تعریف شده توسطlayoutبه طور خودکار به روز می شوند. علاوه بر این  هنگامی کهUIشما تغییر می کند data objectشما به روز می شود.

 

Lifecycle(چرخه زندگی)

کتابخانهLifecycleبه شما کمک می کند علاوه برActivityها وFragmentهاlifecycle eventرا در سایرcomponentها نیز گوش دهید.این امکان را به شما میدهد که از چرخه زندگی در مکان های دیگری غیر ازActivityیاFragmentخبر داشته باشید. این کتابخانه با استفاده ازannotationها با متدها کار می کند تا ازeventهایی رخ میدهد مطلع شوید.

شماLifecycleObserverرا پیاده سازی می کنیدannotationها را برای متد ها مینویسید و اینobserverرا به یکlifecycleاضافه می کنید که معمولاً یکActivityیاFragmentاست. کلاسLifecycleObserverبا فراخوانی ()lifecycle.getCurrentState  می تواند وضعیتLifecycleفعلی را بدست آورد و در صورت نبودن وضعیت صحیح می تواند از این اطلاعات برای جلوگیری از فراخوانی کد استفاده کند.

LifecycleOwnerشیئی است که دارایeventهایAndroid lifecycleاست. ActivityوFragmentهایsupport libraryاز قبل متد هایLifecycleOwnerرا پیاده سازی کرده اند. LifecycleOwnerیک شیLifecycleدارد که می تواند با بازگشت آن بهobserverاطلاع دهد که وضعیت فعلی چیست.

 

LiveData

کتابخانهLiveDataاز الگویObserverبرای هندل کردن داده استفاده می کند اما آنها را به روشی آگاه ازlifecycleاداره می کند. هنگام تغییر داده ها بدون فراخوانی عناصرUIاز مزایای به روزرسانی خودکارUIبهره مند می شوید.

LiveDataکلاسی است که الگویobserverرا پیاده سازی می کند داده ها را نگه می دارد و هنگام تغییر داده ها listenerها را مطلع می کند.

 

Room

اگر تاکنون در کار با پایگاه دادهSQLiteدر یک برنامه اندرویدی مشکل داشته اید  از آنچه کتابخانهRoomبرای شما انجام می دهد قدردانی می کنید. شما چندین کلاس ساده ایجاد می کنید که داده های شما و نحوه دستیابی به آنها را مشخص می کند و کتابخانهRoomبیشتر کارهای دیگر را انجام می دهد. تنها کدSQLکه باید بنویسید برایqueryها است که معمولاً بسیار ساده هستند. و هنگام استفاده ازRoomزمان کامپایل کدSQLشما را بررسی می کند.

سه کلاس مهم وجود دارد که شما باید باRoomاز آنها استفاده کنید:Database(این شاملmain entry pointشما است و یکreferenceبه شی پایگاه داده برای برنامه دارد) ،Entity(شما برای هر جدول در پایگاه داده یک کلاس ایجاد می کنید) وDAO(شامل متد های بازیابی و مدیریت داده ها است).

 

ViewModel

در حالی که کتابخانهRoomداده های شما را درstorageذخیره میکند کلاسViewModelبه شما امکان می دهد داده ها را به صورت آگاه ازlifecycleدر حافظه دستگاه نگه دارید. یکی از ویژگی های خوبViewModelاین است که می تواند بعد از  ساخت مجددActivityیاFragmentیا چرخش دستگاه زنده بماند. سیستم در این حالت قرار می گیرد کهViewModelآن را دوباره باActivityیاFragmentمرتبط کند. ViewModelها همچنین مکانهایی هستند که می توانید داده ها را درbackgroundبارگیری کرده و ازLiveDataبرای اطلاع  listenerها از آماده بودن داده ها استفاده کنید.

Jetpack: Foundation

Foundation Jetpackشامل بخش اصلی سیستمKotlinوTesting Libraryها است.شامل کتابخانهAppCompatکه احتمالاً مدتی از آن استفاده کرده اید و کتابخانه داخلی جدیدKotlin KTXاست برای توسعه آسان در کاتلین.

Testingبسیار مهم است و دارای بخش خاصی از چارچوب ها است که به شما امکان می دهد برنامه خود راtestکنید  هم برایUI testو هم برایunit test.

codebaseهای برنامهAndroidبزرگتر و بزرگتر می شوند بنابراین شما می خواهید برای دیدن نحوه کنترل محدودیت روش64Kبه Multidexدر بخشFoundationمراجعه کنید.

 

AppCompat

کتابخانهAppCompatدرJetpack Foundationاز تمامcomponentهای کتابخانه های قدیمیv7تشکیل شده است.شامل موارد زیر است:

  • AppCompat
  • Cardview
  • GridLayout
  • MediaRouter
  • Palette
  • RecyclerView
  • Renderscript
  • Preferences
  • Leanback
  • Vector Drawable
  • Design
  • Custom tabs
  • و چند کتابخانه دیگر...

Android KTX

Android KTXتنها کتابخانه جدید درFoundationاست و مجموعه ای از برنامه های افزودنی کاتلین است که برای ساده سازی توسعه برنامه هایAndroidهنگام استفاده از کاتلین طراحی شده است.

چندین ماژولKTXوجود دارد که به سایر کتابخانه ها درJetpackمرتبط هستند. به عنوان مثال  اگر با کتابخانهNavigationکار می کنید می توانید از موارد زیر استفاده کنید:

  • android.arch.navigation:navigation-common-ktx
  • android.arch.navigation:navigation-fragment-ktx
  • android.arch.navigation:navigation-runtime-ktx
  • and android.arch.navigation:navigation-ui-ktx

SharedPreferences مثالی از نحوه استفاده از KTX برای ساده سازی کد شما است. نگاهی به کد کاتلین زیر بیندازید:

sharedPreferences.edit()
.putBoolean("key", value)
.apply()

مقایسه آن با کد مبتنی برKTX:

sharedPreferences.edit {
    putBoolean("key", value)
}

کدKTXکمی ساده شده و دیگر نیازی بهapply()نیست.

و در اینجا یک مثالSQLiteبدونKTXآورده شده است:

db.beginTransaction()
try {
    // insert data
    db.setTransactionSuccessful()
} finally {
    db.endTransaction()
}

و نسخه مربوطهKTX:

db.transaction {
    // insert data
}

KTXیک تراکنشSQLiteرا به یک متد ساده با یک لامبدا تبدیل می کند.

 

Test

قسمتTest Foundationشامل چارچوبEspresso UI testingوAndroidJUnitRunnerبرایunit testاست. Unit testبرای نوشتنtestهای کوچک در منطق کد شماست معمولاً در سطح متد های جداگانه نوشته میشوند. آنها باید سریع اجرا شوند و به شما کمک کنند تا منطق خاصی راtestکنید.EspressoبرایtestعناصرUIاستفاده می شود.

 

Multidex

همانطور که برنامه خود را ایجاد می کنید و کتابخانه های بیشتری را شامل می شوید ، برنامه شما می تواند به اندازه کافی بزرگ شود که شما باید از قابلیت هایMultidexing Androidاستفاده کنید. هنگامی که برنامه شما بیش از 65،536 متد در تمام کلاس ها داشته باشد ، بایدfile.dex(در اصل یک فایلzipکلاس ها) را به چندینfile.dexتقسیم کند.

 

Jetpack: Behavior

BehaviorدرJetpackدارای کتابخانه هایی است که به شما کمک می کنند از طریق رابط کاربر با کاربر خود ارتباط برقرار کنید ، از جمله استفاده از فیلم یا صدا. و شامل بسیاری ازcomponentها مانندmedia, notifications, permissions, downloading, sharingو کتابخانه جدیدSlicesاست.

 

Notifications

NotificationهایAndroidاز ابتدا وجود داشته است اما با گذشت زمان تغییر کرده است. آنها رسا تر شده اند و می توانند حاوی دکمه ها و تصاویر باشند. از زمانAndroid 5.0(آب نبات چوبی) Notificationهایی به نامheads-up notification

می تواند نمایش داده شود. برای کنترل رسانه حتی می توانید از اعلان ها درAndroid WearوTVاستفاده کنید.

 

Permissions

این قسمت ازBehaviorنحوه استفاده و درخواست مجوزها را به نمایش می گذارد. از آنجا کهAndroid 6.0(Marshmallow)قبل از دستیابی به عناصر خاصی از اجزای دستگاه مانند اطلاعات تماس ، مکان و اطلاعات دوربین  مجوزها باید به کاربر درخواست داده و تائید شوند. شما مجوزها را درmanifestاعلام می کنید و باید با هر دو اکشن که کاربر انجام میدهد (پذیرفتن مجوز یا رد مجوز)برخورد کنید.

 

Sharing

قسمتSharing درBehaviorنحوه اشتراک گذاری محتوا و کلاسShareActionProviderو نحوه استفاده از آن را توضیح می دهد. شما می توانید اطلاعات را با برنامه های دیگر به اشتراک بگذارید و از برنامه های دیگر اطلاعات دریافت کنید. شما می توانید یک اقدام اشتراکی ایجاد کنید فایل ها را به اشتراک بگذارید و ازContentProvidersبرای به اشتراک گذاری داده ها استفاده کنید.

 

Media

BehaviorازJetpackشامل کلاس هایMediaPlayerوAudioManagerاست. می توانید رسانه و صداها را پخش کنید ، ازMediaPlayerدر یک سرویس استفاده کنید و میزان صدای دستگاه را کنترل کنید. اندروید از فرمت های مختلف رسانه ای پشتیبانی می کند. همچنین می توانید از کتابخانهExoPlayerکهGoogleبرای برنامه های پخش خود در برنامه هایی مانندYouTubeاستفاده می کند ، استفاده کنید.

 

Download Manager

سرویسDownloadManagerبه شما کمک می کند تا فایل هایbackgroundرا بارگیری کنید. با استفاده از سرویسDownloadManagerاز برخورد با مشکلات اتصال  تلاش مجدد و حتی راه اندازی مجدد سیستم خودداری کنید. از آنجا کهDownloadManagerیک سرویس سیستمی است ، شما می توانید برای شروع یک دانلود آن دانلود را شروع کرده و برای اعلام پایان دانلود گوش به زنگ سرویس باشید. در این سرویسجای نگرانی در مورد مشکلات شبکه یا خرابی نیست.

 

Slices

کتابخانهSlicesجدید است و به شما امکان می دهد الگوهایUIایجاد کنید تا داده های خود را از طریق سیستم در طرح های انعطاف پذیر به اشتراک بگذارید. یکی از مثالهایی که گوگل درGoogle I / Oارائه داد یک برنامه آب و هوا بود که بسته به فضایی که برای نمایش دارد می تواند داده های بیشتری را نشان دهد. در حال حاضر فقط توسط برنامه   Google Searchاستفاده می شود.

 

با استفاده ازSlicesمی توانید داده های برنامه خود را در دسترس این برنامه ها قرار دهید تا کاربر با استفاده از Google SearchیاGoogle Assistantبتواند اطلاعات برنامه شما را پیدا کند.

 

Jetpack: UI

بیشتر کتابخانه هایUIدرJetpackبر اساس کد موجود است. آنها عبارتند از:

animations, fragments, palettes, layouts, Emojis, Android Auto, Wear وTV. کتابخانهEmojiCompatجدیدترین کتابخانه است و به شما شکلک های به روز و فونت های مورد نیاز برای استفاده از آنها را می دهد.

 

Animation

این قسمت ازJetpackشاملAPIبرای انواع مختلفanimationهای موجود درAndroidاست. اسناد سایتJetpackروش های قدیمی و همچنین جدید استفاده ازanimationها را پوشش می دهد. گرافیکvectorوanimation ,vectorنیز گنجانده شده است.

همچنین یک سیستمanimationمبتنی بر فیزیک وجود دارد که شاملanimationهایspringوflingاست. می توانیدtransitionهای بینActivityها را به عنوانpropertyوobjectبرایanimationتنظیم کنید. همچنین می توانید برای متحرک سازی هرگونه به روزرسانی که درlayoutایجاد کرده اید ، یکlayoutتنظیم کنید.

 

Emoji

EmojiCompatکاراکتر هایEmojiرا کنترل می کند و از پشتیبانی از فونت قابل دانلود استفاده می کند. با این کار برنامه شما بدون اینکه به سیستم عاملAndroidوابسته باشد از آخرین Emojiها استفاده میکند. هر زمان وابستگی این کتابخانه را به روز کنید جدیدترینEmojiها را خواهید داشت. یک کلاسconcrete Spanبه نامEmojiSpanوجود دارد که برای ایجادEmojiدر متن شما استفاده می شود.

 

Fragment

کلاسFragment supportبه این قسمت ازJetpackمنتقل شده است. شامل انواع مختلفFragment ها است ، مانند:DialogFragment،ListFragmentوPreferenceFragmentCompat. قسمت مهمی از یکFragmentچرخه حیات است و کلاسFragmentموجود درJetpackبا کلاسLifecycleدرJetpack: Architectureسازگار است.

 

Layout

یکLayout,viewها وViewGroupها را در برنامه شما تعریف می کند. در داکیومنتlayot Jetpack شما می آموزید که چگونهlayoutها را درXMLو به صورتcodeاعلام کنید. همچنین برخی ازLayoutهای رایج تر مانندLinearLayout،RelativeLayoutوLayoutجدیدContraintLayoutرا توصیف می کند. علاوه بر این ، نکاتی در مورد ویژگی های خاص تر مانند ایجاد لیست آیتم ها باRecyclerViewو همچنینlayoutهایCardViewرا دریافت خواهید کرد.

 

Palette

کتابخانهPaletteبه شما امکان می دهد رنگ ها را برای تم و تصاویر انتخاب کنید تاUIشما با تصاویر شما مطابقت داشته باشد. همچنین می توانید با استفاده از کلاسPalette.Builderیک پالت ایجاد کرده و رنگ های مختلفی را انتخاب کنید. برخی از انواع رنگهای تولید شده عبارتند از:Light Vibrant،Vibrant،Dark Vibrant،Light Muted،MuteوDark Mute.

 

TV

اگر در حال ساخت برنامه خود برایAndroid TVهستید ، پس قسمتTVازJetpackبرای شما مناسب است. شما می توانید سخت افزار و کنترلرهای تلویزیون را کنترل کرده و یک سیستمnavigationایجاد کنید که برای تلویزیون ها کار کند. تمleanbackبرای طرح بندی تلویزیون استفاده می شود و کتابخانهLeanbackبه کنترل تلویزیون کمک می کند. می توانید یک کنترل کنندهD-padتنظیم کنید تا کاربران بتوانند از طریقUIتلویزیون را کنترل کنند.

 

Wear

Wear OSنسخهAndroidبرای دستگاههای پوشیدنی است. شما می توانید برنامه ای ایجاد کنید که رسانه را پخش می کند ، رسانه خود را از ساعت کنترل می کند یا یک برنامه ساعت مچی یا چهره رو به صورت مستقل ایجاد کنید.

 

Auto

Jetpackبه شما کمک می کند تا برنامه هایی را برایAndroid Autoتوسعه دهید - فقط برای پیام رسانی ، کار با سخت افزار و موارد دیگر. شما می توانید پخش صوتی را برای ماشین و همچنین پیام رسانی ارائه دهید. با استفاده ازDesktop Head Unit (DHU)می توانید برنامه های خودکار را روی صفحه اتومبیل آزمایش کنید که ابزاری برای تست است و به شما امکان می دهد بدون سخت افزار تست کنید.

سوالات خود را در قسمت کامنت ها مظرح کنید تا به آنها پاسخ بدهم.

تگ‌ها
اشتراک

0 نظرات

    ;