محمد امین سلطانی
محمد امین سلطانی
خواندن ۷ دقیقه·۴ سال پیش

ماراتون خروجی گرفتن ios در زامارین فرم - قسمت اول (آماده سازی)

باسلام خدمت همه دوستان برنامه نویس (به ویژه دات نتی ها :)

میخوام داخل این پست (شاید هم به دلیل طولانی شدن، تبدیلش کردم به دوتا) برای یک بار هم که شده این قضیه رو حلش کنم. تمام چالش ها و موانعی که وجود داره رو قدم به قدم با هم حلش میکنیم.

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

همچنین شما دوستان میتونید آموزش ویدیویی این قسمت رو از قسمت زیر مشاهده نمایید.

https://youtu.be/99F-cYbmj04

پیش زمینه: چند سال پیش که برنامه نویسی زامارین رو شروع کردم برای خروجی گرفتن ios، ابتدا یدونه مک نسخه (high sierra) رو به صورت فایل .iso یا نسخه ویرچوال باکسی (یا vmware) از داخل اینترنت پیدا و دانلود و سپس فرایند نصب رو شروع میکردم. پس از کلی چالش و داستان های عجیب و غریب در نهایت جواب میداد و از داخل ویژوال استودیو میتونستم کانکت بشم ولی برای یه خروجی ساده گرفتن اپ hello world با سیستمی که من داشتم (i7 نسل 7 و رم 16 ddr4 و حافظه hdd ) حدود نیم ساعتی طول می کشید و واقعا فرایند کلافه کننده ای بود.

پس از داستان های تحریم اپل و حذف برنامه های ایرانی از استور و پیچیده شدن فرایند انتشار برنامه ها، کارفرما ها هم کم کم روی به pwa آوردن (که به شدت Blazor رو برای این کار پیشنهاد میکنم) و بعد از اون برنامه هایی که توسعه میدادم صرفا ازشون خروجی اندروید میگرفتم و اکثر کارفرما ها هم به دلیل سرعت بالای توسعه راضی بودن.

اما چندی پیش بنا به شرایطی تصمیم بر این گرفتم که خروجی ios برنامه ای که نوشتم رو هم بگیرم و کار خودمو تکمیل کنم. به همین خاطر چند روزی درگیر سعی و خطا بودم و خیلی ازم وقت و انرژی گرفت. امیدوارم با این مطلب شما دوستان سریعا به خواسته تون برسید و دیگه درگیر ارور و چالش ها و سرچ کردن های مختلف نشید.

اما نکته ای که وجود داشت روشی که من بلد بودم برای خروجی گرفتن ios دیگه جواب نمیداد و اون به این دلیل بود که توسعه macOS HighSierra در ورژن 10.13.6 متوقف شده بود و اپل دیگه توسعه نمیده این نسخه رو. و از اونجایی که شما برای خروجی گرفتن باید روی مک تون xcode (و همچنین visual studio for mac) داشته باشید. باید xcode دانلود کنید. اما وقتی که وارد اپ استور می شوید نسخه 12.5 رو برای دانلود گذاشته که روی اون ورژن از مک نصب نمیشه. یک راهی که وجود داشت این بود که وارد developer.apple.com/downloads بشید و ورژن های قبل رو دانلود کنید و به صورت دستی خودتون نصب کنید. ولی این کار هم جواب نیست چون ویژوال استدیو داخل مک بهتون ارور میده و میگه باید حتما xcode رو آپدیت کنید. خلاصه، نتیجه ش این میشه که باید از دوست قدیمی و خوبمون خداحافظی کنیم و دنبال یک دوست جدید بگردیم.

دوست جدیدمون macOS BigSur هستش :)

خب اینا مقدمه بود بریم که ماراتون رو شروع کنیم :)

یک سری پیش نیاز ها داره که باید دانلودشون کنید منتها این نکته رو باید بگم که خیلی بهتره که هاردتون ssd باشه (نباشه هم اوکیه ولی سرعت کار پایین میاد) . سیستمی که من باهاش این ماراتون رو گذروندم => i7 نسل 8 و رم 16 ddr4 و هارد SSD)

