درباره فرآیندهای زیگوت

Zygote فرآیندی در سیستم عامل اندروید است که به عنوان ریشه تمام فرآیندهای سیستم و برنامه با یک رابط باینری برنامه (ABI) عمل می کند.

در دستگاه‌های مدرن، مانند Pixel 7 و نسخه‌های جدیدتر، فرآیند 64 بیتی Zygote وجود دارد. علاوه بر این، WebView Zygote برای ABI اولیه وجود دارد، که یک Zygote تخصصی است که شامل کتابخانه‌ها و منابعی خاص برای فرآیندهایی است که WebViews را اجرا می‌کنند.

در اینجا وظایفی است که Zygote انجام می دهد:

  1. دیمون init، فرآیند Zygote را هنگامی که سیستم عامل اندروید اولیه می شود، ایجاد می کند. در برخی از سیستم‌های معماری دوگانه، دو فرآیند Zygote (یک 64 بیت و 32 بیت) ایجاد می‌شوند. این صفحه فقط سیستم های معماری تک را پوشش می دهد.

  2. Zygote می‌تواند فوراً فرآیندهایی به نام فرآیندهای برنامه غیر تخصصی (USAP) را ایجاد کند یا در صورت نیاز برنامه‌ها منتظر بمانند تا فرآیندهایی را ایجاد کنند. گزینه قبلی باید از طریق یک ویژگی سیستم یا دستور Android debug bridge فعال شود. برای اطلاعات بیشتر در مورد پیکربندی Zygote برای ایجاد فورا فرآیندها، به فعال کردن مخزن فرآیندهای برنامه غیر تخصصی مراجعه کنید.

    • اگر استخر USAP در دستگاه شما فعال است:

      1. سرور سیستم از یک سوکت دامنه یونیکس برای اتصال به USAP موجود از یک استخر استفاده می کند. سرور سیستم درخواست می کند که USAP با تغییر شناسه فرآیند (PID)، cgroup و سایر اطلاعات، برای استفاده از برنامه از پیش پیکربندی شود.
      2. هنگامی که USAP از پیش پیکربندی به پایان رسید، با PID به سرور سیستم پاسخ می دهد.
      3. هنگامی که یک برنامه کاربردی یکی از این USAP ها را اشغال می کند، USAP دیگر بخشی از مجموعه نیست. هنگامی که استخر به یک یا کمتر USAP در استخر می رسد، Zygote استخر را با USAP های جدید پر می کند.
    • اگر زیگوت شما با استفاده از ارزیابی تنبل فرآیندها را ایجاد می کند:

      1. سرور سیستم دستوری را دریافت می کند که یک برنامه به پردازش نیاز دارد.
      2. سرور سیستم از یک سوکت دامنه یونیکس برای ارسال دستور به Zygote مناسب استفاده می کند.
      3. Zygote فرآیند را منشعب می‌کند و PID، cgroup و سایر اطلاعات را تغییر می‌دهد.
      4. هنگامی که فرآیند کامل شد، PID را به Zygote برمی‌گرداند و سپس آن را به سرور سیستم ارسال می‌کند.

استخر USAP را فعال کنید

برای فعال کردن استفاده از استخر USAP، یکی از موارد زیر را انجام دهید:

  • ویژگی سیستم dalvik.vm.usap_pool_enabled را در /build/make/target/product/runtime_libart.mk روی true تنظیم کنید.

  • دستور زیر را اجرا کنید:

    adb shell am broadcast -a \"com.google.android.gms.phenotype.FLAG_OVERRIDE\" --es package \"com.google.android.platform.runtime_native\" --es user \"\*\" --esa flags \"usap_pool_enabled\" --esa values \"true\" --esa types \"string\" com.google.android.gms
    

هنگامی که این ویژگی فعال است، هر Zygote مجموعه ای از فرآیندهای دوشاخه را حفظ می کند که بخش های مستقل از برنامه فرآیند راه اندازی برنامه را انجام می دهد.

عیب یابی مشکلات Zygote

این بخش شامل راه حل هایی برای مسائل مربوط به Zygote است.

زیگوت در حال سقوط است

