بررسی خطای Blocked By Play Protect در هنگام نصب برنامه در اندروید

سپر ایمنی Play
سپر ایمنی Play

مقدمه

از چندی پیش با توجه به به‌روز شدن قوانین نصب برنامه‌ها در گوگل‌پلی و بررسی برنامه‌ها توسط Play Protect (سِپر ایمنی پلی)، گزارش‌هایی از توسعه‌دهندگان و کاربران دریافت کردیم و بر آن شدیم که این مطلب را برای کمک بیشتر به توسعه‌دهندگان ایرانی منتشر کنیم.

هدف Play Protect امن کردن برنامه‌هایی است که روی دستگاه‌های اندرویدی در دنیا در حال نصب شدن است. می‌توان گفت گوگل یک سامانهٔ جامع برای مبارزه با برنامه‌ها، وب‌سایت‌ها و هر چیز مخربی که دستگاه‌های اندرویدی رو تهدید می‌کند، ایجاد کرده که این فضا رو برای کاربرانش امن‌تر نماید.

  • مایکت هم برنامه‌هایی که با این‌گونه خطاها مواجه می‌شوند را در فرایند بررسی (قبل از انتشار برنامه) و با گزارش کاربران (بعد از انتشار برنامه)، رد یا غیرفعال می‌کند و به توسعه‌دهندگان اطلاع می‌دهد که این مشکل را حل کنند.

بررسی انواع خطاها

در حال حاضر نحوهٔ بررسی برنامه‌ها در این سیستم شفاف نیست و ممکن است برنامهٔ شما بدون هیچ قصد و منظوری در لیست سیاه قرار بگیرد. به طور کلی بررسی برنامه‌ها توسط Play Protect به دو روش انجام می‌گیرد:

  1. خطاهای هنگام نصب: این دسته از خطاها معیارهای کلی گوگل‌پلی را در لحظه نصب با بررسی apk برنامهٔ شما، نقض می‌کند و بلافاصله به کاربر خطا می‌دهد. به عنوان مثال خطای «توسعه‌دهنده ناشناخته» از این دسته است که در ادامه بیشتر توضیح داده می‌شود.
  2. خطاهایی که با مرور زمان به وجود می‌آیند: این دسته از خطاها پس از نصب برنامه روی چندین دستگاه و رصد برنامه در طول زمان به وجود می‌آید. حتی مشاهده شده که برنامه‌ای بعد از ۲۰ هزار نصب شامل نقض قوانین شده. همچنین ممکن است که این خطاها با گزارش کاربران به گوگل رخ بدهد و برنامه‌ای که مدت‌ها بدون مشکل فعال بوده، وارد لیست سیاه سپر ایمنی Play شود. به عنوان مثال برنامه‌هایی که اطلاعاتی را از دستگاه کاربر برای سروری ارسال می‌کنند، مورد بررسی قرار می‌گیرند و پس از مدتی با این خطا مواجه می‌شوند.

برخورد Play Protect با خطاها، متفاوت است. مثلا بعضی خطاها فقط هنگام نصب نمایش داده می‌شود، برخی را با دکمهٔ Install anyway می‌توان نصب کرد، در بعضی از موارد از طریق نوتیفیکیشن به کاربر خبر می‌دهد و حتی در موارد محدودی گوگل به صورت خودکار برنامه‌ را از دستگاه کاربرانش حذف می‌کند (تلگرام طلایی و ...).

  • برای آشنایی بیشتر با نحوهٔ ساز و کار این سرویس مستند Play Protect را از اینجا ببینید.

خطای توسعه‌دهنده ناشناخته (Unknown Developer)

«سپر ایمنی Play، برنامه‌نویس این برنامه را نمی‌شناسد. برنامه‌هایی که برنامه‌نویس ناشناخته دارند، گاهی اوقات می‌توانند ناامن باشند»
«سپر ایمنی Play، برنامه‌نویس این برنامه را نمی‌شناسد. برنامه‌هایی که برنامه‌نویس ناشناخته دارند، گاهی اوقات می‌توانند ناامن باشند»


یکی از شایع‌ترین موارد، خطای توسعه‌دهنده ناشناخته یا Unknown Developer است که در دستهٔ خطاهای لحظه‌ای در هنگام نصب به شمار می‌آید. در این خطا گوگل حساب توسعه‌دهندگی شما نمی‌شناسد و به کاربر اطلاع می‌دهد که این برنامه توسط توسعه‌دهندهٔ ناشناس روی دستگاه شما در حال نصب است.

ابتدا دقت کنید که سپر ایمنی Play توسعه‌دهنده‌ها را از روی امضای (Sign) برنامه‌ها می‌شناسد، بنابراین در مرحلهٔ ساخت امضا موارد زیر را رعایت کنید:

همهٔ فیلد‌های فرم ساخت امضا در Android Studio را با دقت پر کنید:

صفحهٔ ساخت امضا در اندروید استودیو
صفحهٔ ساخت امضا در اندروید استودیو
  • فیلد Alias: نام مستعار
  • فیلد Password: رمز کلید
  • فیلد Confirm: تایید رمز وارد شده
  • فیلد Validity: تاریخ انقضا
  • فیلد First and Last Name: نام و نام خانوادگی
  • فیلد Organizational Unit: سمت سازمانی
  • فیلد Organization: نام سازمان یا شرکت
  • فیلد City or Locality: محل سکونت
  • فیلد State or Province: استان
  • فیلد Country Code: کد کشور را IR وارد نمایید.

به طور کلی دو روش برای رفع این مشکل وجود دارد:

۱. در صورتی که برنامهٔ خود را با همین امضا روی Google Play قرار دهید، امضای شما شناخته می‌شود و این مشکل به وجود نمی‌آید. این راه مطمئن‌ترین و قطعی‌ترین راه ممکن است ولی برای همهٔ توسعه‌دهندگان مقدور نیست.

۲. می‌توانید با استفاده از فرم Play Protect Appeals امضای خود را به گوگل معرفی کنید.

Play Protect Appeals
Play Protect Appeals
  • فیلد Email address: آدرس ایمیل
  • فیلد Developer name: نام توسعه‌دهنده
  • فیلد Application package name : نام بستۀ برنامه
  • فیلد URL to download your APK file: آدرس لینک مستقیم دانلود برنامه. در این فیلد باید apk برنامهٔ خود را در جایی آپلود کنید تا تیم بررسی گوگل بتواند فایل برنامه شما را دانلود کند. بهتر است از دامین برنامهٔ خود استفاده کنید ولی در صورتی که وب‌سایت ندارید از سرویس‌های نظیر فایل استفاده کنید.
  • فیلد Additional information to support your appeal: توضیحی در مورد برنامه به زبان انگلیسی

بعد از تکمیل اطلاعات و Submit کردن فرم باید پیامی مشابه زیر دریافت کنید:

"We have successfully received the appeal for your app, Our team will review the app an any information you have provided"

توجه کنید که بررسی برنامه شما ممکن از تا یک هفته طول بکشد. در این مدت Sign و Package Name برنامه خود را تغییر ندهید و منتظر بمانید. همچنین پس از بررسی، گوگل به شما هیچ خبری نمی‌دهد و باید بعد از چند روز نصب برنامه خود را در دستگاهی که به اینترنت متصل است و سرویس Google Play Protect فعال دارد، تست کنید.


نکاتی که باید رعایت کنید:

به صورت کلی باید موارد زیر را رعایت کنید:

  • مقدار targetSdkVersion برنامهٔ خود را بزرگ‌تر مساوی با 26 (اندروید 8.0) نگه دارید. در صورتی که از API پایین‌تر از 26 استفاده می‌کنید، این مقدار را به 26 یا بیشتر ارتقا دهید. توجه کنید که قبل از تغییر این مقدار، مستندات تغییر رفتار اندروید در نسخه‌های مختلف را مطالعه کنید. در اینجا می‌توانید مستند تغییر به targetSdkVersion نسخهٔ 26 را ببینید.
  • هیچ URL با پروتکل HTTP در برنامه به کار نبرید و تمام ارتباط‌های خود را با HTTPS برقرار کنید. برای اطلاعات بیشتر اینجا را ببینید.
  • دسترسی‌ها (Permissions) برنامهٔ خود و کتابخانه‌هایی که استفاده می‌کنید را بررسی کنید و در صورت امکان دسترسی‌های اضافه را حذف نمایید.
  • از کتابخانه‌های ناشناس استفاده نکنید و پس از استفاده از هر کتابخانه‌ای Manifest نهایی برنامهٔ خود را مرور کنید. برای نحوهٔ مشاهدهٔ Manifest نهایی اینجا را ببینید.
  • حساسیت زیادی به برنامه‌های Multi-Process وجود دارد. چک کنید که در صورت امکان برنامهٔ شما Single-Process باشد. برای آشنایی بیشتر اینجا را ببینید.
  • در برنامهٔ خود از دستورات Root و Unix Commands استفاده نکنید. گوگل حساسیت زیادی به کدهای بدون APIی مجاز دارد.
  • برنامهٔ شما نباید شامل برنامهٔ دیگری باشد و یا برنامهٔ دیگری را دانلود و یا نصب کند.
  • برنامهٔ شما نباید بدون اجازهٔ کاربر Shortcutی برای اجرای برنامهٔ خود یا دیگر برنامه‌ها در دستگاه کاربر ایجاد کند.

نتیجه‌گیری

با توجه به اینکه اخیراً رفتار برنامه‌های اندرویدی بیشتر رصد می‌شود، نیاز است تا توسعه‌دهندگان این حوزه حساسیت بیشتری در رعایت اصول و قوانین گوگل نشان دهند. همچنین باید کتابخانه‌ها، SDKها و... را قبل از پیاده‌سازی بیشتر بررسی کرد تا رفتار آن‌ها در کنار برنامهٔ شما از دید گوگل مشکوک به نظر نرسد. توجه کنید که به‌روز نگه داشتن targetSdkVersion هم می‌تواند کمک زیادی برای حل این‌گونه مشکلات بکند.