جميع حزم المصدر المفتوح
الأدواتTypeScript

sdkbump

تفحص تطبيقات iOS الأصلية (native) وFlutter وReact Native بحثًا عن تغييرات iOS 27 SDK وتحدّد الإصلاح المناسب لكل منها.

0النجومآخر إصدار: v0.1.3آخر تحديث: 15 أكتوبر 2026
الأنظمة الأساسية:Node.js 22.12+macOSLinux

الترخيص: MIT

التطبيق المبني بـ iOS 27 SDK الذي لا يُعرِّف scene يُجمَّع (compile) دون تحذير، ثم يتوقف عند الإقلاع (launch). تقرأ sdkbump ملفات مشروع iOS أصلي أو Flutter أو React Native/Expo (project.pbxproj وInfo.plist ومصادر Swift وObjective-C وpackage.json وpubspec.yaml)، وتُقرّر مشاكل دورة حياة UIScene على هيئة قواعد من SCN001 إلى SCN004، وتختار الإصلاح المناسب لبيئة المشروع (ecosystem) وإصداره. لا تبني الأداة المشروع ولا تشغّله ولا تغيّره.

الميزات

  • حكم يجيب عن سؤال "هل سيُقلِع؟": فشل في الإقلاع، أو يُقلِع إلى شاشة سوداء، أو يُقلِع بواسطة حزمة التحايل (workaround)، أو إقلاع غير محدَّد
  • iOS أصلي وFlutter (تطبيق ومثال plugin) وReact Native وExpo في تقرير واحد بنفس معرّفات القواعد (rule IDs)
  • الإصلاح يُختار حسب البيئة والإصدار: React Native 0.88 أو scene delegate مكتوب يدويًا، أو خيار الاشتراك الاختياري (opt-in) في Expo SDK 57 أو SDK 58، أو الترحيل (migration) التلقائي في Flutter أو الخطوات اليدوية
  • القواعد محفوظة كبيانات في rules/ios27.json، ويتم التحقق منها بواسطة zod؛ تحمل كل قاعدة وإصلاح وworkaround مصدرًا، ويفشل اختبار عندما لا يحمله أحدها
  • تقارير terminal وMarkdown وJSON، مع --fail-on ورموز الخروج (exit codes) 0 و1 و2 لـ CI
  • تتعرّف على react-native-uiscene-bridge وreact-native-xcode27 وتُظهر النتائج (findings) التي تعالجها هذه الحزم في وقت التشغيل على أنها "handled"، مع حدودها
  • تقرأ الملفات فقط، فلا تحتاج إلى Xcode وتعمل أيضًا على Linux؛ يُطبع النص الوارد من المشروع المفحوص كنص عادي (plain text) في كل صيغة

البدء السريع

sh
1npx @mcamdali/sdkbump --format markdown --output sdkbump.md

التثبيت

npm (global)

sh
1npm i -g @mcamdali/sdkbump
2sdkbump

npx

sh
1npx @mcamdali/sdkbump

Homebrew

sh
1brew install muhittincamdali/tap/sdkbump

لقطات الشاشة

تشغيل sdkbump على تطبيق React Native 0.87: يفشل في الإقلاع عند البناء بـ iOS 27 SDK، مع SCN001 وSCN002 وثلاث طرق لإصلاحه
fixture UIKit الأصلي على محاكي iOS 27.0: لا يعمل بعد الإقلاع، مع رسالة UIKit التي تفيد بأن دورة حياة UIScene مطلوبة
fixtures native-uikit-scenes وnative-swiftui تعمل على محاكي iPhone 17 بإصدار iOS 27.0، مبنية بـ Xcode 27.0
تشغيل sdkbump على تطبيق Flutter بـ AppDelegate مُخصَّص

الجدول الزمني

  1. أول commit وأول إصدار 0.1.0: SCN001 إلى SCN004 لمشاريع iOS الأصلية وFlutter وReact Native وExpo

  2. 0.1.1 و0.1.2: تُقرَأ ملفات المشروع فقط عندما تكون ملفات عادية (regular files) داخل المشروع؛ وملف Info.plist غير القابل للقراءة يُعطي "Launch not determined" بدلًا من فشل الإقلاع

  3. 0.1.3: نُشرت على npm باسم @mcamdali/sdkbump؛ وتُنظَّف محارف التحكم في كل صيغة تقرير وفي stderr

الروابط

مقالة ذات صلة

قراءة المقالة