اگر دستگاه شما به درستی راه‌اندازی مجدد نمی‌شود و گزارش‌ها یا گزارش‌های خرابی شما مشکلاتی را با Zygote نشان می‌دهد، احتمالاً به این دلیل است که اخیراً تغییری ایجاد کرده‌اید که باعث از کار افتادن initd یا سرور سیستم می‌شود. رفع کد شما باید مشکل را حل کند.

انکار SELinux یا خرابی IO

Zygote در مورد بهداشت توصیفگر فایل در سراسر مرزهای فرآیند خاص است. هنگامی که توصیفگرهای فایل در زمان فورک وجود دارند، اما در لیست مجاز نیستند، از یک فراخوانی سیستم dup به /dev/null استفاده می‌کنیم تا از استفاده ناخواسته توصیفگرهای فایل حافظه پنهان برای دسترسی به فایل‌های تازه باز شده جلوگیری کنیم.

اگر تغییراتی در چارچوب ایجاد می‌کنید که شامل تلاش برای بارگذاری منابع در Zygote می‌شود و رد SELinux یا خرابی IO را دریافت می‌کنید:

  • برای توصیفگرهای فایل بدون نام، هنگام فراخوانی Restat ، توصیفگرهای فایل را در بردار fds_to_ignore قرار دهید.

  • برای توصیف کننده های فایل نامگذاری شده:

    1. WORKING_DIRECTORY /frameworks/base/core/jni/fd_utils.cpp را ویرایش کنید.
    2. مسیر را به لیست مجاز برای فایل های باز اضافه کنید.
،

Zygote فرآیندی در سیستم عامل اندروید است که به عنوان ریشه تمام فرآیندهای سیستم و برنامه با یک رابط باینری برنامه (ABI) عمل می کند.

در دستگاه‌های مدرن، مانند Pixel 7 و نسخه‌های جدیدتر، فرآیند 64 بیتی Zygote وجود دارد. علاوه بر این، WebView Zygote برای ABI اولیه وجود دارد، که یک Zygote تخصصی است که شامل کتابخانه‌ها و منابعی خاص برای فرآیندهایی است که WebViews را اجرا می‌کنند.

در اینجا وظایفی است که Zygote انجام می دهد:

  1. دیمون init، فرآیند Zygote را هنگامی که سیستم عامل اندروید اولیه می شود، ایجاد می کند. در برخی از سیستم‌های معماری دوگانه، دو فرآیند Zygote (یک 64 بیت و 32 بیت) ایجاد می‌شوند. این صفحه فقط سیستم های معماری تک را پوشش می دهد.

  2. Zygote می‌تواند فوراً فرآیندهایی به نام فرآیندهای برنامه غیر تخصصی (USAP) را ایجاد کند یا در صورت نیاز برنامه‌ها منتظر بمانند تا فرآیندهایی را ایجاد کنند. گزینه قبلی باید از طریق یک ویژگی سیستم یا دستور Android debug bridge فعال شود. برای اطلاعات بیشتر در مورد پیکربندی Zygote برای ایجاد فورا فرآیندها، به فعال کردن مخزن فرآیندهای برنامه غیر تخصصی مراجعه کنید.

    • اگر استخر USAP در دستگاه شما فعال است:

      1. سرور سیستم از یک سوکت دامنه یونیکس برای اتصال به USAP موجود از یک استخر استفاده می کند. سرور سیستم درخواست می کند که USAP با تغییر شناسه فرآیند (PID)، cgroup و سایر اطلاعات، برای استفاده از برنامه از پیش پیکربندی شود.
      2. هنگامی که USAP از پیش پیکربندی به پایان رسید، با PID به سرور سیستم پاسخ می دهد.
      3. هنگامی که یک برنامه کاربردی یکی از این USAP ها را اشغال می کند، USAP دیگر بخشی از مجموعه نیست. هنگامی که استخر به یک یا کمتر USAP در استخر می رسد، Zygote استخر را با USAP های جدید پر می کند.
    • اگر زیگوت شما با استفاده از ارزیابی تنبل فرآیندها را ایجاد می کند:

      1. سرور سیستم دستوری را دریافت می کند که یک برنامه به پردازش نیاز دارد.
      2. سرور سیستم از یک سوکت دامنه یونیکس برای ارسال دستور به Zygote مناسب استفاده می کند.
      3. Zygote فرآیند را منشعب می‌کند و PID، cgroup و سایر اطلاعات را تغییر می‌دهد.
      4. هنگامی که فرآیند کامل شد، PID را به Zygote برمی‌گرداند و سپس آن را به سرور سیستم ارسال می‌کند.

