برنامه نویسی اندروید با سی شارپ

برنامه نویسی اندروید با سی شارپاخیراً زمان زیادی را صرف مصاحبه با توسعه برنامه نویسی اندروید با سی شارپ دهندگان اندروید کرده ام. و من تعجب کردم که چقدر کمی از توسعه دهندگان اندروید زبان C را می دانند. اکثر توسعه دهندگان فقط از جاوا استفاده می کنند و متقاعد شده اند که C برای نیازهای آنها بسیار پیچیده است. اما من سعی خواهم کرد این افسانه را از بین ببرم - نوشتن کد C می تواند بسیار ساده تر و اجرای آن بسیار ساده تر باشد.زنجیره ابزاراولین قدم زنجیره ابزار است. برای این آموزش، من از یک مجموعه بسیار ابتدایی از زنجیره ابزار استفاده خواهم کرد. من قبلاً آخرین NDK (r21d) را از وب سایت رسمی دانلود کرده ام و متغیر محیطی ANDROID_NDK را اضافه کرده ام.برای کار با یک پلتفرم خاص، باید معماری CPU و API هدف را انتخاب کنید. به عنوان مثال، aarch64-linux-android21 معماری Android ARM64 با برنامه نویسی اندروید با سی شارپ هدف API 21 است.اگر با C آشنایی ندارید، اکیداً توصیه می کنم از کتاب "زبان برنامه نویسی C" نوشته Kernighan و Ritchie (همچنین با نام K&R C) شروع کنید. این بسیار اساسی است اما هنوز در زمان ما بسیار مفید است. طبق معمول از Hello world شروع می کنم. در اینجا یک نمونه از این کتاب (که کمی برای سیستم عامل مدرن تغییر یافته است):بسیار خوب، مرحله بعدی ساخت و اجرا به ایرانیان سایبر عنوان یک برنامه خط فرمان در دستگاه Android.من از کامپایلر clang استفاده می کنم (این یک کامپایلر پیش فرض در NDK 14 است). Clang یک کامپایلر frontend برای زبان های مختلف از جمله C و C++ است که از LLVM به عنوان backend استفاده می کند. و یک گام کوچک در یک نظریه تدوین. در C 4 مرحله کامپایل وجود دارد:بازگشت به تمرین، این دستور فایل برنامه نویسی اندروید با سی شارپ .c را به شی کامپایل می کند و سپس آن را به فایل اجرایی پلتفرم زنجیره ابزار پیوند می دهد:اگر روی API 21 یا بالاتر اجرا می‌کنید، باید یک پرچم برای فایل‌های اجرایی مستقل از موقعیت تنظیم کنید.با شروع Android 4.1(سطح API 16)، پیوند دهنده پویا اندروید از فایل های اجرایی مستقل از موقعیت (PIE) پشتیبانی می کند. از Android 5.0(سطح API 21)، فایل های اجرایی به PIE نیاز دارند. برای استفاده از PIE برای ساخت فایل های اجرایی خود، پرچم -fPIE را تنظیم کنید. این پرچم با تصادفی کردن مکان کد، بهره برداری از اشکالات خرابی حافظه را دشوارتر می کند. 1برای اجرای فایل اجرایی helloworld به دستگاه اندروید یا شبیه ساز نیاز دارید. فایل اجرایی را کپی کرده و از طریق adb اجرا کنید:تبریک ?، شما به تازگی اولین برنامه خط فرمان C خود را برای اندروید اجرا کردید. این رویکرد برای آزمایش برخی از ویژگی‌ها در C بدون نیاز به ایجاد برنامه نویسی اندروید با سی شارپ برنامه اندروید، کامپایل جاوا، بسته فایل apk و غیره عالی است. فقط باینری را کپی کرده و اجرا کنید - بسیار ساده است.در این بخش، من یک فایل اجرایی مرتبط با کتابخانه های هر دو نوع ایجاد خواهم کرد. به عنوان یک نمونه برنامه، تصمیم گرفتم یک ابزار کوچک ایجاد کنم که نتایج دو پیاده‌سازی ریشه مربع معکوس را مقایسه می‌کند: کتابخانه ریاضی سیستم و هک که در Quake III استفاده شد. در کتابخانه استاتیک، من نسخه Quake III از یک جذر معکوس را در نسخه dynamic - math.h پیاده سازی کرده ام. و این فایل اجرایی از کاربر یک ورودی می خواهد و هر دو نتیجه را چاپ می کند.بیایید با کتابخانه استاتیک شروع کنیم. باز هم یک گام کوچک در تئوری:کتابخانه های استاتیک به سادگی برنامه نویسی اندروید با سی شارپ مجموعه ای از فایل های شی معمولی هستند. این مجموعه با استفاده از برنامه ar (Archiver) ایجاد شده است. کتابخانه‌های استاتیک به کاربران اجازه می‌دهند بدون نیاز به کامپایل مجدد کد، به برنامه‌ها پیوند دهند و در زمان کامپایل مجدد صرفه‌جویی کنند. اگر برنامه نویسان بخواهند به برنامه نویسان اجازه پیوند به کتابخانه خود را بدهند، اما نمی خواهند کد منبع کتابخانه را بدهند، اغلب برای توسعه دهندگان مفید هستند. 2این دستور فایل .c را در فایل .o(ابجکت) کامپایل برنامه نویسی اندروید با سی شارپ می کند. این یک شی واسطه است که برای ایجاد یک کتابخانه استاتیک استفاده می شود. برای درک عمیق‌تر اشیاء، از ابزار nm استفاده می‌کنیم: