تاخیر در انتشار سورس کدهای AOSP و دردسرهای توسعهدهندگان در مهندسی معکوس کتابخانهها — AOSP Source Releases Are So Late Developers Disassemble Libraries to Report Bugs
خلاصه
تأخیر در انتشار کدهای منبع AOSP توسط گوگل باعث شده تا توسعهدهندگان برای یافتن باگهای کتابخانههای سیستمی اندروید به دیساسمبل کردن فایلهای باینری روی بیاورند. بحث اخیر در مخزن NDK نشان میدهد که چگونه یک باگ در کتابخانه C اندروید (bionic) برنامههای بومی را مختل کرده است.
ماجرای یک باگ پنهان در کتابخانه Bionic
اخیراً گزارشی در مخزن android/ndk در گیتهاب ثبت شده که توجه بسیاری از توسعهدهندگان را به خود جلب کرده است. این مسئله حول محور یک باگ در توابع کاراکترهای عریض (wide strings) مانند wcscspn() و wcspbrk() در کتابخانه C اندروید یا همان bionic میچرخد. در نسخههای اخیر اندروید، این توابع زمانی که با مجموعهای از کاراکترهای کمتر از 0x100 مواجه میشوند و رشته حاوی کاراکترهای پیشرفتهتر (مانند ایموجیها، حروف سیریلیک یا CJK) است، به اشتباه رفتار کرده و متوقف میشوند. این موضوع باعث از کار افتادن برخی برنامههای بومی (native) شد که از موتورهای اسکریپتنویسی یا کتابخانههای پردازش متن استفاده میکنند.
نکته جالب و چالشبرانگیز اینجاست که توسعهدهنده گزارشدهنده برای کشف ریشه مشکل مجبور شده فایل libc.so را دیساسمبل کند؛ چرا که کدهای منبع آخرین نسخههای AOSP (پروژه متنباز اندروید) هنوز به صورت عمومی منتشر نشدهاند و تیم گوگل نیز تأیید کرده که کدهای منتشر شده عمومی با نسخه اجرایی روی دستگاهها فاصله زمانی دارند.
چرا این مسئله در Hacker News داغ شد؟
این موضوع در هکر نیوز بحثهای گستردهای را درباره روند مدیریت AOSP و سیاستهای انتشار کدهای منبع توسط گوگل ایجاد کرد. بسیاری از توسعهدهندگان از روند مبهم انتشار سورسکدها ابراز نگرانی کردند. برخی کاربران حدس میزنند که این تأخیرها ممکن است ناشی از قوانین جدید اتحادیه اروپا درباره الزامات بهروزرسانی طولانیمدت دستگاهها و محاسبه زمان انتشار سورسکد باشد، در حالی که گروهی دیگر به کاهش شفافیت کلی در اکوسیستم اندروید انتقاد دارند.
تیم گوگل (از جمله از طریق اکانت enh-google) به سرعت پاسخ داد، وجود باگ را تأیید کرد و حتی به این نکته اشاره نمود که تستهای موجود خود کتابخانه نیز در پوشش کاراکترهای غیر-ASCII دچار نقص بودهاند.
درباره پروژه Android NDK
مخزن android/ndk مربوط به کیت توسعه بومی اندروید (Native Development Kit) است که به توسعهدهندگان اجازه میدهد کدهای C و C++ خود را در قالب کتابخانههای اشتراکی JNI در برنامههای اندرویدی خود به کار بگیرند. این ابزار برای بازیها، پردازشهای سنگین گرافیکی (مانند Vulkan) و برنامههای با کارایی بالا حیاتی است.
در یک نگاه
- نام پروژه: Android NDK (
android/ndk) - حوزه فعالیت: ابزارها و کتابخانههای توسعه بومی برای سیستمعامل اندروید
- موضوع چالش: تاخیر در انتشار سورسکد AOSP و بروز باگ در توابع کاراکتری
bionic - واکنش جامعه: نگرانی شدید توسعهدهندگان درباره کاهش شفافیت و دشواری دیباگ مشکلات سیستمعامل بدون دسترسی به کدهای منبع
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل