ProfileInstaller

کتابخانه‌ها را قادر می‌سازد تا ردپای تلفیقی را برای خواندن توسط ART پیش از موعد جمع کنند.
آخرین به روز رسانی انتشار پایدار کاندید را آزاد کنید نسخه بتا انتشار آلفا
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

کتابخانه‌ها را قادر می‌سازد تا ردپای تلفیقی را برای خواندن توسط ART پیش از موعد جمع کنند.
آخرین به روز رسانی انتشار پایدار کاندید را آزاد کنید نسخه بتا انتشار آلفا
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

کتابخانه‌ها را قادر می‌سازد تا ردپای تلفیقی را برای خواندن توسط ART پیش از موعد جمع کنند.
آخرین به روز رسانی انتشار پایدار کاندید را آزاد کنید نسخه بتا انتشار آلفا
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
    

نمایه ها نیاز به تعادل دارند

  • پروفایل هایی که به درستی ساخته شده و روش ها و کلاس هایی را که در مسیر راه اندازی و عملکرد حیاتی هستند اولویت بندی می کنند، بهترین نتایج را به همراه خواهند داشت، با این حال گنجاندن روش ها یا کلاس های زیاد در پروفایل ها می تواند تأثیر منفی خالصی در مصرف حافظه و استفاده از دیسک داشته باشد. ، بنابراین توصیه می شود در صورت تعریف قوانین نمایه خود، محافظه کارانه شروع کنید.