1. دانلود فایل .iso آخرین نسخه macOS BigSur (حجم حدود 16 گیگ / احتمالا vpn بخواد) :

2. دانلود virtualBox (البته میتونید از سایت های ایرانی هم دانلود کنید)

3. دانلود Virtual Box Code (بعدا کاربردش رو میگیم)

4. دانلود VirtualBox Extension

5. حساب کاربری اپل (Apple ID) (که میتونید نحوه ساختش رو تو اینترنت سرچ کنید یا از بعضی از وبسایت ها بخرید)

قدم اول

1. باید ویرچوال باکس رو (اگر ندارید روی ویندوز) نصب کنید که ساده و چند تا next باید بزنید.

2. پس از نصب برنامه، اونو باز کنید و به مسیر Tools>Pereferences>Extensions برید و طبق عکس زیر اون رو اضافه و نصب کنید.

قدم دوم - ساختن ماشین مجازی جدید و پیکربندی اون

طبق تصاویر زیر، یک ماشین جدید بسازید و اونو پیکربندی کنید.

دقت کنید که عکس ها به ترتیب و دقیق هستن و سعی کنید دقیقا مثل اونا عمل کنید.

یک نام انتخابی و دلخواه برای ماشین خودتون انتخاب کنید و اون رو جایی یادداشت کنید چون در ادامه لازمش داریم. همچنین مسیر مورد نظرتون رو برای نصب مشخص کنید. (دقت کنید که درایوی که برای نصب انتخاب میکنید حداقل باید 70 گیگ فضای خالی داشته باشه)

اینجا باید مقدار رمی که میخواید تخصیص بدید به ماشین مجازی رو مشخص کنید (که البته در آینده قابل تغییره)

بر روی گزینه دوم کلیک کنید تا فرایند تخصیص فضا رو مشخص کنه.

همانند تصویر بالا گزینه دوم یعنی از نوع VHD انتخاب کنید.

یک توضیحی در باره این دو تا گزینه بدم. اولی (Dynamically allocated) یعنی خودش بر حسب نیاز میاد و سایز خودش رو به اندازه ی ماکزیممی که شما در مرحله بعد تخصیص میدید بزرگ میکنه. یعنی بر فرض شما اگر 60 گیگ حافظه براش در نظر بگیرید، در همون ابتدای کار 60 گیگ رو به خودش اختصاص نمیده و از حافظه موجود سیستم شما کم نمی کنه و به مرور زمان و بر حسب نیاز حجم خودش رو زیاد میکنه (تا 60 گیگ)

گزینه دوم بر عکس اولی هست. یعنی اگر شما 60 گیگ بهش فضا بدید در همون ابتدای کار اونو میگیره و به خودش اختصاص میده.

هر روش یک سری مزایا و معایب دارن ولی مهمترینشون اینه که مثلا اولی حجم کمتری از سیستم شما رو میگیره در ابتدای کار و شما رو با محدودیت حافظه درگیر نمیکنه اما در عوض سرعت ماشین مجازی به نسبت گزینه دوم کمتر هستش و گزینه دوم اگر در همون ابتدا حجم قابل ملاحظه ای از storage شما رو میگیره ولی در عوض سرعت ماشین مجازی خیلی بالاتر میره. (دلیلش هم به خاطر اینه که توی اولی میاد و از حافظه های chunk به صورت لیست پیوندی استفاده میکنه و همین کار سرعت کار رو کاهش میده. اگر خواستید بیشتر در این باره بدونید، این مطلب من رو درباره حافظه ها بخونید)

https://vrgl.ir/n06nV

اما نکته ای که وجود داره ما مجبور هستیم به دلیل نوع فایل سیستم اپل گزینه دوم رو حتما انتخاب کنیم و من با اولی هم تست کردم منتها حین نصب سیستم عامل خطا میده و کل زحمات به فنا میره :)

و اما در این مرحله حافظه مورد نظرتون رو باید اختصاص بدید. (پیشنهاد من حداقل 70 و به بالا هستش ولی اگر محدودیت حافظه دارید 60 هم اوکیه اما دیگه زیر 60 به مشکل بر میخورید و در واقع یه جورایی لب مرزه. اگر کمتر از 60 انتخاب کنید در ادامه به مشکل میخورید و مجبورید ماشین مجازی رو پاک کنید و دوباره از اول شروع کنید که به نظرم به هیچ وجه این ریسک رو نکنید که واقعا پشیمون میشید . مثل من که شدم :)

نکته ای هم که هست این نوع از حافظه رو VHD نمیشه بعد از فرایند تخصیص حافظه افزایش داد (تست کردم نشد :) و باید همین اول کار همه چیو درست انجام بدید.

در نهایت روی دکمه create کلیک کنید.

بعد از اینکه ماشین رو ساختید، اون رو از منوی سمت چپ انتخاب و بر روی دکمه settings کلیک کنید تا صفحه تنظیمات برای شما باز بشه.

در این تب، نام ماشین مجازی خودتون رو انتخاب و کپی کنید و در جایی (notepad) نگه دارید چون در ادامه مورد نیازتون میشه.

در تب System تیک گزینه Floppy رو بردارید. همچنین میتونید مقدار رم تخصیص داده شده هم تغییر بدید.

در همان تب system، به تب Processor برید و بسته به سیستمتون مقدار پردازنده رو مشخص کنید. (دقت کنید هرچقدر بیشتر باشه سرعت ماشین مجازی بالاتر میره)

به تب Display برید و مقدار Video Memory رو به آخرین میزان افزایش بدید.

سپس به تب Storage برید و روی آیکون دیسک کلیک کنید و فایل .iso که دانلود کردید رو بهش معرفی کنید.

مثل عکس زیر:

سپس از طریق عوض کردن SATA Port ها اولویت فایل .iso رو بیشتر از vhd بزارید. (همانند تصویر زیر)

در نهایت بر روی OK کلیک کنید و تنظیمات رو ثبت کنید.

قدم سوم - اجرای دستورات VBoxManage

ابتدا cmd رو از حالت Run As Administrator اجرا کنید و به مسیر زیر بروید. ( از طریق دستور cd)

نکته : ورژن Virtual box باید 6 به بعد باشه.

cd &quotC:\Program Files\Oracle\VirtualBox\&quot

سپس دستورات زیر را به ترتیب اجرا کنید: (این دستورات در فایل دانلود شده شماره 3 نیز موجود است)

نکته : به جای VM Name نام ماشین مجازی که قبلا توی notepad ذخیره کردید (نام ماشین مجازی ساخته شده) جایگذاری کنید.

VBoxManage.exe modifyvm &quotVM Name&quot --cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff
VBoxManage setextradata &quotVM Name&quot &quotVBoxInternal/Devices/efi/0/Config/DmiSystemProduct&quot &quotiMac19,1&quot
VBoxManage setextradata &quotVM Name&quot &quotVBoxInternal/Devices/efi/0/Config/DmiSystemVersion&quot &quot1.0&quot
VBoxManage setextradata &quotVM Name&quot &quotVBoxInternal/Devices/efi/0/Config/DmiBoardProduct&quot &quotMac-AA95B1DDAB278B95&quot
VBoxManage setextradata &quotVM Name&quot &quotVBoxInternal/Devices/smc/0/Config/DeviceKey&quot &quotourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc&quot
VBoxManage setextradata &quotVM Name&quot &quotVBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC&quot 1

سپس CMD را ببندید .

هم اکنون تمامی تنظیمات مورد نیز برای نصب مک انجام شده و لازمه که در قدم بعدی اقدام به نصب خود سیستم عامل بکنیم.

به خاطر این که مبحث زیادی طولانی نشه و از حوصله خارج نشه ، نصب سیستم عامل رو برای پست بعدی میگذاریم.

موفق باشید.

https://vrgl.ir/YSu09


https://vrgl.ir/rddVE
xamarin iosxamarinخروجی گرفتن iosنصب مک بر روی ماشین مجازیxamarin forms
دانشجوی مهندسی کامپیوتر | NET Developer.
شاید از این پست‌ها خوشتان بیاید