اسناد رسمی آندروید یعنی Android Jetpack توصیف به عنوان “مجموعه کتابخانه ها، ابزار و ارشاد معماری.” این توضیحات مبهم بسیاری از توسعه دهندگان چیست Jetpack آندروید واقعا تعجب را ترک کرده است. نگاهی به لیست قطعات Jetpack اندیشه تنها در نظر گرفتن سوالات حتی بیشتر افزایش می دهد — تن متقاطع با موجود کتابخانه اندیشه و پروژه ها به وضوح وجود دارد.
یک تکه از قطعات به نظر می رسد مستقیم از کتابخانه پشتیبانی مانند AppCompat گرفته شده است. بنابراین، آندروید فقط Jetpack حمایت کتابخانه rebranded است؟ جایگزینی دارد؟ شما می توانید دو پهلو به پهلو از، و یا همه ما مهاجرت باید برنامه های ما به Jetpack
اجزای کتابخانه پشتیبانی ویژگی فقط آشنا در لیست قطعات Jetpack نیست. اجزاء معماری (Lifecycles LiveData اتاق و ViewModel) در حال حاضر بخشی از Jetpack, بیش از حد است.
برای اضافه کردن به سردرگمی که 2018 I/O گوگل به روز رسانی کتابخانه های آینده پشتیبانی به ما آموخته به فضای اندیشه. پشتیبانی و به فضای androidx جدید به عنوان بخشی از AndroidX منتشر خواهد شد. این ما به ارمغان می آورد به مجموع بزرگ از سه پروژه است که به نظر می رسد به برخی از تداخل با Jetpack — و ما هنوز هیچ نزدیک به بدانند چه Jetpack واقع یخ!
اگر Google I/O 2018 شما با سوالات بیشتر از جواب باقی مانده است، سپس در این مقاله ما می شود مصرف نگاه دقیق تری به پروژه های پشتیبانی کتابخانه، AndroidX و اجزاء معماری و اسطوره زدائی چگونه تمام این قطعات متناسب با Jetpack اندیشه پازل.
اندیشه Jetpack چیست؟
Jetpack آندروید مجموعه ای از کتابخانه های unbundled نه گره خورده به هر نسخه خاص از اندیشه, توسعه دهندگان راه برای حمایت از ویژگی های جدید در نسخه قدیمی سیستم عامل آندروید فراهم می کند. علاوه بر این دو سازگاری Jetpack وعده به شما کمک کند کار بیشتری انجام است, با کد کمتر با ارائه کدها برای رسیدگی به کارهای تکراری مانند مدیریت چرخه حیات نرم افزار.
اجزای Jetpack اندیشه به این دسته تقسیم: بنیاد
- این توانایی سیستم هسته مانند AppCompat را پوشش می دهد.
- UI- این رده برای رابط کاربر متمرکز اجزاء، از جمله قطعه و چیدمان، بلکه برای اجزاء است که به تلفن های هوشمند مانند خودرو تلویزیون و پوشیدن سیستم عامل توسط گوگل (که قبلا Android پوشیدن) محدود نشده است.
- معماری- این است که در آن شما پیدا ماژول ها برای کمک به رسیدگی به چالش های اطراف تداوم داده و چرخه حیات نرم افزار.
- رفتار- این رده در کل حاوی ماژول ها مانند مجوز اعلان ها و به اشتراک گذاری.
اندیشه Jetpack نیز معرفی پنج مولفه تجاری:
WorkManager WorkManager کار اعزام سرویس است که اجازه می دهد برنامه وظایف مشخص برخی از محدودیت های اختیاری و سپس بقیه را WorkManager را ترک است. وقتی برای برنامه ریزی وظیفه WorkManager استفاده آن برای اجرا به محض این که شرایط برآورده تضمین کرده است. اگر برنامه ریزی وظیفه باتری فشرده به اجرا زمانی که دستگاه متصل است حتی اگر کاربر برنامه خود خارج شده است یا دستگاه خود را در میان راه اندازی به محض این که دستگاه متصل به پریز برق سپس این وظیفه اجرا خواهد شد.
به طور پیش فرض، WorkManager بلافاصله اجرا وظیفه در یک تاپیک جدید پس زمینه، اما براساس عواملی مانند سطح API و اینکه آیا دستگاه دسترسی به بازی گوگل است اگر شما برنامه را اجرا نمی کند، آن مناسب ترین راه کار، زمانبندی انتخاب کنید خدمات. توجه به این عوامل WorkManager کار JobScheduler Firebase JobDispatcher یا پیاده سازی سیستم مدیریت و BroadcastReceiver سفارشی با استفاده از برنامه ممکن است.
ناوبری
اگر شما قصد ارائه یک تجربه کاربری خوب ناوبری app خود نیاز به احساس شهودی و بی دردسر. با استفاده از عناصر ناوبری در ترکیب با ویرایشگر های ناوبری جدید آندروید 3.2 استودیو، شما می توانید طراحی، ویرایش و به طور کلی ناوبری خود برنامه ریز لحن.
عناصر ناوبری نیز آسانتر برای پیاده سازی ساختار ناوبری است که در قطعات، به طور خودکار عمل بسیاری از پیچیدگی های اطراف FragmentTransactions اساس است.
صفحه بندی
تلاش برای دانلود و مقدار زیادی از داده ها به ارائه همه در یک بار هرگز منجر به تجربه کاربر خوب!
اجزای صفحه بندی کمک می کند تا جلوگیری از عقب ماندگی به طور معمول مربوط به بارگذاری مجموعه داده های بزرگ، با شکستن داده ها به تکه های شناخته شده به عنوان “صفحه.” با تمرکز بر روی نمایش زیر مجموعه ای از داده ها در اسرع وقت، صفحه بندی را کاهش می دهد مقدار زمانی که کاربر انتظار برای چیزی به نظر می رسد روی صفحه سمت چپ است. به علاوه، مبادله استفاده منابع سیستم مانند باتری و اطلاعات کمک هزینه در راه خیلی بیشتر مقرون به صرفه از شما فقط در حال بارگذاری بخشی از اطلاعات که در حال حاضر قابل مشاهده است.
صفحه بندی مطالب می توانید از شبکه های محلی و یا بر روی شبکه بار و آثار خارج-از-جعبه با اتاق LiveData و RxJava.
برش برش
به درایو تعامل کاربر، نمایش یک قطعه از محتوای درخواست خود را در مکان های که در آن بسیاری از کاربران آندروید صرف مقدار قابل توجهی از زمان مانند جستجو در گوگل نتایج و دستیار گوگل طراحی شده است.
برش می توانید نمایش محدوده استاتیک و تعاملی محتوا، از جمله تصاویر، لینک های ویدئو های عمیق، تبدیل، و لغزنده, و آنها می تواند پویا و به روز رسانی به حوادثی که اتفاق می افتد داخل برنامه مرتبط.
KTX آندروید این مجموعه ای از ماژول های متشکل از گسترش دهنده است که پلت فرم آندروید APIs را برای Kotlin بهینه سازی است. با استفاده از این افزونه کد شما بیشتر می توانید Kotlin مختصر و قابل خواندن، به عنوان مثال با استفاده از هسته androidx.: ماژول هسته ktx، شما می توانید تبدیل: sharedPreferences
. ویرایش (). putBoolean (مقدار "کلید"). ()
را به اعمال می شود:
sharedPreferences. ویرایش {putBoolean (مقدار "کلید")}
توجه داشته باشید که اندیشه KTX واقع هیچ ویژگی های جدید برای آندروید APIs موجود اضافه نمی کند.
Jetpack اندیشه است به جای کتابخانه پشتیبانی?
پشتیبانی از کتابخانه به کمک توسعه دهندگان پشتیبانی ویژگی های اخیر بستر های نرم افزاری بر روی دستگاه های در حال اجرا نسخه های قدیمی تر از اندیشه, توسط پیاده سازی سازگار با قبلیها از کلاس های مهم و روش ارائه شده است.
کتابخانه پشتیبانی عقب سازگاری در سراسر همه دستگاه ها را تضمین نمی کند، اما اگر آن مجموعه کاملی از عملکرد دستگاه خاص را فراهم نیست، آن را به آرامی سقوط در عملکرد معادل طراحی شده است. گاهی اوقات، شما ممکن است تماس چارچوب است که شما هنوز هم نیاز به قرار دادن در بررسی نسخه SDK صریح روبرو می شوند.
اگر این زیادی مثل Jetpack اندیشه، دلیلی برای آن وجود دارد. Jetpack آندروید موجود کتابخانه ها پشتیبانی می گیرد و آنها را در یک مجموعه جدید از اجزای پایان می رسد. همانطور که گوگل در حال حاضر برنامه ای برای انتشار به روز رسانی به کتابخانه پشتیبانی و اندیشه Jetpack حال، شده Jetpack اندیشه به جای کتابخانه پشتیبانی موجود است.
در حالی که Jetpack قطعات به هم و با بازی طراحی شده اند، آنها می تواند عمل مستقل. این به این معنی آن است نه لزوما مساله “Jetpack یا کتابخانه پشتیبانی?” وجود دارد بدون هیچ دلیل به استفاده از Jetpack قطعات و پشتیبانی کتابخانه جانبی توسط سمت، که دقیقا آنچه ما در این قطعه از وظایف زمانبندی پس زمینه ما با WorkManager مقاله در حال انجام است:
وابسته {اجرای fileTree (dir: 'libs' ، عبارتند از: ['*.jar']) اجرای "اندیشه arch. کار: کار زمان اجرا: 1.0.0-alpha02" اجرای "com. اندیشه. پشتیبانی: appcompat-v7:27.1.1" اجرای "com. اندیشه. پشتیبانی. محدودیت: محدودیت طرح: 1.1.0" androidTestImplementation "com. اندیشه. پشتیبانی. test: دونده: 1.0.1" androidTestImplementation "com. اندیشه. پشتیبانی. test. اسپرسو: اسپرسو هسته: 3.0.1"
در اینجا، ما با استفاده از Jetpack را جزء WorkManager کنار قطعات مختلف از کتابخانه پشتیبانی.
که در آن اجزاء معماری متناسب شود؟
اگر شما را از طریق لیست قطعات Jetpack خوانده شده و سپس شما را متوجه شده که آن نیز شامل اجزاء معماری:
- Lifecycles. این کتابخانه برای مدیریت برنامه lifecycles و اجتناب از نشت حافظه با ایجاد اجزای چرخه عمر آگاه است که پاسخ به تغییرات در وضعیت چرخه عمر دیگر قطعات است.
- ViewModel. داده های مربوط به رابط کاربر است اغلب از دست رفته در تغییرات پیکربندی مثل چرخش صفحه نمایش. از ViewModel اشیاء در سراسر تغییرات پیکربندی حفظ می شوند، شما این کلاس برای اطمینان از خود اطلاعات موجود، به باقی می ماند حتی پس از فعالیت و یا قطعه شده نابود شده است و سپس دوباره استفاده کنید.
- LiveData. داده های چرخه عمر آگاه دارنده کلاس A که به شما کمک می کند تا برای جلوگیری از نشت حافظه توسط تنها اجزاء نرم افزار به روز رسانی هنگامی که آنها در حالت فعال آغاز یا RESUMED.
- اتاق. این SQLite نقشه برداری شی هدف کتابخانه درد از مدیریت پایگاه داده ایجاد کش محلی درخواست شما داده ها را به باقی می ماند در دسترس، حتی زمانی که یک اتصال اینترنتی فعال نمی باشد.
این مولفه ها تنها در حال حاضر به عنوان بخشی از Jetpack اندیشه، اما از آنجایی که وابسته همان موجود باقی می ماند، این بیشتر از تغیر میدهند چیزی شما نیاز به عمل است.
در این مرحله ما می دانیم Jetpack ترکیب اجزای کتابخانه پشتیبانی مانند AppCompat با اجزاء معماری اعلام کرد که Google I/O 2017. شما می توانید نگه دارید با استفاده از ماژول ها در کتابخانه پشتیبانی، به خود معادل Jetpack, یا با استفاده از ترکیبی از این دو اگر چه اجزاء معماری حال حاضر بخشی از Jetpack در نظر گرفته.
این ما را با Google I/O 2018 نهایی مربوط به کتابخانه پشتیبانی اعلام برگ: AndroidX.
باید تبدیل به androidx. * فضای نام?
امروز, نظر بسیاری از پشتیبانی کتابخانه یک بخش اساسی از توسعه نرم افزار آندروید به نقطه که در آن این 99 درصد از برنامه های کاربردی بازی گوگل بزرگ استفاده می شود. با این حال، تناقضات را رخنه در اطراف کنوانسیون نامگذاری کتابخانه به کتابخانه پشتیبانی رشد کرده است.
در ابتدا، نام هر بسته نشان داد حداقل سطح API پشتیبانی توسط آن بسته به عنوان مثال پشتیبانی v4. با این حال، نسخه 26.0.0 پشتیبانی کتابخانه افزایش یافته API حداقل 14 دو تا امروز بسیاری از نام های بسته اند هیچ ارتباطی با حداقل سطح API پشتیبانی. زمانی که پشتیبانی v4 و بسته پشتیبانی v7 هر دو API حداقل 14، آن آسان است برای دیدن چرا مردم اشتباه می!
حتی اندیشه اسناد رسمی این مشکل اعتراف:
“هنگام کار کردن با هر انتشار جدید کتابخانه پشتیبانی شما نیست که فرض باید نماد بسته # v حداقل API پشتیبانی سطح را نشان می دهد..”
برای روشن کردن این سردرگمی، گوگل در حال حاضر کتابخانه پشتیبانی به ساختار جدید اندیشه گسترش کتابخانه (AndroidX) بسته refactoring است. AndroidX نام بسته ساده و همچنین artifactIds معده و groupIds است که محتویات هر بسته و آن سطح API پشتیبانی بهتر قابلیت.
با نامگذاری کنوانسیون فعلی آن نیز بسته های که همراه با سیستم عامل آندروید و که با درخواست شما APK (اندیشه بسته کیت) بسته بندی شده روشن نیست. برای روشن کردن این سردرگمی تمام کتابخانه های unbundled به AndroidX را androidx. منتقل خواهد شد * فضای نام در حالی که اندیشه. * سلسله مراتب بسته می خواهد برای بسته هایی که با سیستم عامل آندروید کشتی محفوظ است.
شامل نقشه refactoring AndroidX نگاشت خاص بین طبقات قدیمی و جدید و ساخت مصنوعات قدیمی و جدید اما به عنوان یک قاعده کلی شما می توانید انتظار برای مواجهه با این الگوها نقشه برداری:
اندیشه. پشتیبانی. * > androidx. @
اندیشه. داده ها اتصال. * androidx >. اتصال های داده. @
اندیشه. طراحی * > com. گوگل. اندیشه مواد. @
اندیشه. پشتیبانی. test. * androidx >. test. @
یکی دیگر از تغییرات مهم است که آثار AndroidX به روز رسانی مستقل، بنابراین شما به روز رسانی کتابخانه های AndroidX فردی در پروژه های خود، به جای داشتن وابستگی هر که یک بار تغییر قادر خواهید بود. کسانی که خسته کننده “همه com. اندیشه. پشتیبانی دقیق همان مشخصات نسخه استفاده از کتابخانه های باید” پیام های باید تبدیل به چیزی از گذشته!
با توجه به وبلاگ گوگل ما می توانیم بفهمیم موازی به روز رسانی به آندروید. پشتیبانی بسته بندی کتابخانه ها در طول مدت بازه زمانی پیش نمایش P اندیشه انتظار اما نسخه پایدار 28.0.0 می خواهد نسخه نهایی از ویژگی های بسته بندی به عنوان پشتیبانی آندروید. .
بدون در نظر گرفتن اینکه آیا شما حرکت به اندیشه Jetpack, با کتابخانه پشتیبانی چوب یا استفاده از ترکیبی از این دو، در نهایت شما باید تبدیل به جدید androidx. * فضای نام.
دو راه برای ایجاد تغییر به AndroidX وجود دارد:
ایجاد یک پروژه است که AndroidX را از جعبه
این نیاز به اضافه کردن زیر را به پروژه خود را gradle. ویژگیهای پرونده پشتیبانی می کند:
اندروید. useAndroidX = درست اندیشه-enableJetifier = درست Refactor
پروژه موجود آندروید 3.2 استودیو دارای قابلیت refactoring است که می توانید کد خود، منابع، بروز رسانی و پیکربندی Gradle دو مرجع AndroidX شی ء و کلاس. برای refactor پروژه خود را انتخاب کنید Refactor Refactor AndroidX > دو… از نوار ابزار اندیشه استودیو.
تا
بندی در حال حاضر ما در بررسی اطلاعیه Google i/o و چگونه با هم تداخل اجزای موجود با Jetpack اندیشه، ما در نهایت آماده برای پاسخ به سوال اصلی ما (ها)!
اندیشه Jetpack طول می کشد اجزای موجود پشتیبانی کتابخانه ترکیبی از آنها را با اجزاء معماری سال گذشته و چند اجزای جدید اضافه می کند. هیچ برنامه ای برای کنار گذاشتن کتابخانه پشتیبانی فقط رتبهدهی نشده است، اگر جزء از طریق پشتیبانی کتابخانه و اندیشه Jetpack, بنابراین شما هنوز هم می توانید انتخاب کنید که پیاده سازی استفاده از وجود دارد. با این حال، نسخه 28.0.0 نسخه آخرین آندروید پشتیبانی خواهد بود. پس از آن شما باید به حرکت androidx. * فضای نام.
هر گونه اطلاعیه Google i/o دیگر که شما را با سوالات بیشتر از جواب باقی مانده است؟ ما در نظرات زیر می دانم!