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
نمایه ها نیاز به تعادل دارند
- پروفایل هایی که به درستی ساخته شده و روش ها و کلاس هایی را که در مسیر راه اندازی و عملکرد حیاتی هستند اولویت بندی می کنند، بهترین نتایج را به همراه خواهند داشت، با این حال گنجاندن روش ها یا کلاس های زیاد در پروفایل ها می تواند تأثیر منفی خالصی در مصرف حافظه و استفاده از دیسک داشته باشد. ، بنابراین توصیه می شود در صورت تعریف قوانین نمایه خود، محافظه کارانه شروع کنید.