استخر USAP را فعال کنید

برای فعال کردن استفاده از استخر USAP، یکی از موارد زیر را انجام دهید:

  • ویژگی سیستم dalvik.vm.usap_pool_enabled را در /build/make/target/product/runtime_libart.mk روی true تنظیم کنید.

  • دستور زیر را اجرا کنید:

    adb shell am broadcast -a \"com.google.android.gms.phenotype.FLAG_OVERRIDE\" --es package \"com.google.android.platform.runtime_native\" --es user \"\*\" --esa flags \"usap_pool_enabled\" --esa values \"true\" --esa types \"string\" com.google.android.gms
    

هنگامی که این ویژگی فعال است، هر Zygote مجموعه ای از فرآیندهای دوشاخه را حفظ می کند که بخش های مستقل از برنامه فرآیند راه اندازی برنامه را انجام می دهد.

عیب یابی مشکلات Zygote

این بخش شامل راه حل هایی برای مسائل مربوط به Zygote است.

زیگوت در حال سقوط است

اگر دستگاه شما به درستی راه‌اندازی مجدد نمی‌شود و گزارش‌ها یا گزارش‌های خرابی شما مشکلاتی را با Zygote نشان می‌دهد، احتمالاً به این دلیل است که اخیراً تغییری ایجاد کرده‌اید که باعث از کار افتادن initd یا سرور سیستم می‌شود. رفع کد شما باید مشکل را حل کند.

انکار SELinux یا خرابی IO

Zygote در مورد بهداشت توصیفگر فایل در سراسر مرزهای فرآیند خاص است. هنگامی که توصیفگرهای فایل در زمان فورک وجود دارند، اما در لیست مجاز نیستند، از یک فراخوانی سیستم dup به /dev/null استفاده می‌کنیم تا از استفاده ناخواسته توصیفگرهای فایل حافظه پنهان برای دسترسی به فایل‌های تازه باز شده جلوگیری کنیم.

اگر تغییراتی در چارچوب ایجاد می‌کنید که شامل تلاش برای بارگذاری منابع در Zygote می‌شود و رد SELinux یا خرابی IO را دریافت می‌کنید:

  • برای توصیفگرهای فایل بدون نام، هنگام فراخوانی Restat ، توصیفگرهای فایل را در بردار fds_to_ignore قرار دهید.

  • برای توصیف کننده های فایل نامگذاری شده:

    1. WORKING_DIRECTORY /frameworks/base/core/jni/fd_utils.cpp را ویرایش کنید.
    2. مسیر را به لیست مجاز برای فایل های باز اضافه کنید.
،

Zygote فرآیندی در سیستم عامل اندروید است که به عنوان ریشه تمام فرآیندهای سیستم و برنامه با یک رابط باینری برنامه (ABI) عمل می کند.

در دستگاه‌های مدرن، مانند Pixel 7 و نسخه‌های جدیدتر، فرآیند 64 بیتی Zygote وجود دارد. علاوه بر این، WebView Zygote برای ABI اولیه وجود دارد، که یک Zygote تخصصی است که شامل کتابخانه‌ها و منابعی خاص برای فرآیندهایی است که WebViews را اجرا می‌کنند.

