ProfileInstaller
| آخرین به روز رسانی | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
|---|---|---|---|---|
| 2 اکتبر 2024 | 1.4.1 | - | - | - |
اعلام وابستگی ها
برای افزودن وابستگی به ProfileInstaller، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven Google را بخوانید.
وابستگیهای مصنوعات مورد نیاز خود را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:
شیار
dependencies { implementation "androidx.profileinstaller:profileinstaller:1.4.1" }
کاتلین
dependencies { implementation("androidx.profileinstaller:profileinstaller:1.4.1") }
برای اطلاعات بیشتر درباره وابستگیها، به افزودن وابستگیهای ساخت نگاه کنید.
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه 1.4
نسخه 1.4.1
2 اکتبر 2024
androidx.profileinstaller:profileinstaller:1.4.1 منتشر شد. نسخه 1.4.1 شامل این commit ها است.
رفع اشکال
- پشتیبانی از ضبط چند فرآیندی Baseline Profile با سیگنال دهی متوالی چندین فرآیند. این راه حل نیاز به به روز رسانی به
androidx.benchmark:benchmark-macro:1.4.0-alpha02در ماژول نمایه macrobenchmark/baseline وandroidx.profileinstaller:profileinstaller:1.4.1در برنامه دارد. ( I0f519 , b/366231469 )
نسخه 1.4.0
18 سپتامبر 2024
androidx.profileinstaller:profileinstaller:1.4.0 منتشر شد. نسخه 1.4.0 حاوی این تعهدات است.
تغییرات مهم از 1.3.0
-
ProfileInstallerاکنون از گرفتن/نصب نمایه ها در API 35+ پشتیبانی می کند. بهروزرسانیProfileInstallerدیگر نباید برای بهروزرسانی نسخه پلتفرم مورد نیاز باشد. ( 6f9f6fa ) - رفع خرابی هنگام انداختن شیدرها در Android U (API 34) و همچنین شبیه سازها. ( I031ca , b/274314544 )
- روش رمزگذاری پرچم را در قالب نمایه
V_015Sبرطرف کنید. ( aosp/2906631 , aosp/2847740 )
نسخه 1.4.0-rc01
4 سپتامبر 2024
androidx.profileinstaller:profileinstaller:1.4.0-rc01 بدون تغییر نسبت به آخرین نسخه بتا منتشر شد. نسخه 1.4.0-rc01 حاوی این commit ها است.
نسخه 1.4.0-beta01
21 آگوست 2024
androidx.profileinstaller:profileinstaller:1.4.0-beta01 بدون هیچ تغییری نسبت به آخرین آلفا منتشر شد. نسخه 1.4.0-beta01 حاوی این تعهدات است.
نسخه 1.4.0-alpha02
7 آگوست 2024
androidx.profileinstaller:profileinstaller:1.4.0-alpha02 منتشر شد. نسخه 1.4.0-alpha02 حاوی این تعهدات است.
ویژگی های جدید
- پشتیبانی از api 35 به Profile Installer اضافه شد. ( 6f9f6fa )
رفع اشکال
- طرح دستی دسترسی به APIهای پلتفرم جدید حذف شد زیرا این به طور خودکار از طریق مدلسازی API هنگام استفاده از R8 با AGP 7.3 یا جدیدتر (مثلا R8 نسخه 3.3) و برای همه ساختها هنگام استفاده از AGP 8.1 یا بالاتر (به عنوان مثال D8 نسخه 8.1) اتفاق میافتد. به مشتریانی که از AGP استفاده نمیکنند، توصیه میشود به نسخه 8.1 یا بالاتر D8 بهروزرسانی کنند. برای جزئیات بیشتر به این مقاله مراجعه کنید. ( If6b4c , b/345472586 )
نسخه 1.4.0-alpha01
7 فوریه 2024
androidx.profileinstaller:profileinstaller:1.4.0-alpha01 منتشر شد. نسخه 1.4.0-alpha01 حاوی این commit ها است.
رفع اشکال
- کد خطا برای عدم تعبیه نمایه در تأیید کننده نمایه اضافه شد. ( Ifb109 , b/313928520 )
- رفع خرابی هنگام انداختن شیدرها در Android U (API 34) و همچنین شبیه سازها. ( I031ca , b/274314544 )
- پشتیبانی از Android U در نصب کننده پروفایل فعال شد. ( Iaf177 )
- نصب کننده نمایه ثابت در Android U به دلیل خالی نبودن نمایه فعلی هنگام شروع فرآیند، با مشکل مواجه شد. ( Ie3899 )
- روش رمزگذاری بیت مپ را در قالب نمایه
V_015Sبرطرف کنید. ( aosp/2906631 ) و ( aosp/2847740 )
نسخه 1.3
نسخه 1.3.1
3 مه 2023
androidx.profileinstaller:profileinstaller:1.3.1 منتشر شد. نسخه 1.3.1 حاوی این commit ها است.
رفع اشکال
- پشتیبانی فعال از Android U در نصب کننده پروفایل ( Iaf177 )
- نصب کننده نمایه ثابت در Android U به دلیل خالی نبودن نمایه فعلی هنگام شروع فرآیند، با مشکل مواجه شد. ( Ie3899 )
نسخه 1.3.0
22 مارس 2023
androidx.profileinstaller:profileinstaller:1.3.0 منتشر شد. نسخه 1.3.0 حاوی این commit ها است.
تغییرات مهم از 1.2.0
- رفع
NullPointerExceptionدرProfileInstallReceiver. ( b/243851384 ) - Api
ProfileVerifierاضافه شد تا از داخل برنامه بررسی کند که آیا نمایه خط پایه کامپایل شده، برنامه ریزی شده است یا وجود ندارد ( I263a4 ، b/246653809 ) - پخش پوسته جدیدی را اضافه می کند که Macrobenchmark را قادر می سازد تا داده های نمایه در حافظه را به طور کامل روی دیسک بچرخاند تا در تولید نمایه پایه گنجانده شود. این برای استفاده از کتابخانه macrobenchmark برای گرفتن پروفایل های پایه با
BaselineProfileRuleو ارزیابی عملکرد نمایه با استفاده ازCompilationMode.Partial(warmupIterations)لازم است. - یک کد تشخیصی برای تشخیص پروفایل های پایه فشرده شده اضافه شده است. نمایههای پایه فشرده را نمیتوان توسط Profileinstaller در ماکرو بنچمارکها یا در حال تولید نصب کرد و به دلیل سربار CPU، باید هنگام ساخت برنامهتان با بهروزرسانی به Studio/AGP Electric Eel یا
bundletoolنسخه1.13.1( I86413 ، b/261998144 ) از آنها اجتناب کرد. - قلابهایی برای ماکرو بنچمارک برای ضبط پروفایلها و حذف حافظه پنهان سایهزن، که برای تولید نمایههای پایه یا ماکرو بنچمارک در دستگاههای روت نشده ( Ie0a7d ، b/250083467 ، b/253094958 ) ( Ia5171 ، b/23 ) مورد نیاز است.
نسخه 1.3.0-rc01
8 مارس 2023
androidx.profileinstaller:profileinstaller:1.3.0-rc01 بدون هیچ تغییری از آخرین نسخه بتا منتشر شده است. نسخه 1.3.0-rc01 حاوی این commit ها است.
نسخه 1.3.0-beta01
8 فوریه 2023
androidx.profileinstaller:profileinstaller:1.3.0-beta01 منتشر شد. نسخه 1.3.0-beta01 حاوی این تعهدات است.
تغییرات API
- پشتیبانی از مدیریت پروفایل های فشرده را حذف می کند - باز کردن و فشرده سازی منجر به 10 ثانیه رگرسیون در استفاده از CPU در هنگام راه اندازی می شود، بنابراین به جای آن یک تشخیص برای کشف پروفایل های پایه به طور نادرست فشرده شده اضافه می شود. ( I86413 , b/261998144 )
نسخه 1.3.0-alpha03
11 ژانویه 2023
androidx.profileinstaller:profileinstaller:1.3.0-alpha03 منتشر شد. نسخه 1.3.0-alpha03 حاوی این commit ها است.
رفع اشکال
- مدیریت پروفایل های پایه فشرده یا غیرفشرده را فعال می کند ( Ic61a0 )
- با اصلاح رجیستری پخش در مانیفست profileinstaller ( I5c728 , b/258619948 )
MacrobenchmarkScope.dropShaderCache()برطرف کنید تا دیگر خراب نشود
نسخه 1.3.0-alpha02
9 نوامبر 2022
androidx.profileinstaller:profileinstaller:1.3.0-alpha02 منتشر شد. نسخه 1.3.0-alpha02 حاوی این commit ها است.
تغییرات API
- برای اطمینان از عملکرد ثابت برای راه اندازی سرد، به خصوص هنگام کامپایل کردن با نمایه های تکرارهای گرم کردن، یک قلاب برای معیارها برای حذف کش سایه زن اضافه شده است. این بهروزرسانی برای اندازهگیری استارتآپهای سرد با استفاده از
benchmark-macro-junit4:1.2.0-alpha05یا جدیدتر مورد نیاز است. برای تغییرات API کتابخانه معیار، لطفاً به صفحه Benchmark 1.2.0-alpha07 مراجعه کنید. ( Ia5171 , b/231455742 )
نسخه 1.3.0-alpha01
24 اکتبر 2022
androidx.profileinstaller:profileinstaller:1.3.0-alpha01 منتشر شد. نسخه 1.3.0-alpha01 حاوی این commit ها است.
تغییرات API
- Api
ProfileVerifierاضافه شد تا از داخل برنامه بررسی کند که آیا نمایه خط پایه کامپایل شده، برنامه ریزی شده است یا وجود ندارد ( I263a4 ، b/246653809 ) - پخش پوسته جدیدی را اضافه می کند که Macrobenchmark را قادر می سازد تا داده های نمایه در حافظه را به طور کامل روی دیسک بچرخاند تا در تولید نمایه پایه گنجانده شود. این برای استفاده از کتابخانه macrobenchmark برای گرفتن پروفایل های پایه با
BaselineProfileRuleو ارزیابی عملکرد نمایه با استفاده ازCompilationMode.Partial(warmupIterations)لازم است. ( Ie0a7d , b/250083467 , b/253094958 )
نسخه 1.2.2
نسخه 1.2.2
11 ژانویه 2023
androidx.profileinstaller:profileinstaller:1.2.2 منتشر شد. نسخه 1.2.2 حاوی این commit ها است.
رفع اشکال
- مدیریت پروفایل های پایه فشرده یا غیرفشرده را فعال می کند ( Ic61a0 )
نسخه 1.2.1
نسخه 1.2.1
7 دسامبر 2022
androidx.profileinstaller:profileinstaller:1.2.1 منتشر شد. نسخه 1.2.1 حاوی این commit ها است.
ویژگی های جدید
- Profileinstaller را برای S_V2 (API 32) و TIRAMISU (API 33) ( b/254900303 ) فعال کنید.
نسخه 1.2.0
نسخه 1.2.0
27 جولای 2022
androidx.profileinstaller:profileinstaller:1.2.0 منتشر شد. نسخه 1.2.0 حاوی این commit ها است.
تغییرات مهم از 1.1.0
- پشتیبانی از فرمت نمایه ART مورد استفاده در Android 12 و آینده اضافه شد.
- APIهای جدیدی را در
ProfileInstallReceiverاضافه کنید تا هنگام استفاده از نمایههای پایه، نتایج منسجمتری را باMacrobenchmarksدریافت کنید.
نسخه 1.2.0-rc01
15 ژوئن 2022
androidx.profileinstaller:profileinstaller:1.2.0-rc01 منتشر شد. نسخه 1.2.0-rc01 حاوی این commit ها است.
- این نسخه با
androidx.profileinstaller:profileinstaller:1.2.0-beta03یکسان است.
نسخه 1.2.0-beta03
1 ژوئن 2022
androidx.profileinstaller:profileinstaller:1.2.0-beta03 منتشر شد. نسخه 1.2.0-beta03 حاوی این تعهدات است.
نسخه 1.2.0-beta02
18 مه 2022
androidx.profileinstaller:profileinstaller:1.2.0-beta02 منتشر شد. نسخه 1.2.0-beta02 حاوی این تعهدات است.
- بدون تغییر، برای پشتیبانی از نسخه های Compose 1.2.0-beta02 لازم است.
نسخه 1.2.0-beta01
11 مه 2022
androidx.profileinstaller:profileinstaller:1.2.0-beta01 منتشر شد. نسخه 1.2.0-beta01 حاوی این تعهدات است.
تغییرات API
- APIهای جدیدی را در
ProfileInstallReceiverاضافه کنید تا هنگام استفاده از نمایههای پایه، نتایج منسجمتری را باMacrobenchmarksدریافت کنید. ( If2ae5 , b/215740637 )
رفع اشکال
- هنگام تلاش برای استفاده از فرمت فراداده
V_001در Android 12 و بالاتر، Profile Installer یک پیام مفید ارسال می کند. ( aosp/1978526 , b/217502387 ) - Profile Installer اکنون از
androidx.startupنسخه1.1.1استفاده می کند. ( aosp/2077099 , b/229828376 )
نسخه 1.2.0-alpha02
26 ژانویه 2022
androidx.profileinstaller:profileinstaller:1.2.0-alpha02 منتشر شد. نسخه 1.2.0-alpha02 حاوی این commit ها است.
این نسخه با 1.2.0-alpha01 یکسان است.
نسخه 1.2.0-alpha01
12 ژانویه 2022
androidx.profileinstaller:profileinstaller:1.2.0-alpha01 منتشر شد. نسخه 1.2.0-alpha01 حاوی این commit ها است.
ویژگی های جدید
- پشتیبانی از فرمت نمایه ART مورد استفاده در Android 12 و آینده را اضافه کنید.
نسخه 1.1.0
نسخه 1.1.0
9 فوریه 2022
androidx.profileinstaller:profileinstaller:1.1.0 منتشر شد. نسخه 1.1.0 حاوی این commit ها است.
نسخه 1.1.0-rc01
15 دسامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-rc01 بدون به روز رسانی از 1.1.0-beta04 منتشر شده است. نسخه 1.1.0-rc01 حاوی این commit ها است.
نسخه 1.1.0-beta04
1 دسامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta04 منتشر شد. نسخه 1.1.0-beta04 حاوی این تعهدات است.
نسخه 1.1.0-beta03
17 نوامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta03 منتشر شد. نسخه 1.1.0-beta03 حاوی این تعهدات است.
رفع اشکال
- برای پشتیبانی از Compose 1.1.0-beta03 به روز شد
نسخه 1.1.0-beta02
3 نوامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta02 منتشر شد. نسخه 1.1.0-beta02 حاوی این تعهدات است.
رفع اشکال
- برای پشتیبانی از Compose 1.1.0-beta02 به روز شد
نسخه 1.1.0-beta01
27 اکتبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta01 منتشر شد. نسخه 1.1.0-beta01 حاوی این تعهدات است.
- هیچ تغییری از 1.1.0-alpha07 وجود ندارد.
نسخه 1.1.0-alpha07
13 اکتبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha07 منتشر شد. نسخه 1.1.0-alpha07 حاوی این commit ها است.
ویژگی های جدید
- اضافه شدن پشتیبانی از profm در اندروید N
نسخه 1.1.0-alpha06
29 سپتامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha06 منتشر شد. نسخه 1.1.0-alpha06 حاوی این commit ها است.
رفع اشکال
- مشکلات رمزگذاری نصب کننده پروفایل را در N، O، و O_MR1 برطرف کنید. ( I12d75 )
نسخه 1.1.0-alpha05
15 سپتامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha05 منتشر شد. نسخه 1.1.0-alpha05 حاوی این commit ها است.
رفع اشکال
- رمزگذاری پروفایل اندروید نوقا و اندروید اوریو برای apk های مولتی دکس رفع شد.
نسخه 1.1.0-alpha04
1 سپتامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha04 منتشر شد. نسخه 1.1.0-alpha04 حاوی این commit ها است.
رفع اشکال
-
ProfileInstallerرفع کنید تا برنامههایی که از نمایههای خط پایه استفاده میکنند، سادهتر شود تا MacroBenchmarks را با استفاده ازCompilationMode.BaselineProfileاجرا کنند. ( I42657 , b/196074999 )
نسخه 1.1.0-alpha03
18 آگوست 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha03 منتشر شد. نسخه 1.1.0-alpha03 حاوی این commit ها است.
رفع اشکال
- رفتار پرش profileinstaller را تغییر دهید تا PackageInfo.lastUpdatedTime را در فایلی در فهرست فایل های برنامه ثبت کنید و قبل از نصب نمایه در اجرای بعدی، آن را مقایسه کنید. ( Ib93d1 )
- فرمت نمایه را در دستگاههای P، Q، R تنظیم کنید تا با الزامات ART مطابقت داشته باشد ( I84e89 )
نسخه 1.1.0-alpha02
4 آگوست 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha02 منتشر شد. نسخه 1.1.0-alpha02 حاوی این commit ها است.
به روز شده تا با Compose 1.1.0-alpha01 سازگار باشد.
نسخه 1.1.0-alpha01
21 جولای 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha01 منتشر شد. نسخه 1.1.0-alpha01 حاوی این commit ها است.
رفع اشکال
- رفع اشکالی که در برخی شرایط باعث ایجاد حالت سختگیرانه میشود.
نسخه 1.0
نسخه 1.0.4
13 اکتبر 2021
androidx.profileinstaller:profileinstaller:1.0.4 منتشر شد. نسخه 1.0.4 حاوی این commit ها است.
- برای پشتیبانی از Compose 1.0.4 به روز شد
نسخه 1.0.3
29 سپتامبر 2021
androidx.profileinstaller:profileinstaller:1.0.3 منتشر شد. نسخه 1.0.3 حاوی این commit ها است.
- برای پشتیبانی از Compose 1.0.3 به روز شد
نسخه 1.0.2
1 سپتامبر 2021
androidx.profileinstaller:profileinstaller:1.0.2 منتشر شد. نسخه 1.0.2 حاوی این commit ها است.
رفع اشکال
- رمزگذاری پروفایل برای دستگاه های P، Q، R اضافه شده است. این تغییر به این معنی است که این دستگاهها نمایه را رمزگذاری میکنند و اطمینان حاصل میکنند که نمایه نوشته شده همیشه توسط ART قابل استفاده است. ترانکودینگ قبلی در این پلتفرمها نادیده گرفته میشد، که گاهی باعث میشود ART نتواند نمایه منبع را پردازش کند. هیچ تغییری در API های توسعه دهنده وجود ندارد.
نسخه 1.0.1
4 آگوست 2021
androidx.profileinstaller:profileinstaller:1.0.1 منتشر شد. نسخه 1.0.1 حاوی این commit ها است.
به روز شد تا با Compose 1.0.1 سازگار باشد.
نسخه 1.0.0
28 جولای 2021
androidx.profileinstaller:profileinstaller:1.0.0 منتشر شد. نسخه 1.0.0 حاوی این commit ها است.
ویژگی های اصلی 1.0.0
Profile installer یک کتابخانه جدید است که به کتابخانهها و برنامهها اجازه میدهد «قوانین نمایه» را تعریف کنند و اطلاعات نمایه ART را با یک APK بستهبندی کنند و این کتابخانه آن پروفایلها را پس از راهاندازی برنامه نصب میکند. این می تواند برای بهبود عملکرد برنامه استفاده شود.
لطفاً یادداشتهای انتشار دقیق را در 1.0.0-beta01 برای اطلاعات بیشتر در مورد اینکه این قوانین نمایه چیست و چگونه کار میکنند، ببینید.
نسخه 1.0.0-rc02
14 جولای 2021
androidx.profileinstaller:profileinstaller:1.0.0-rc02 منتشر شد. نسخه 1.0.0-rc02 حاوی این commit ها است.
نسخه 1.0.0-rc01
1 ژوئیه 2021
androidx.profileinstaller:profileinstaller:1.0.0-rc01 منتشر شد. نسخه 1.0.0-rc01 حاوی این commit ها است.
این نسخه RC بدون تغییر نسبت به نسخه بتا است.
نسخه 1.0.0-beta01
16 ژوئن 2021
androidx.profileinstaller:profileinstaller:1.0.0-beta01 منتشر شد. نسخه 1.0.0-beta01 حاوی این تعهدات است.
هدف کتابخانه
Profile installer یک کتابخانه جدید است که به کتابخانهها و برنامهها اجازه میدهد «قوانین نمایه» را تعریف کنند و اطلاعات نمایه ART را با یک APK بستهبندی کنند و این کتابخانه آن پروفایلها را پس از راهاندازی برنامه نصب میکند. این می تواند برای بهبود عملکرد برنامه استفاده شود.
این نصب پروفایل با کتابخانه androidx.startup انجام می شود. اگر به هر دلیلی میخواهید نصب نمایه را غیرفعال کنید، میتوانید مانیفست را برای حذف آن تغییر دهید:
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data android:name="androidx.profileinstaller.ProfileInstallerInitializer"
tools:node="remove" />
</provider>
این به ویژه در صورتی مفید است که برنامه شما نیازهای راه اندازی غیر ضروری داشته باشد و بخواهید نصب نمایه را به صورت دستی با استفاده از ProfileInstaller.writeProfile API فعال کنید.
قوانین پروفایل چیست؟
قوانین نمایه برای یک کتابخانه در یک فایل متنی
baseline-prof.txtدر دایرکتوریsrc/mainیا معادل آن مشخص شده است. فایل در هر خط یک قانون را مشخص میکند، که در این مورد یک قانون الگویی برای تطبیق با متدها یا کلاسهای موجود در کتابخانه است. سینتکس این قوانین یک ابرمجموعه از فرمت نمایه ART قابل خواندن برای انسان است که هنگام استفاده ازadb shell profman --dump-classes-and-methods ...استفاده می شود. این قوانین یکی از دو شکل را برای هدف قرار دادن متدها یا کلاس ها دارند.یک قانون متد دارای الگوی زیر خواهد بود:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>و یک قانون کلاس الگوی زیر را خواهد داشت:
<CLASS_DESCRIPTOR>در اینجا
<FLAGS>یک یا چند کاراکترH,SوPاست تا نشان دهد که آیا این روش باید به عنوان "Hot"، "Startup" یا "Post Startup" پرچم گذاری شود یا خیر.<CLASS_DESCRIPTOR>توصیفگر کلاسی است که متد هدفمند به آن تعلق دارد. به عنوان مثال، کلاسandroidx.compose.runtime.SlotTableیک توصیف کننده ازLandroidx/compose/runtime/SlotTable;.<METHOD_SIGNATURE>امضای متد است و شامل نام، انواع پارامتر و انواع برگشتی متد است. به عنوان مثال، متدfun isPlaced(): BooleanدرLayoutNodeدارای امضایisPlaced()Zاست.این الگوها می توانند دارای حروف عام (
**,*و?) باشند تا یک قانون واحد شامل چندین روش یا کلاس باشد.
قوانین چه کار می کنند؟
متدی که دارای پرچم
Hاست نشان میدهد که این روش یک روش داغ است و باید زودتر از موعد کامپایل شود.روشی که دارای پرچم
Sاست نشان می دهد که روشی است که در هنگام راه اندازی فراخوانی می شود و باید زودتر از موعد کامپایل شود تا از هزینه کامپایل و تفسیر روش در زمان راه اندازی جلوگیری شود.متدی که دارای پرچم
Pاست نشان می دهد که متدی است که پس از راه اندازی فراخوانی می شود.کلاسی که در این فایل وجود دارد نشان میدهد که در هنگام راهاندازی استفاده میشود و باید از قبل در پشته تخصیص داده شود تا از هزینه بارگذاری کلاس جلوگیری شود.
این چگونه کار می کند؟
کتابخانه ها می توانند این قوانین را که در مصنوعات AAR بسته بندی می شوند، تعریف کنند. هنگامی که یک APK ساخته می شود که شامل این مصنوعات است، این قوانین با هم ادغام می شوند و قوانین ادغام شده برای ساختن یک نمایه ART باینری فشرده که مخصوص APK است استفاده می شود. سپس ART میتواند از این نمایه زمانی که APK بر روی دستگاهها نصب میشود به منظور کامپایل کردن زیرمجموعه خاصی از برنامه برای بهبود عملکرد برنامه، بهویژه اولین اجرا، استفاده کند. توجه داشته باشید که این هیچ تاثیری بر برنامه های قابل اشکال زدایی نخواهد داشت.
فایل های قانون باید
baseline-prof.txtنامیده شوند و در دایرکتوری اصلی مجموعه منبع اصلی شما قرار گیرند (این فایل باید یک فایل برادر یا برادر فایلAndroidManifset.xmlشما باشد)در حال حاضر این فایلها فقط در صورتی استفاده میشوند که از افزونه Android Gradle نسخه 7.0 و بالاتر استفاده میکنید، و در حال حاضر فقط با یک پرچم در
gradle.propertiesشما فعال هستند:# Enable adding baseline-prof.txt files to AAR artifacts, and binary profiles to APKs android.experimental.enableArtProfiles=true
نمایه ها نیاز به تعادل دارند
- پروفایل هایی که به درستی ساخته شده و روش ها و کلاس هایی را که در مسیر راه اندازی و عملکرد حیاتی هستند اولویت بندی می کنند، بهترین نتایج را به همراه خواهند داشت، با این حال گنجاندن روش ها یا کلاس های زیاد در پروفایل ها می تواند تأثیر منفی خالصی در مصرف حافظه و استفاده از دیسک داشته باشد. ، بنابراین توصیه می شود در صورت تعریف قوانین نمایه خود، محافظه کارانه شروع کنید.
ProfileInstaller
| آخرین به روز رسانی | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
|---|---|---|---|---|
| 2 اکتبر 2024 | 1.4.1 | - | - | - |
اعلام وابستگی ها
برای افزودن وابستگی به ProfileInstaller، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven Google را بخوانید.
وابستگیهای مصنوعات مورد نیاز خود را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:
شیار
dependencies { implementation "androidx.profileinstaller:profileinstaller:1.4.1" }
کاتلین
dependencies { implementation("androidx.profileinstaller:profileinstaller:1.4.1") }
برای اطلاعات بیشتر درباره وابستگیها، به افزودن وابستگیهای ساخت نگاه کنید.
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه 1.4
نسخه 1.4.1
2 اکتبر 2024
androidx.profileinstaller:profileinstaller:1.4.1 منتشر شد. نسخه 1.4.1 شامل این commit ها است.
رفع اشکال
- پشتیبانی از ضبط چند فرآیندی Baseline Profile با سیگنال دهی متوالی چندین فرآیند. این راه حل نیاز به به روز رسانی به
androidx.benchmark:benchmark-macro:1.4.0-alpha02در ماژول نمایه macrobenchmark/baseline وandroidx.profileinstaller:profileinstaller:1.4.1در برنامه دارد. ( I0f519 , b/366231469 )
نسخه 1.4.0
18 سپتامبر 2024
androidx.profileinstaller:profileinstaller:1.4.0 منتشر شد. نسخه 1.4.0 حاوی این تعهدات است.
تغییرات مهم از 1.3.0
-
ProfileInstallerاکنون از گرفتن/نصب نمایه ها در API 35+ پشتیبانی می کند. بهروزرسانیProfileInstallerدیگر نباید برای بهروزرسانی نسخه پلتفرم مورد نیاز باشد. ( 6f9f6fa ) - رفع خرابی هنگام انداختن شیدرها در Android U (API 34) و همچنین شبیه سازها. ( I031ca , b/274314544 )
- روش رمزگذاری پرچم را در قالب نمایه
V_015Sبرطرف کنید. ( aosp/2906631 , aosp/2847740 )
نسخه 1.4.0-rc01
4 سپتامبر 2024
androidx.profileinstaller:profileinstaller:1.4.0-rc01 بدون تغییر نسبت به آخرین نسخه بتا منتشر شد. نسخه 1.4.0-rc01 حاوی این commit ها است.
نسخه 1.4.0-beta01
21 آگوست 2024
androidx.profileinstaller:profileinstaller:1.4.0-beta01 بدون هیچ تغییری نسبت به آخرین آلفا منتشر شد. نسخه 1.4.0-beta01 حاوی این تعهدات است.
نسخه 1.4.0-alpha02
7 آگوست 2024
androidx.profileinstaller:profileinstaller:1.4.0-alpha02 منتشر شد. نسخه 1.4.0-alpha02 حاوی این تعهدات است.
ویژگی های جدید
- پشتیبانی از api 35 به Profile Installer اضافه شد. ( 6f9f6fa )
رفع اشکال
- طرح دستی دسترسی به APIهای پلتفرم جدید حذف شد زیرا این به طور خودکار از طریق مدلسازی API هنگام استفاده از R8 با AGP 7.3 یا جدیدتر (مثلا R8 نسخه 3.3) و برای همه ساختها هنگام استفاده از AGP 8.1 یا بالاتر (به عنوان مثال D8 نسخه 8.1) اتفاق میافتد. به مشتریانی که از AGP استفاده نمیکنند، توصیه میشود به نسخه 8.1 یا بالاتر D8 بهروزرسانی کنند. برای جزئیات بیشتر به این مقاله مراجعه کنید. ( If6b4c , b/345472586 )
نسخه 1.4.0-alpha01
7 فوریه 2024
androidx.profileinstaller:profileinstaller:1.4.0-alpha01 منتشر شد. نسخه 1.4.0-alpha01 حاوی این commit ها است.
رفع اشکال
- کد خطا برای عدم تعبیه نمایه در تأیید کننده نمایه اضافه شد. ( Ifb109 , b/313928520 )
- رفع خرابی هنگام انداختن شیدرها در Android U (API 34) و همچنین شبیه سازها. ( I031ca , b/274314544 )
- پشتیبانی از Android U در نصب کننده پروفایل فعال شد. ( Iaf177 )
- نصب کننده نمایه ثابت در Android U به دلیل خالی نبودن نمایه فعلی هنگام شروع فرآیند، با مشکل مواجه شد. ( Ie3899 )
- روش رمزگذاری بیت مپ را در قالب نمایه
V_015Sبرطرف کنید. ( aosp/2906631 ) و ( aosp/2847740 )
نسخه 1.3
نسخه 1.3.1
3 مه 2023
androidx.profileinstaller:profileinstaller:1.3.1 منتشر شد. نسخه 1.3.1 حاوی این commit ها است.
رفع اشکال
- پشتیبانی فعال از Android U در نصب کننده پروفایل ( Iaf177 )
- نصب کننده نمایه ثابت در Android U به دلیل خالی نبودن نمایه فعلی هنگام شروع فرآیند، با مشکل مواجه شد. ( Ie3899 )
نسخه 1.3.0
22 مارس 2023
androidx.profileinstaller:profileinstaller:1.3.0 منتشر شد. نسخه 1.3.0 حاوی این commit ها است.
تغییرات مهم از 1.2.0
- رفع
NullPointerExceptionدرProfileInstallReceiver. ( b/243851384 ) - Api
ProfileVerifierاضافه شد تا از داخل برنامه بررسی کند که آیا نمایه خط پایه کامپایل شده، برنامه ریزی شده است یا وجود ندارد ( I263a4 ، b/246653809 ) - پخش پوسته جدیدی را اضافه می کند که Macrobenchmark را قادر می سازد تا داده های نمایه در حافظه را به طور کامل روی دیسک بچرخاند تا در تولید نمایه پایه گنجانده شود. این برای استفاده از کتابخانه macrobenchmark برای گرفتن پروفایل های پایه با
BaselineProfileRuleو ارزیابی عملکرد نمایه با استفاده ازCompilationMode.Partial(warmupIterations)لازم است. - یک کد تشخیصی برای تشخیص پروفایل های پایه فشرده شده اضافه شده است. نمایههای پایه فشرده را نمیتوان توسط Profileinstaller در ماکرو بنچمارکها یا در حال تولید نصب کرد و به دلیل سربار CPU، باید هنگام ساخت برنامهتان با بهروزرسانی به Studio/AGP Electric Eel یا
bundletoolنسخه1.13.1( I86413 ، b/261998144 ) از آنها اجتناب کرد. - قلابهایی برای ماکرو بنچمارک برای ضبط پروفایلها و حذف حافظه پنهان سایهزن، که برای تولید نمایههای پایه یا ماکرو بنچمارک در دستگاههای روت نشده ( Ie0a7d ، b/250083467 ، b/253094958 ) ( Ia5171 ، b/23 ) مورد نیاز است.
نسخه 1.3.0-rc01
8 مارس 2023
androidx.profileinstaller:profileinstaller:1.3.0-rc01 بدون هیچ تغییری از آخرین نسخه بتا منتشر شده است. نسخه 1.3.0-rc01 حاوی این commit ها است.
نسخه 1.3.0-beta01
8 فوریه 2023
androidx.profileinstaller:profileinstaller:1.3.0-beta01 منتشر شد. نسخه 1.3.0-beta01 حاوی این تعهدات است.
تغییرات API
- پشتیبانی از مدیریت پروفایل های فشرده را حذف می کند - باز کردن و فشرده سازی منجر به 10 ثانیه رگرسیون در استفاده از CPU در هنگام راه اندازی می شود، بنابراین به جای آن یک تشخیص برای کشف پروفایل های پایه به طور نادرست فشرده شده اضافه می شود. ( I86413 , b/261998144 )
نسخه 1.3.0-alpha03
11 ژانویه 2023
androidx.profileinstaller:profileinstaller:1.3.0-alpha03 منتشر شد. نسخه 1.3.0-alpha03 حاوی این commit ها است.
رفع اشکال
- مدیریت پروفایل های پایه فشرده یا غیرفشرده را فعال می کند ( Ic61a0 )
- با اصلاح رجیستری پخش در مانیفست profileinstaller ( I5c728 , b/258619948 )
MacrobenchmarkScope.dropShaderCache()برطرف کنید تا دیگر خراب نشود
نسخه 1.3.0-alpha02
9 نوامبر 2022
androidx.profileinstaller:profileinstaller:1.3.0-alpha02 منتشر شد. نسخه 1.3.0-alpha02 حاوی این commit ها است.
تغییرات API
- برای اطمینان از عملکرد ثابت برای راه اندازی سرد، به خصوص هنگام کامپایل کردن با نمایه های تکرارهای گرم کردن، یک قلاب برای معیارها برای حذف کش سایه زن اضافه شده است. این بهروزرسانی برای اندازهگیری استارتآپهای سرد با استفاده از
benchmark-macro-junit4:1.2.0-alpha05یا جدیدتر مورد نیاز است. برای تغییرات API کتابخانه معیار، لطفاً به صفحه Benchmark 1.2.0-alpha07 مراجعه کنید. ( Ia5171 , b/231455742 )
نسخه 1.3.0-alpha01
24 اکتبر 2022
androidx.profileinstaller:profileinstaller:1.3.0-alpha01 منتشر شد. نسخه 1.3.0-alpha01 حاوی این commit ها است.
تغییرات API
- Api
ProfileVerifierاضافه شد تا از داخل برنامه بررسی کند که آیا نمایه خط پایه کامپایل شده، برنامه ریزی شده است یا وجود ندارد ( I263a4 ، b/246653809 ) - پخش پوسته جدیدی را اضافه می کند که Macrobenchmark را قادر می سازد تا داده های نمایه در حافظه را به طور کامل روی دیسک بچرخاند تا در تولید نمایه پایه گنجانده شود. این برای استفاده از کتابخانه macrobenchmark برای گرفتن پروفایل های پایه با
BaselineProfileRuleو ارزیابی عملکرد نمایه با استفاده ازCompilationMode.Partial(warmupIterations)لازم است. ( Ie0a7d , b/250083467 , b/253094958 )
نسخه 1.2.2
نسخه 1.2.2
11 ژانویه 2023
androidx.profileinstaller:profileinstaller:1.2.2 منتشر شد. نسخه 1.2.2 حاوی این commit ها است.
رفع اشکال
- مدیریت پروفایل های پایه فشرده یا غیرفشرده را فعال می کند ( Ic61a0 )
نسخه 1.2.1
نسخه 1.2.1
7 دسامبر 2022
androidx.profileinstaller:profileinstaller:1.2.1 منتشر شد. نسخه 1.2.1 حاوی این commit ها است.
ویژگی های جدید
- Profileinstaller را برای S_V2 (API 32) و TIRAMISU (API 33) ( b/254900303 ) فعال کنید.
نسخه 1.2.0
نسخه 1.2.0
27 جولای 2022
androidx.profileinstaller:profileinstaller:1.2.0 منتشر شد. نسخه 1.2.0 حاوی این commit ها است.
تغییرات مهم از 1.1.0
- پشتیبانی از فرمت نمایه ART مورد استفاده در Android 12 و آینده اضافه شد.
- APIهای جدیدی را در
ProfileInstallReceiverاضافه کنید تا هنگام استفاده از نمایههای پایه، نتایج منسجمتری را باMacrobenchmarksدریافت کنید.
نسخه 1.2.0-rc01
15 ژوئن 2022
androidx.profileinstaller:profileinstaller:1.2.0-rc01 منتشر شد. نسخه 1.2.0-rc01 حاوی این commit ها است.
- این نسخه با
androidx.profileinstaller:profileinstaller:1.2.0-beta03یکسان است.
نسخه 1.2.0-beta03
1 ژوئن 2022
androidx.profileinstaller:profileinstaller:1.2.0-beta03 منتشر شد. نسخه 1.2.0-beta03 حاوی این تعهدات است.
نسخه 1.2.0-beta02
18 مه 2022
androidx.profileinstaller:profileinstaller:1.2.0-beta02 منتشر شد. نسخه 1.2.0-beta02 حاوی این تعهدات است.
- بدون تغییر، برای پشتیبانی از نسخه های Compose 1.2.0-beta02 لازم است.
نسخه 1.2.0-beta01
11 مه 2022
androidx.profileinstaller:profileinstaller:1.2.0-beta01 منتشر شد. نسخه 1.2.0-beta01 حاوی این تعهدات است.
تغییرات API
- APIهای جدیدی را در
ProfileInstallReceiverاضافه کنید تا هنگام استفاده از نمایههای پایه، نتایج منسجمتری را باMacrobenchmarksدریافت کنید. ( If2ae5 , b/215740637 )
رفع اشکال
- هنگام تلاش برای استفاده از فرمت فراداده
V_001در Android 12 و بالاتر، Profile Installer یک پیام مفید ارسال می کند. ( aosp/1978526 , b/217502387 ) - Profile Installer اکنون از
androidx.startupنسخه1.1.1استفاده می کند. ( aosp/2077099 , b/229828376 )
نسخه 1.2.0-alpha02
26 ژانویه 2022
androidx.profileinstaller:profileinstaller:1.2.0-alpha02 منتشر شد. نسخه 1.2.0-alpha02 حاوی این commit ها است.
این نسخه با 1.2.0-alpha01 یکسان است.
نسخه 1.2.0-alpha01
12 ژانویه 2022
androidx.profileinstaller:profileinstaller:1.2.0-alpha01 منتشر شد. نسخه 1.2.0-alpha01 حاوی این commit ها است.
ویژگی های جدید
- پشتیبانی از فرمت نمایه ART مورد استفاده در Android 12 و آینده را اضافه کنید.
نسخه 1.1.0
نسخه 1.1.0
9 فوریه 2022
androidx.profileinstaller:profileinstaller:1.1.0 منتشر شد. نسخه 1.1.0 حاوی این commit ها است.
نسخه 1.1.0-rc01
15 دسامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-rc01 بدون به روز رسانی از 1.1.0-beta04 منتشر شده است. نسخه 1.1.0-rc01 حاوی این commit ها است.
نسخه 1.1.0-beta04
1 دسامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta04 منتشر شد. نسخه 1.1.0-beta04 حاوی این تعهدات است.
نسخه 1.1.0-beta03
17 نوامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta03 منتشر شد. نسخه 1.1.0-beta03 حاوی این تعهدات است.
رفع اشکال
- برای پشتیبانی از Compose 1.1.0-beta03 به روز شد
نسخه 1.1.0-beta02
3 نوامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta02 منتشر شد. نسخه 1.1.0-beta02 حاوی این تعهدات است.
رفع اشکال
- برای پشتیبانی از Compose 1.1.0-beta02 به روز شد
نسخه 1.1.0-beta01
27 اکتبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta01 منتشر شد. نسخه 1.1.0-beta01 حاوی این تعهدات است.
- هیچ تغییری از 1.1.0-alpha07 وجود ندارد.
نسخه 1.1.0-alpha07
13 اکتبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha07 منتشر شد. نسخه 1.1.0-alpha07 حاوی این commit ها است.
ویژگی های جدید
- اضافه شدن پشتیبانی از profm در اندروید N
نسخه 1.1.0-alpha06
29 سپتامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha06 منتشر شد. نسخه 1.1.0-alpha06 حاوی این commit ها است.
رفع اشکال
- مشکلات رمزگذاری نصب کننده پروفایل را در N، O، و O_MR1 برطرف کنید. ( I12d75 )
نسخه 1.1.0-alpha05
15 سپتامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha05 منتشر شد. نسخه 1.1.0-alpha05 حاوی این commit ها است.
رفع اشکال
- رمزگذاری پروفایل اندروید نوقا و اندروید اوریو برای apk های مولتی دکس رفع شد.
نسخه 1.1.0-alpha04
1 سپتامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha04 منتشر شد. نسخه 1.1.0-alpha04 حاوی این commit ها است.
رفع اشکال
-
ProfileInstallerرفع کنید تا برنامههایی که از نمایههای خط پایه استفاده میکنند، سادهتر شود تا MacroBenchmarks را با استفاده ازCompilationMode.BaselineProfileاجرا کنند. ( I42657 , b/196074999 )
نسخه 1.1.0-alpha03
18 آگوست 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha03 منتشر شد. نسخه 1.1.0-alpha03 حاوی این commit ها است.
رفع اشکال
- رفتار پرش profileinstaller را تغییر دهید تا PackageInfo.lastUpdatedTime را در فایلی در فهرست فایل های برنامه ثبت کنید و قبل از نصب نمایه در اجرای بعدی، آن را مقایسه کنید. ( Ib93d1 )
- فرمت نمایه را در دستگاههای P، Q، R تنظیم کنید تا با الزامات ART مطابقت داشته باشد ( I84e89 )
نسخه 1.1.0-alpha02
4 آگوست 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha02 منتشر شد. نسخه 1.1.0-alpha02 حاوی این commit ها است.
به روز شده تا با Compose 1.1.0-alpha01 سازگار باشد.
نسخه 1.1.0-alpha01
21 جولای 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha01 منتشر شد. نسخه 1.1.0-alpha01 حاوی این commit ها است.
رفع اشکال
- رفع اشکالی که در برخی شرایط باعث ایجاد حالت سختگیرانه میشود.
نسخه 1.0
نسخه 1.0.4
13 اکتبر 2021
androidx.profileinstaller:profileinstaller:1.0.4 منتشر شد. نسخه 1.0.4 حاوی این commit ها است.
- برای پشتیبانی از Compose 1.0.4 به روز شد
نسخه 1.0.3
29 سپتامبر 2021
androidx.profileinstaller:profileinstaller:1.0.3 منتشر شد. نسخه 1.0.3 حاوی این commit ها است.
- برای پشتیبانی از Compose 1.0.3 به روز شد
نسخه 1.0.2
1 سپتامبر 2021
androidx.profileinstaller:profileinstaller:1.0.2 منتشر شد. نسخه 1.0.2 حاوی این commit ها است.
رفع اشکال
- رمزگذاری پروفایل برای دستگاه های P، Q، R اضافه شده است. این تغییر به این معنی است که این دستگاهها نمایه را رمزگذاری میکنند و اطمینان حاصل میکنند که نمایه نوشته شده همیشه توسط ART قابل استفاده است. ترانکودینگ قبلی در این پلتفرمها نادیده گرفته میشد، که گاهی باعث میشود ART نتواند نمایه منبع را پردازش کند. هیچ تغییری در API های توسعه دهنده وجود ندارد.
نسخه 1.0.1
4 آگوست 2021
androidx.profileinstaller:profileinstaller:1.0.1 منتشر شد. نسخه 1.0.1 حاوی این commit ها است.
به روز شد تا با Compose 1.0.1 سازگار باشد.
نسخه 1.0.0
28 جولای 2021
androidx.profileinstaller:profileinstaller:1.0.0 منتشر شد. نسخه 1.0.0 حاوی این commit ها است.
ویژگی های اصلی 1.0.0
Profile installer یک کتابخانه جدید است که به کتابخانهها و برنامهها اجازه میدهد «قوانین نمایه» را تعریف کنند و اطلاعات نمایه ART را با یک APK بستهبندی کنند و این کتابخانه آن پروفایلها را پس از راهاندازی برنامه نصب میکند. این می تواند برای بهبود عملکرد برنامه استفاده شود.
لطفاً یادداشتهای انتشار دقیق را در 1.0.0-beta01 برای اطلاعات بیشتر در مورد اینکه این قوانین نمایه چیست و چگونه کار میکنند، ببینید.
نسخه 1.0.0-rc02
14 جولای 2021
androidx.profileinstaller:profileinstaller:1.0.0-rc02 منتشر شد. نسخه 1.0.0-rc02 حاوی این commit ها است.
نسخه 1.0.0-rc01
1 ژوئیه 2021
androidx.profileinstaller:profileinstaller:1.0.0-rc01 منتشر شد. نسخه 1.0.0-rc01 حاوی این commit ها است.
این نسخه RC بدون تغییر نسبت به نسخه بتا است.
نسخه 1.0.0-beta01
16 ژوئن 2021
androidx.profileinstaller:profileinstaller:1.0.0-beta01 منتشر شد. نسخه 1.0.0-beta01 حاوی این تعهدات است.
هدف کتابخانه
Profile installer یک کتابخانه جدید است که به کتابخانهها و برنامهها اجازه میدهد «قوانین نمایه» را تعریف کنند و اطلاعات نمایه ART را با یک APK بستهبندی کنند و این کتابخانه آن پروفایلها را پس از راهاندازی برنامه نصب میکند. این می تواند برای بهبود عملکرد برنامه استفاده شود.
این نصب پروفایل با کتابخانه androidx.startup انجام می شود. اگر به هر دلیلی میخواهید نصب نمایه را غیرفعال کنید، میتوانید مانیفست را برای حذف آن تغییر دهید:
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data android:name="androidx.profileinstaller.ProfileInstallerInitializer"
tools:node="remove" />
</provider>
این به ویژه در صورتی مفید است که برنامه شما نیازهای راه اندازی غیر ضروری داشته باشد و بخواهید نصب نمایه را به صورت دستی با استفاده از ProfileInstaller.writeProfile API فعال کنید.
قوانین پروفایل چیست؟
قوانین نمایه برای یک کتابخانه در یک فایل متنی
baseline-prof.txtدر دایرکتوریsrc/mainیا معادل آن مشخص شده است. فایل در هر خط یک قانون را مشخص میکند، که در این مورد یک قانون الگویی برای تطبیق با متدها یا کلاسهای موجود در کتابخانه است. سینتکس این قوانین یک ابرمجموعه از فرمت نمایه ART قابل خواندن برای انسان است که هنگام استفاده ازadb shell profman --dump-classes-and-methods ...استفاده می شود. این قوانین یکی از دو شکل را برای هدف قرار دادن متدها یا کلاس ها دارند.یک قانون متد دارای الگوی زیر خواهد بود:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>و یک قانون کلاس الگوی زیر را خواهد داشت:
<CLASS_DESCRIPTOR>در اینجا
<FLAGS>یک یا چند کاراکترH,SوPاست تا نشان دهد که آیا این روش باید به عنوان "Hot"، "Startup" یا "Post Startup" پرچم گذاری شود یا خیر.<CLASS_DESCRIPTOR>توصیفگر کلاسی است که متد هدفمند به آن تعلق دارد. به عنوان مثال، کلاسandroidx.compose.runtime.SlotTableیک توصیف کننده ازLandroidx/compose/runtime/SlotTable;.<METHOD_SIGNATURE>امضای متد است و شامل نام، انواع پارامتر و انواع برگشتی متد است. به عنوان مثال، متدfun isPlaced(): BooleanدرLayoutNodeدارای امضایisPlaced()Zاست.این الگوها می توانند دارای حروف عام (
**,*و?) باشند تا یک قانون واحد شامل چندین روش یا کلاس باشد.
قوانین چه کار می کنند؟
متدی که دارای پرچم
Hاست نشان میدهد که این روش یک روش داغ است و باید زودتر از موعد کامپایل شود.روشی که دارای پرچم
Sاست نشان می دهد که روشی است که در هنگام راه اندازی فراخوانی می شود و باید زودتر از موعد کامپایل شود تا از هزینه کامپایل و تفسیر روش در زمان راه اندازی جلوگیری شود.متدی که دارای پرچم
Pاست نشان می دهد که متدی است که پس از راه اندازی فراخوانی می شود.کلاسی که در این فایل وجود دارد نشان میدهد که در هنگام راهاندازی استفاده میشود و باید از قبل در پشته تخصیص داده شود تا از هزینه بارگذاری کلاس جلوگیری شود.
این چگونه کار می کند؟
کتابخانه ها می توانند این قوانین را که در مصنوعات AAR بسته بندی می شوند، تعریف کنند. هنگامی که یک APK ساخته می شود که شامل این مصنوعات است، این قوانین با هم ادغام می شوند و قوانین ادغام شده برای ساختن یک نمایه ART باینری فشرده که مخصوص APK است استفاده می شود. سپس ART میتواند از این نمایه زمانی که APK بر روی دستگاهها نصب میشود به منظور کامپایل کردن زیرمجموعه خاصی از برنامه برای بهبود عملکرد برنامه، بهویژه اولین اجرا، استفاده کند. توجه داشته باشید که این هیچ تاثیری بر برنامه های قابل اشکال زدایی نخواهد داشت.
فایل های قانون باید
baseline-prof.txtنامیده شوند و در دایرکتوری اصلی مجموعه منبع اصلی شما قرار گیرند (این فایل باید یک فایل برادر یا برادر فایلAndroidManifset.xmlشما باشد)در حال حاضر این فایلها فقط در صورتی استفاده میشوند که از افزونه Android Gradle نسخه 7.0 و بالاتر استفاده میکنید، و در حال حاضر فقط با یک پرچم در
gradle.propertiesشما فعال هستند:# Enable adding baseline-prof.txt files to AAR artifacts, and binary profiles to APKs android.experimental.enableArtProfiles=true
نمایه ها نیاز به تعادل دارند
- پروفایل هایی که به درستی ساخته شده و روش ها و کلاس هایی را که در مسیر راه اندازی و عملکرد حیاتی هستند اولویت بندی می کنند، بهترین نتایج را به همراه خواهند داشت، با این حال گنجاندن روش ها یا کلاس های زیاد در پروفایل ها می تواند تأثیر منفی خالصی در مصرف حافظه و استفاده از دیسک داشته باشد. ، بنابراین توصیه می شود در صورت تعریف قوانین نمایه خود، محافظه کارانه شروع کنید.
ProfileInstaller
| آخرین به روز رسانی | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
|---|---|---|---|---|
| 2 اکتبر 2024 | 1.4.1 | - | - | - |
اعلام وابستگی ها
برای افزودن وابستگی به ProfileInstaller، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven Google را بخوانید.
وابستگیهای مصنوعات مورد نیاز خود را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:
شیار
dependencies { implementation "androidx.profileinstaller:profileinstaller:1.4.1" }
کاتلین
dependencies { implementation("androidx.profileinstaller:profileinstaller:1.4.1") }
برای اطلاعات بیشتر درباره وابستگیها، به افزودن وابستگیهای ساخت نگاه کنید.
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه 1.4
نسخه 1.4.1
2 اکتبر 2024
androidx.profileinstaller:profileinstaller:1.4.1 منتشر شد. نسخه 1.4.1 شامل این commit ها است.
رفع اشکال
- پشتیبانی از ضبط چند فرآیندی Baseline Profile با سیگنال دهی متوالی چندین فرآیند. این راه حل نیاز به به روز رسانی به
androidx.benchmark:benchmark-macro:1.4.0-alpha02در ماژول نمایه macrobenchmark/baseline وandroidx.profileinstaller:profileinstaller:1.4.1در برنامه دارد. ( I0f519 , b/366231469 )
نسخه 1.4.0
18 سپتامبر 2024
androidx.profileinstaller:profileinstaller:1.4.0 منتشر شد. نسخه 1.4.0 حاوی این تعهدات است.
تغییرات مهم از 1.3.0
-
ProfileInstallerاکنون از گرفتن/نصب نمایه ها در API 35+ پشتیبانی می کند. بهروزرسانیProfileInstallerدیگر نباید برای بهروزرسانی نسخه پلتفرم مورد نیاز باشد. ( 6f9f6fa ) - رفع خرابی هنگام انداختن شیدرها در Android U (API 34) و همچنین شبیه سازها. ( I031ca , b/274314544 )
- روش رمزگذاری پرچم را در قالب نمایه
V_015Sبرطرف کنید. ( aosp/2906631 , aosp/2847740 )
نسخه 1.4.0-rc01
4 سپتامبر 2024
androidx.profileinstaller:profileinstaller:1.4.0-rc01 بدون تغییر نسبت به آخرین نسخه بتا منتشر شد. نسخه 1.4.0-rc01 حاوی این commit ها است.
نسخه 1.4.0-beta01
21 آگوست 2024
androidx.profileinstaller:profileinstaller:1.4.0-beta01 بدون هیچ تغییری نسبت به آخرین آلفا منتشر شد. نسخه 1.4.0-beta01 حاوی این تعهدات است.
نسخه 1.4.0-alpha02
7 آگوست 2024
androidx.profileinstaller:profileinstaller:1.4.0-alpha02 منتشر شد. نسخه 1.4.0-alpha02 حاوی این تعهدات است.
ویژگی های جدید
- پشتیبانی از api 35 به Profile Installer اضافه شد. ( 6f9f6fa )
رفع اشکال
- طرح دستی دسترسی به APIهای پلتفرم جدید حذف شد زیرا این به طور خودکار از طریق مدلسازی API هنگام استفاده از R8 با AGP 7.3 یا جدیدتر (مثلا R8 نسخه 3.3) و برای همه ساختها هنگام استفاده از AGP 8.1 یا بالاتر (به عنوان مثال D8 نسخه 8.1) اتفاق میافتد. به مشتریانی که از AGP استفاده نمیکنند، توصیه میشود به نسخه 8.1 یا بالاتر D8 بهروزرسانی کنند. برای جزئیات بیشتر به این مقاله مراجعه کنید. ( If6b4c , b/345472586 )
نسخه 1.4.0-alpha01
7 فوریه 2024
androidx.profileinstaller:profileinstaller:1.4.0-alpha01 منتشر شد. نسخه 1.4.0-alpha01 حاوی این commit ها است.
رفع اشکال
- کد خطا برای عدم تعبیه نمایه در تأیید کننده نمایه اضافه شد. ( Ifb109 , b/313928520 )
- رفع خرابی هنگام انداختن شیدرها در Android U (API 34) و همچنین شبیه سازها. ( I031ca , b/274314544 )
- پشتیبانی از Android U در نصب کننده پروفایل فعال شد. ( Iaf177 )
- نصب کننده نمایه ثابت در Android U به دلیل خالی نبودن نمایه فعلی هنگام شروع فرآیند، با مشکل مواجه شد. ( Ie3899 )
- روش رمزگذاری بیت مپ را در قالب نمایه
V_015Sبرطرف کنید. ( aosp/2906631 ) و ( aosp/2847740 )
نسخه 1.3
نسخه 1.3.1
3 مه 2023
androidx.profileinstaller:profileinstaller:1.3.1 منتشر شد. نسخه 1.3.1 حاوی این commit ها است.
رفع اشکال
- پشتیبانی فعال از Android U در نصب کننده پروفایل ( Iaf177 )
- نصب کننده نمایه ثابت در Android U به دلیل خالی نبودن نمایه فعلی هنگام شروع فرآیند، با مشکل مواجه شد. ( Ie3899 )
نسخه 1.3.0
22 مارس 2023
androidx.profileinstaller:profileinstaller:1.3.0 منتشر شد. نسخه 1.3.0 حاوی این commit ها است.
تغییرات مهم از 1.2.0
- رفع
NullPointerExceptionدرProfileInstallReceiver. ( b/243851384 ) - Api
ProfileVerifierاضافه شد تا از داخل برنامه بررسی کند که آیا نمایه خط پایه کامپایل شده، برنامه ریزی شده است یا وجود ندارد ( I263a4 ، b/246653809 ) - پخش پوسته جدیدی را اضافه می کند که Macrobenchmark را قادر می سازد تا داده های نمایه در حافظه را به طور کامل روی دیسک بچرخاند تا در تولید نمایه پایه گنجانده شود. این برای استفاده از کتابخانه macrobenchmark برای گرفتن پروفایل های پایه با
BaselineProfileRuleو ارزیابی عملکرد نمایه با استفاده ازCompilationMode.Partial(warmupIterations)لازم است. - یک کد تشخیصی برای تشخیص پروفایل های پایه فشرده شده اضافه شده است. نمایههای پایه فشرده را نمیتوان توسط Profileinstaller در ماکرو بنچمارکها یا در حال تولید نصب کرد و به دلیل سربار CPU، باید هنگام ساخت برنامهتان با بهروزرسانی به Studio/AGP Electric Eel یا
bundletoolنسخه1.13.1( I86413 ، b/261998144 ) از آنها اجتناب کرد. - قلابهایی برای ماکرو بنچمارک برای ضبط پروفایلها و حذف حافظه پنهان سایهزن، که برای تولید نمایههای پایه یا ماکرو بنچمارک در دستگاههای روت نشده ( Ie0a7d ، b/250083467 ، b/253094958 ) ( Ia5171 ، b/23 ) مورد نیاز است.
نسخه 1.3.0-rc01
8 مارس 2023
androidx.profileinstaller:profileinstaller:1.3.0-rc01 بدون هیچ تغییری از آخرین نسخه بتا منتشر شده است. نسخه 1.3.0-rc01 حاوی این commit ها است.
نسخه 1.3.0-beta01
8 فوریه 2023
androidx.profileinstaller:profileinstaller:1.3.0-beta01 منتشر شد. نسخه 1.3.0-beta01 حاوی این تعهدات است.
تغییرات API
- پشتیبانی از مدیریت پروفایل های فشرده را حذف می کند - باز کردن و فشرده سازی منجر به 10 ثانیه رگرسیون در استفاده از CPU در هنگام راه اندازی می شود، بنابراین به جای آن یک تشخیص برای کشف پروفایل های پایه به طور نادرست فشرده شده اضافه می شود. ( I86413 , b/261998144 )
نسخه 1.3.0-alpha03
11 ژانویه 2023
androidx.profileinstaller:profileinstaller:1.3.0-alpha03 منتشر شد. نسخه 1.3.0-alpha03 حاوی این commit ها است.
رفع اشکال
- مدیریت پروفایل های پایه فشرده یا غیرفشرده را فعال می کند ( Ic61a0 )
- با اصلاح رجیستری پخش در مانیفست profileinstaller ( I5c728 , b/258619948 )
MacrobenchmarkScope.dropShaderCache()برطرف کنید تا دیگر خراب نشود
نسخه 1.3.0-alpha02
9 نوامبر 2022
androidx.profileinstaller:profileinstaller:1.3.0-alpha02 منتشر شد. نسخه 1.3.0-alpha02 حاوی این commit ها است.
تغییرات API
- برای اطمینان از عملکرد ثابت برای راه اندازی سرد، به خصوص هنگام کامپایل کردن با نمایه های تکرارهای گرم کردن، یک قلاب برای معیارها برای حذف کش سایه زن اضافه شده است. این بهروزرسانی برای اندازهگیری استارتآپهای سرد با استفاده از
benchmark-macro-junit4:1.2.0-alpha05یا جدیدتر مورد نیاز است. برای تغییرات API کتابخانه معیار، لطفاً به صفحه Benchmark 1.2.0-alpha07 مراجعه کنید. ( Ia5171 , b/231455742 )
نسخه 1.3.0-alpha01
24 اکتبر 2022
androidx.profileinstaller:profileinstaller:1.3.0-alpha01 منتشر شد. نسخه 1.3.0-alpha01 حاوی این commit ها است.
تغییرات API
- Api
ProfileVerifierاضافه شد تا از داخل برنامه بررسی کند که آیا نمایه خط پایه کامپایل شده، برنامه ریزی شده است یا وجود ندارد ( I263a4 ، b/246653809 ) - پخش پوسته جدیدی را اضافه می کند که Macrobenchmark را قادر می سازد تا داده های نمایه در حافظه را به طور کامل روی دیسک بچرخاند تا در تولید نمایه پایه گنجانده شود. این برای استفاده از کتابخانه macrobenchmark برای گرفتن پروفایل های پایه با
BaselineProfileRuleو ارزیابی عملکرد نمایه با استفاده ازCompilationMode.Partial(warmupIterations)لازم است. ( Ie0a7d , b/250083467 , b/253094958 )
نسخه 1.2.2
نسخه 1.2.2
11 ژانویه 2023
androidx.profileinstaller:profileinstaller:1.2.2 منتشر شد. نسخه 1.2.2 حاوی این commit ها است.
رفع اشکال
- مدیریت پروفایل های پایه فشرده یا غیرفشرده را فعال می کند ( Ic61a0 )
نسخه 1.2.1
نسخه 1.2.1
7 دسامبر 2022
androidx.profileinstaller:profileinstaller:1.2.1 منتشر شد. نسخه 1.2.1 حاوی این commit ها است.
ویژگی های جدید
- Profileinstaller را برای S_V2 (API 32) و TIRAMISU (API 33) ( b/254900303 ) فعال کنید.
نسخه 1.2.0
نسخه 1.2.0
27 جولای 2022
androidx.profileinstaller:profileinstaller:1.2.0 منتشر شد. نسخه 1.2.0 حاوی این commit ها است.
تغییرات مهم از 1.1.0
- پشتیبانی از فرمت نمایه ART مورد استفاده در Android 12 و آینده اضافه شد.
- APIهای جدیدی را در
ProfileInstallReceiverاضافه کنید تا هنگام استفاده از نمایههای پایه، نتایج منسجمتری را باMacrobenchmarksدریافت کنید.
نسخه 1.2.0-rc01
15 ژوئن 2022
androidx.profileinstaller:profileinstaller:1.2.0-rc01 منتشر شد. نسخه 1.2.0-rc01 حاوی این commit ها است.
- این نسخه با
androidx.profileinstaller:profileinstaller:1.2.0-beta03یکسان است.
نسخه 1.2.0-beta03
1 ژوئن 2022
androidx.profileinstaller:profileinstaller:1.2.0-beta03 منتشر شد. نسخه 1.2.0-beta03 حاوی این تعهدات است.
نسخه 1.2.0-beta02
18 مه 2022
androidx.profileinstaller:profileinstaller:1.2.0-beta02 منتشر شد. نسخه 1.2.0-beta02 حاوی این تعهدات است.
- بدون تغییر، برای پشتیبانی از نسخه های Compose 1.2.0-beta02 لازم است.
نسخه 1.2.0-beta01
11 مه 2022
androidx.profileinstaller:profileinstaller:1.2.0-beta01 منتشر شد. نسخه 1.2.0-beta01 حاوی این تعهدات است.
تغییرات API
- APIهای جدیدی را در
ProfileInstallReceiverاضافه کنید تا هنگام استفاده از نمایههای پایه، نتایج منسجمتری را باMacrobenchmarksدریافت کنید. ( If2ae5 , b/215740637 )
رفع اشکال
- هنگام تلاش برای استفاده از فرمت فراداده
V_001در Android 12 و بالاتر، Profile Installer یک پیام مفید ارسال می کند. ( aosp/1978526 , b/217502387 ) - Profile Installer اکنون از
androidx.startupنسخه1.1.1استفاده می کند. ( aosp/2077099 , b/229828376 )
نسخه 1.2.0-alpha02
26 ژانویه 2022
androidx.profileinstaller:profileinstaller:1.2.0-alpha02 منتشر شد. نسخه 1.2.0-alpha02 حاوی این commit ها است.
این نسخه با 1.2.0-alpha01 یکسان است.
نسخه 1.2.0-alpha01
12 ژانویه 2022
androidx.profileinstaller:profileinstaller:1.2.0-alpha01 منتشر شد. نسخه 1.2.0-alpha01 حاوی این commit ها است.
ویژگی های جدید
- پشتیبانی از فرمت نمایه ART مورد استفاده در Android 12 و آینده را اضافه کنید.
نسخه 1.1.0
نسخه 1.1.0
9 فوریه 2022
androidx.profileinstaller:profileinstaller:1.1.0 منتشر شد. نسخه 1.1.0 حاوی این commit ها است.
نسخه 1.1.0-rc01
15 دسامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-rc01 بدون به روز رسانی از 1.1.0-beta04 منتشر شده است. نسخه 1.1.0-rc01 حاوی این commit ها است.
نسخه 1.1.0-beta04
1 دسامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta04 منتشر شد. نسخه 1.1.0-beta04 حاوی این تعهدات است.
نسخه 1.1.0-beta03
17 نوامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta03 منتشر شد. نسخه 1.1.0-beta03 حاوی این تعهدات است.
رفع اشکال
- برای پشتیبانی از Compose 1.1.0-beta03 به روز شد
نسخه 1.1.0-beta02
3 نوامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta02 منتشر شد. نسخه 1.1.0-beta02 حاوی این تعهدات است.
رفع اشکال
- برای پشتیبانی از Compose 1.1.0-beta02 به روز شد
نسخه 1.1.0-beta01
27 اکتبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta01 منتشر شد. نسخه 1.1.0-beta01 حاوی این تعهدات است.
- هیچ تغییری از 1.1.0-alpha07 وجود ندارد.
نسخه 1.1.0-alpha07
13 اکتبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha07 منتشر شد. نسخه 1.1.0-alpha07 حاوی این commit ها است.
ویژگی های جدید
- اضافه شدن پشتیبانی از profm در اندروید N
نسخه 1.1.0-alpha06
29 سپتامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha06 منتشر شد. نسخه 1.1.0-alpha06 حاوی این commit ها است.
رفع اشکال
- مشکلات رمزگذاری نصب کننده پروفایل را در N، O، و O_MR1 برطرف کنید. ( I12d75 )
نسخه 1.1.0-alpha05
15 سپتامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha05 منتشر شد. نسخه 1.1.0-alpha05 حاوی این commit ها است.
رفع اشکال
- رمزگذاری پروفایل اندروید نوقا و اندروید اوریو برای apk های مولتی دکس رفع شد.
نسخه 1.1.0-alpha04
1 سپتامبر 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha04 منتشر شد. نسخه 1.1.0-alpha04 حاوی این commit ها است.
رفع اشکال
-
ProfileInstallerرفع کنید تا برنامههایی که از نمایههای خط پایه استفاده میکنند، سادهتر شود تا MacroBenchmarks را با استفاده ازCompilationMode.BaselineProfileاجرا کنند. ( I42657 , b/196074999 )
نسخه 1.1.0-alpha03
18 آگوست 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha03 منتشر شد. نسخه 1.1.0-alpha03 حاوی این commit ها است.
رفع اشکال
- رفتار پرش profileinstaller را تغییر دهید تا PackageInfo.lastUpdatedTime را در فایلی در فهرست فایل های برنامه ثبت کنید و قبل از نصب نمایه در اجرای بعدی، آن را مقایسه کنید. ( Ib93d1 )
- فرمت نمایه را در دستگاههای P، Q، R تنظیم کنید تا با الزامات ART مطابقت داشته باشد ( I84e89 )
نسخه 1.1.0-alpha02
4 آگوست 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha02 منتشر شد. نسخه 1.1.0-alpha02 حاوی این commit ها است.
به روز شده تا با Compose 1.1.0-alpha01 سازگار باشد.
نسخه 1.1.0-alpha01
21 جولای 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha01 منتشر شد. نسخه 1.1.0-alpha01 حاوی این commit ها است.
رفع اشکال
- رفع اشکالی که در برخی شرایط باعث ایجاد حالت سختگیرانه میشود.
نسخه 1.0
نسخه 1.0.4
13 اکتبر 2021
androidx.profileinstaller:profileinstaller:1.0.4 منتشر شد. نسخه 1.0.4 حاوی این commit ها است.
- برای پشتیبانی از Compose 1.0.4 به روز شد
نسخه 1.0.3
29 سپتامبر 2021
androidx.profileinstaller:profileinstaller:1.0.3 منتشر شد. نسخه 1.0.3 حاوی این commit ها است.
- برای پشتیبانی از Compose 1.0.3 به روز شد
نسخه 1.0.2
1 سپتامبر 2021
androidx.profileinstaller:profileinstaller:1.0.2 منتشر شد. نسخه 1.0.2 حاوی این commit ها است.
رفع اشکال
- رمزگذاری پروفایل برای دستگاه های P، Q، R اضافه شده است. این تغییر به این معنی است که این دستگاهها نمایه را رمزگذاری میکنند و اطمینان حاصل میکنند که نمایه نوشته شده همیشه توسط ART قابل استفاده است. ترانکودینگ قبلی در این پلتفرمها نادیده گرفته میشد، که گاهی باعث میشود ART نتواند نمایه منبع را پردازش کند. هیچ تغییری در API های توسعه دهنده وجود ندارد.
نسخه 1.0.1
4 آگوست 2021
androidx.profileinstaller:profileinstaller:1.0.1 منتشر شد. نسخه 1.0.1 حاوی این commit ها است.
به روز شد تا با Compose 1.0.1 سازگار باشد.
نسخه 1.0.0
28 جولای 2021
androidx.profileinstaller:profileinstaller:1.0.0 منتشر شد. نسخه 1.0.0 حاوی این commit ها است.
ویژگی های اصلی 1.0.0
Profile installer یک کتابخانه جدید است که به کتابخانهها و برنامهها اجازه میدهد «قوانین نمایه» را تعریف کنند و اطلاعات نمایه ART را با یک APK بستهبندی کنند و این کتابخانه آن پروفایلها را پس از راهاندازی برنامه نصب میکند. این می تواند برای بهبود عملکرد برنامه استفاده شود.
لطفاً یادداشتهای انتشار دقیق را در 1.0.0-beta01 برای اطلاعات بیشتر در مورد اینکه این قوانین نمایه چیست و چگونه کار میکنند، ببینید.
نسخه 1.0.0-rc02
14 جولای 2021
androidx.profileinstaller:profileinstaller:1.0.0-rc02 منتشر شد. نسخه 1.0.0-rc02 حاوی این commit ها است.
نسخه 1.0.0-rc01
1 ژوئیه 2021
androidx.profileinstaller:profileinstaller:1.0.0-rc01 منتشر شد. نسخه 1.0.0-rc01 حاوی این commit ها است.
این نسخه RC بدون تغییر نسبت به نسخه بتا است.
نسخه 1.0.0-beta01
16 ژوئن 2021
androidx.profileinstaller:profileinstaller:1.0.0-beta01 منتشر شد. نسخه 1.0.0-beta01 حاوی این تعهدات است.
هدف کتابخانه
Profile installer یک کتابخانه جدید است که به کتابخانهها و برنامهها اجازه میدهد «قوانین نمایه» را تعریف کنند و اطلاعات نمایه ART را با یک APK بستهبندی کنند و این کتابخانه آن پروفایلها را پس از راهاندازی برنامه نصب میکند. این می تواند برای بهبود عملکرد برنامه استفاده شود.
این نصب پروفایل با کتابخانه androidx.startup انجام می شود. اگر به هر دلیلی میخواهید نصب نمایه را غیرفعال کنید، میتوانید مانیفست را برای حذف آن تغییر دهید:
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data android:name="androidx.profileinstaller.ProfileInstallerInitializer"
tools:node="remove" />
</provider>
این به ویژه در صورتی مفید است که برنامه شما نیازهای راه اندازی غیر ضروری داشته باشد و بخواهید نصب نمایه را به صورت دستی با استفاده از ProfileInstaller.writeProfile API فعال کنید.
قوانین پروفایل چیست؟
قوانین نمایه برای یک کتابخانه در یک فایل متنی
baseline-prof.txtدر دایرکتوریsrc/mainیا معادل آن مشخص شده است. فایل در هر خط یک قانون را مشخص میکند، که در این مورد یک قانون الگویی برای تطبیق با متدها یا کلاسهای موجود در کتابخانه است. سینتکس این قوانین یک ابرمجموعه از فرمت نمایه ART قابل خواندن برای انسان است که هنگام استفاده ازadb shell profman --dump-classes-and-methods ...استفاده می شود. این قوانین یکی از دو شکل را برای هدف قرار دادن متدها یا کلاس ها دارند.یک قانون متد دارای الگوی زیر خواهد بود:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>و یک قانون کلاس الگوی زیر را خواهد داشت:
<CLASS_DESCRIPTOR>در اینجا
<FLAGS>یک یا چند کاراکترH,SوPاست تا نشان دهد که آیا این روش باید به عنوان "Hot"، "Startup" یا "Post Startup" پرچم گذاری شود یا خیر.<CLASS_DESCRIPTOR>توصیفگر کلاسی است که متد هدفمند به آن تعلق دارد. به عنوان مثال، کلاسandroidx.compose.runtime.SlotTableیک توصیف کننده ازLandroidx/compose/runtime/SlotTable;.<METHOD_SIGNATURE>امضای متد است و شامل نام، انواع پارامتر و انواع برگشتی متد است. به عنوان مثال، متدfun isPlaced(): BooleanدرLayoutNodeدارای امضایisPlaced()Zاست.این الگوها می توانند دارای حروف عام (
**,*و?) باشند تا یک قانون واحد شامل چندین روش یا کلاس باشد.
قوانین چه کار می کنند؟
متدی که دارای پرچم
Hاست نشان میدهد که این روش یک روش داغ است و باید زودتر از موعد کامپایل شود.روشی که دارای پرچم
Sاست نشان می دهد که روشی است که در هنگام راه اندازی فراخوانی می شود و باید زودتر از موعد کامپایل شود تا از هزینه کامپایل و تفسیر روش در زمان راه اندازی جلوگیری شود.متدی که دارای پرچم
Pاست نشان می دهد که متدی است که پس از راه اندازی فراخوانی می شود.کلاسی که در این فایل وجود دارد نشان میدهد که در هنگام راهاندازی استفاده میشود و باید از قبل در پشته تخصیص داده شود تا از هزینه بارگذاری کلاس جلوگیری شود.
این چگونه کار می کند؟
کتابخانه ها می توانند این قوانین را که در مصنوعات AAR بسته بندی می شوند، تعریف کنند. هنگامی که یک APK ساخته می شود که شامل این مصنوعات است، این قوانین با هم ادغام می شوند و قوانین ادغام شده برای ساختن یک نمایه ART باینری فشرده که مخصوص APK است استفاده می شود. سپس ART میتواند از این نمایه زمانی که APK بر روی دستگاهها نصب میشود به منظور کامپایل کردن زیرمجموعه خاصی از برنامه برای بهبود عملکرد برنامه، بهویژه اولین اجرا، استفاده کند. توجه داشته باشید که این هیچ تاثیری بر برنامه های قابل اشکال زدایی نخواهد داشت.
فایل های قانون باید
baseline-prof.txtنامیده شوند و در دایرکتوری اصلی مجموعه منبع اصلی شما قرار گیرند (این فایل باید یک فایل برادر یا برادر فایلAndroidManifset.xmlشما باشد)در حال حاضر این فایلها فقط در صورتی استفاده میشوند که از افزونه Android Gradle نسخه 7.0 و بالاتر استفاده میکنید، و در حال حاضر فقط با یک پرچم در
gradle.propertiesشما فعال هستند:# Enable adding baseline-prof.txt files to AAR artifacts, and binary profiles to APKs android.experimental.enableArtProfiles=true
نمایه ها نیاز به تعادل دارند
- پروفایل هایی که به درستی ساخته شده و روش ها و کلاس هایی را که در مسیر راه اندازی و عملکرد حیاتی هستند اولویت بندی می کنند، بهترین نتایج را به همراه خواهند داشت، با این حال گنجاندن روش ها یا کلاس های زیاد در پروفایل ها می تواند تأثیر منفی خالصی در مصرف حافظه و استفاده از دیسک داشته باشد. ، بنابراین توصیه می شود در صورت تعریف قوانین نمایه خود، محافظه کارانه شروع کنید.