برنامه نویسی

Sandbox: Bash Deny (1) File-Read-Data Pods-App-Frameworks.sh

مشکل

اگر در حال تهیه یک برنامه IOS ION هستید و اخیراً با Xcode 15.3 به MacOS Sonoma 14.4.1 ارتقا یافته اید ، ممکن است با یک خطای ماسه ای ناامیدکننده روبرو شده باشید که مانع از ساخت پروژه شما می شود:

Sandbox: bash(2538) deny(1) file-read-data /Users/.../ios/App/Pods/Target Support Files/Pods-App/Pods-App-frameworks.sh
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این خطا به طور معمول هنگامی ظاهر می شود که ویژگی Script Script Script Script Script دسترسی به اسکریپت های تولید شده توسط Cocoapods را مسدود می کند و مانع از انجام موفقیت آمیز فرآیند ساخت می شود.

درک ماسهبازی اسکریپت کاربر

Sandboxing Script Script یک ویژگی امنیتی است که در نسخه های اخیر Xcode معرفی شده است که دسترسی سیستم فایل را به اسکریپت های ساخت محدود می کند. در حالی که این امر با محدود کردن آنچه اسکریپت ها می توانند در طی فرآیند ساخت به آن دسترسی پیدا کنند ، امنیت را تقویت می کند ، می تواند در عملیات ساخت و ساز مشروعیت ، به ویژه مواردی که شامل کاکاپودها و سایر ابزارهای مدیریت وابستگی هستند ، تداخل کند.

مکانیسم ماسهبازی مانع از دسترسی اسکریپت ها به پرونده های خارج از محیط ماسهبازی تعیین شده آنها می شود ، که می تواند ساخت هایی را که به دسترسی به اسکریپت ها و چارچوب های تولید شده با غلاف متکی هستند ، بشکنند.

راه حل های ناموفق مشترک

قبل از غواصی در راه حل ، شایان ذکر است که چندین مرحله عیب یابی مشترک اغلب در حل این مسئله ناکام هستند:

  • تمیز کردن پوشه ساخت – در حالی که همیشه یک قدم اول خوب است ، این به تنهایی محدودیت های جعبه جعبه را برطرف نمی کند
  • اجرای دستورات Cocoapods (pod deintegrateبا pod cleanبا pod install) – این دستورات می توانند به مشکلات وابستگی کمک کنند اما تنظیمات ماسهبازی را برطرف نمی کنند
  • به روزرسانی کاکاپود (gem install cocoapods) – به روزرسانی های نسخه رفتار ماسه جعبه Xcode را تغییر نمی دهد

راه حل کامل

کلید حل این مسئله درک Xcode است دو جداگانه تنظیمات ماسهبازی اسکریپت کاربر که هر دو نیاز به پیکربندی دارند:

مرحله 1: ماسهبازی اسکریپت کاربر را برای هدف غیرفعال کنید

  1. پروژه خود را در Xcode باز کنید
  2. پروژه خود را در Project Navigator انتخاب کنید
  3. هدف برنامه خود را انتخاب کنید (معمولاً “برنامه” نامگذاری شده است)
  4. به برگه “تنظیمات ساخت” بروید
  5. جستجوی “ماسهبازی اسکریپت کاربر”
  6. تنظیمات را از “بله” به “نه” تغییر دهید

مرحله 2: ماسهبازی اسکریپت کاربر را برای پروژه غیرفعال کنید

  1. در حالی که هنوز در برگه تنظیمات ساخت
  2. مطمئن شوید که در حال مشاهده هستید طرح تنظیمات (نه فقط هدف)
  3. در سطح پروژه به دنبال تنظیمات “Sondboxing Script Script Script” باشید
  4. این تنظیم را از “بله” به “نه” نیز تغییر دهید

چرا هر دو تنظیم مهم هستند

بسیاری از توسعه دهندگان فقط تنظیم سطح هدف را تغییر می دهند و تعجب می کنند که چرا این مسئله همچنان ادامه دارد. XCode وراثت تنظیمات از سطح پروژه به سطح هدف را میراث می کند ، اما هر دو می توانند پیکربندی مستقل داشته باشند. محدودیت ماسهبازی می تواند در هر سطح اجرا شود ، بنابراین هر دو باید غیرفعال شوند تا اطمینان حاصل شود که اسکریپت ها می توانند به پرونده های لازم دسترسی پیدا کنند.

تأثیر بر CI/CD و App Store ساخته شده است

اگر از خدمات ادغام مداوم مانند Ionic AppFlow برای ساخت App Store استفاده می کنید ، باید اطمینان حاصل کنید که این تنظیمات به مخزن شما متعهد است. تنظیمات ساخت در شما ذخیره می شود .xcodeproj پرونده ، بنابراین پس از انجام این تغییرات به صورت محلی ، آنها را متعهد و فشار دهید تا اطمینان حاصل کنید که خط لوله CI/CD شما از همان پیکربندی استفاده می کند.

ملاحظات امنیتی

غیرفعال کردن ماسهبازی اسکریپت کاربر برخی از محافظت های امنیتی را در طی فرآیند ساخت کاهش می دهد. با این حال ، برای پروژه های یونی که به شدت به کاکاپودها و اجرای خودکار اسکریپت متکی هستند ، این اغلب برای عملکرد لازم است. تأثیر امنیتی در درجه اول در طول توسعه و زمان ساخت است ، نه در برنامه نهایی.

رویکردهای جایگزین

اگر ترجیح می دهید جعبه ماسه بندی را فعال کنید ، ممکن است در نظر بگیرید:

  • مدیریت وابستگی دستی – اجتناب از Cocoapods به طور کامل (اگرچه این باعث افزایش چشمگیر پیچیدگی می شود)
  • مراحل ساخت سفارشی – بازسازی فرآیند ساخت خود برای کار در محدودیت های ماسهبازی
  • منتظر به روزرسانی – نسخه های آینده Cocoapods یا Xcode ممکن است مشکلات سازگاری را برطرف کند

با این حال ، برای اکثر تیم های توسعه ، غیرفعال کردن ماسهبازی اسکریپت کاربر عملی ترین راه حل است.

پایان

مسئله ماسهبازی اسکریپت کاربر در پروژه های IONIC IOS یک مشکل شایع است که ناشی از اقدامات امنیتی پیشرفته Xcode است که با فرآیند ساخت Cocoapods در تضاد است. راه حل نیاز به غیرفعال کردن ویژگی ماسهبازی در هر دو پروژه و سطح هدف در تنظیمات ساخت Xcode دارد.

در حالی که ممکن است این یک مشکل ساده به نظر برسد ، هنگامی که آن را می دانید ، نیاز به تنظیم دوگانه اغلب توسعه دهندگان را از گارد محافظت می کند و منجر به ادامه خرابی حتی پس از تلاش برای راه حل “آشکار” می شود. با اطمینان از پیکربندی صحیح هر دو تنظیمات ، می توانید روند ساخت خود را بازیابی کرده و به توسعه برنامه IOS IOS خود بدون وقفه ادامه دهید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا