Statsd

ماژول Statsd شامل statsd، سرویس بومی که در پس‌زمینه اجرا می‌شود و سنجه‌ها را جمع‌آوری می‌کند، و سرویس Java StatsCompanionService است که در فرایند سیستم اجرا می‌شود و statsd و Java را به هم متصل می‌کند. این واحد به‌روزرسانی‌پذیر است، یعنی می‌تواند خارج از چرخه انتشار عادی Android، به‌روزرسانی‌هایی برای عملکرد (مثل به‌روزرسانی‌های سنجه‌های استفاده‌شده در جمع‌آوری داده‌ها) دریافت کند.

مرز واحد

‫Statsd نقطه تماس اصلی بین پلاتفرم و جمع‌آوری داده‌های ایمنی راه‌اندازی است. مدول statsd شامل کد زیر است.

  • statsd، واقع در frameworks/base/cmds/statsd

  • ‫StatsCompanionService، واقع در frameworks/base/services/core/java/com/android/server/stats/StatsCompanionService.java

  • زیرمجموعه‌ای از ساختارهای protobuf پلاتفرم، که عمدتاً در frameworks/base/core/proto قرار دارد

به‌عنوان یک سرویس بومی، statsd می‌تواند بیشتر از چارچوب دوام بیاورد و خرابی‌ها را در خود system_server شناسایی کند.

در Android 12، کد واحد Statsd از frameworks/base/cmds/StatsD، frameworks/base/apex/StatsD، و system/core/libstats منتقل می‌شود.

ساختار پروژه جدید

  • system/core/libstats → packages/modules/StatsD/lib/libstats
    • system/core/libstats/socket ← packages/modules/StatsD/lib/libstatssocket
    • system/core/libstats/pull ← packages/modules/StatsD/lib/libstatspull
  • frameworks/base/cmds/StatsD ← packages/modules/StatsD/bin
  • frameworks/base/apex/StatsD →
    • کپی کردن سطح بالا همان‌گونه که هست
    • انتقال jni به framework/jni
    • انتقال فایل‌های سطح بالا به دایرکتوری /apex
      • frameworks/base/apex/StatsD/\* ← packages/modules/StatsD/apex/\*
      • frameworks/base/apex/StatsD/jni ← packages/modules/StatsD/apex/framework/jni
  • cts/hostsidetests/StatsD ← packages/modules/StatsD/tests

فرمان‌های نمونه برای حرکت وصله

تغییرات را روی شاخه‌های زیر اعمال کنید:

  • goog/mainline-prod
  • goog/main
  • goog/\*-plus-aosp
  • aosp/main

سابقه فایل‌های درون Statsd باید حفظ شود.

قالب واحد

واحد statsd (com.android.os.statsd) در قالب APEX است و برای دستگاه‌های دارای Android 11 یا بالاتر دردسترس است.

وابستگی‌های واحد

واحد Statsd مجموعه‌ای از @hide API برای ثبت رویدادهای سیستم ارائه می‌دهد. برای کد Java، اکثر میاناهای برنامه‌سازی کاربردی @hide بازسازی می‌شوند تا روی مجموعه کوچک‌تری از روش‌های برچسب‌گذاری‌شده @SystemApi ساخته شوند و برخی‌از کدهای چسب تولیدشده کوچک در آن تعبیه شده است. برای کد بومی، توابع بومی موجود بازسازی می‌شوند تا به میاناهای برنامه‌سازی کاربردی رسمی VNDK C تبدیل شوند، با چسب تولیدشده.

سفارشی‌سازی

واحد Statsd از سفارشی‌سازی پشتیبانی نمی‌کند.

آزمایش

«مجموعه آزمون سازگاری Android» (CTS) عملکرد statsd و اتم‌هایی را که مدیریت انتشار به آن‌ها وابسته است تأیید می‌کند.