آموزش اندروید جت پک (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) می توانید برنامه های خودکار را روی صفحه اتومبیل آزمایش کنید که ابزاری برای تست است و به شما امکان می دهد بدون سخت افزار تست کنید.

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


    • نویسنده: میثم بابائی

    ارسال دیدگاه

    برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربری‌تان شوید


    دیدگاه کاربران

    avatar
    mosayeb
    1399/11/27

    بسیار عالی !!!

    avatar
    احسان بابائی
    1399/11/27

    درود بر شما