در اینجا وظایفی است که Zygote انجام می دهد:

  1. دیمون init، فرآیند Zygote را هنگامی که سیستم عامل اندروید اولیه می شود، ایجاد می کند. در برخی از سیستم‌های معماری دوگانه، دو فرآیند Zygote (یک 64 بیت و 32 بیت) ایجاد می‌شوند. این صفحه فقط سیستم های معماری تک را پوشش می دهد.

  2. Zygote می‌تواند فوراً فرآیندهایی به نام فرآیندهای برنامه غیر تخصصی (USAP) را ایجاد کند یا در صورت نیاز برنامه‌ها منتظر بمانند تا فرآیندهایی را ایجاد کنند. گزینه قبلی باید از طریق یک ویژگی سیستم یا دستور Android debug bridge فعال شود. برای اطلاعات بیشتر در مورد پیکربندی Zygote برای ایجاد فورا فرآیندها، به فعال کردن مخزن فرآیندهای برنامه غیر تخصصی مراجعه کنید.

    • اگر استخر USAP در دستگاه شما فعال است:

      1. سرور سیستم از یک سوکت دامنه یونیکس برای اتصال به USAP موجود از یک استخر استفاده می کند. سرور سیستم درخواست می کند که USAP با تغییر شناسه فرآیند (PID)، cgroup و سایر اطلاعات، برای استفاده از برنامه از پیش پیکربندی شود.
      2. هنگامی که USAP از پیش پیکربندی به پایان رسید، با PID به سرور سیستم پاسخ می دهد.
      3. هنگامی که یک برنامه کاربردی یکی از این USAP ها را اشغال می کند، USAP دیگر بخشی از مجموعه نیست. هنگامی که استخر به یک یا کمتر USAP در استخر می رسد، Zygote استخر را با USAP های جدید پر می کند.
    • اگر زیگوت شما با استفاده از ارزیابی تنبل فرآیندها را ایجاد می کند:

      1. سرور سیستم دستوری را دریافت می کند که یک برنامه به پردازش نیاز دارد.
      2. سرور سیستم از یک سوکت دامنه یونیکس برای ارسال دستور به Zygote مناسب استفاده می کند.
      3. Zygote فرآیند را منشعب می‌کند و PID، cgroup و سایر اطلاعات را تغییر می‌دهد.
      4. هنگامی که فرآیند کامل شد، PID را به Zygote برمی‌گرداند و سپس آن را به سرور سیستم ارسال می‌کند.

استخر USAP را فعال کنید

برای فعال کردن استفاده از استخر USAP، یکی از موارد زیر را انجام دهید:

  • ویژگی سیستم dalvik.vm.usap_pool_enabled را در /build/make/target/product/runtime_libart.mk روی true تنظیم کنید.

  • دستور زیر را اجرا کنید:

    adb shell am broadcast -a \"com.google.android.gms.phenotype.FLAG_OVERRIDE\" --es package \"com.google.android.platform.runtime_native\" --es user \"\*\" --esa flags \"usap_pool_enabled\" --esa values \"true\" --esa types \"string\" com.google.android.gms
    

هنگامی که این ویژگی فعال است، هر Zygote مجموعه ای از فرآیندهای دوشاخه را حفظ می کند که بخش های مستقل از برنامه فرآیند راه اندازی برنامه را انجام می دهد.

عیب یابی مشکلات Zygote

این بخش شامل راه حل هایی برای مسائل مربوط به Zygote است.

زیگوت در حال سقوط است

اگر دستگاه شما به درستی راه‌اندازی مجدد نمی‌شود و گزارش‌ها یا گزارش‌های خرابی شما مشکلاتی را با Zygote نشان می‌دهد، احتمالاً به این دلیل است که اخیراً تغییری ایجاد کرده‌اید که باعث از کار افتادن initd یا سرور سیستم می‌شود. رفع کد شما باید مشکل را حل کند.

انکار SELinux یا خرابی IO

Zygote در مورد بهداشت توصیفگر فایل در سراسر مرزهای فرآیند خاص است. هنگامی که توصیفگرهای فایل در زمان فورک وجود دارند، اما در لیست مجاز نیستند، از یک فراخوانی سیستم dup به /dev/null استفاده می‌کنیم تا از استفاده ناخواسته توصیفگرهای فایل حافظه پنهان برای دسترسی به فایل‌های تازه باز شده جلوگیری کنیم.

اگر تغییراتی در چارچوب ایجاد می‌کنید که شامل تلاش برای بارگذاری منابع در Zygote می‌شود و رد SELinux یا خرابی IO را دریافت می‌کنید:

  • برای توصیفگرهای فایل بدون نام، هنگام فراخوانی Restat ، توصیفگرهای فایل را در بردار fds_to_ignore قرار دهید.

  • برای توصیف کننده های فایل نامگذاری شده:

    1. WORKING_DIRECTORY /frameworks/base/core/jni/fd_utils.cpp را ویرایش کنید.
    2. مسیر را به لیست مجاز برای فایل های باز اضافه کنید.