0Pricing
Swift Academy · درس

الأهداف الثنائية وXCFrameworks

وزّعوا الشيفرة مغلقة المصدر بصيغة XCFramework واستهلكوها كهدف ثنائي.

الأهداف الثنائية وXCFrameworks درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.

ما الهدف الثنائي؟

يوزّع الهدف الثنائي إطار عمل مترجمًا مسبقًا (XCFramework) بدلًا من الشيفرة المصدرية، مما يحمي التطبيقات الاحتكارية.

// Package.swift:
.binaryTarget(
  name: "ClosedSDK",
  path: "Frameworks/ClosedSDK.xcframework"
)

ما XCFramework؟

تجمع XCFramework عدة شرائح للمنصات (iOS وmacOS والمحاكي) في أرشيف واحد قابل للتوزيع.

// XCFramework structure:
// ClosedSDK.xcframework/
// ├── ios-arm64/
// ├── ios-arm64_x86_64-simulator/
// └── macos-arm64_x86_64/

إنشاء XCFramework

أنشئ أرشيفًا لكل منصة، ثم ادمجها باستخدام xcodebuild -create-xcframework.

xcodebuild archive -scheme MySDK -destination "generic/platform=iOS" -archivePath ios.xcarchive SKIP_INSTALL=NO
xcodebuild archive -scheme MySDK -destination "generic/platform=iOS Simulator" -archivePath sim.xcarchive SKIP_INSTALL=NO
xcodebuild -create-xcframework \
  -framework ios.xcarchive/Products/Library/Frameworks/MySDK.framework \
  -framework sim.xcarchive/Products/Library/Frameworks/MySDK.framework \
  -output MySDK.xcframework

هدف ثنائي بعيد مع المجموع الاختباري

أشِر إلى ملف XCFramework المضغوط المستضاف عن بُعد، مع تضمين مجموع SHA-256 الاختباري للتحقق من سلامته.

.binaryTarget(
  name: "ClosedSDK",
  url: "https://cdn.example.com/ClosedSDK-1.0.0.xcframework.zip",
  checksum: "abc123def456..."
)

حساب المجموع الاختباري

استخدم swift package compute-checksum لإنشاء مجموع SHA-256 الاختباري للملف المضغوط.

swift package compute-checksum ClosedSDK-1.0.0.xcframework.zip
# Outputs: abc123def456...

استخدام الأهداف الثنائية في التطبيق

أضف الهدف الثنائي باعتباره تبعية في قائمة dependencies الخاصة بهدف آخر، تمامًا كما تفعل مع هدف مصدر.

.target(
  name: "MyApp",
  dependencies: [
    .target(name: "ClosedSDK")
  ]
)

استيراد XCFramework

استورد الوحدة في شيفرة Swift تمامًا كما تستورد أي وحدة أخرى.

import ClosedSDK

let result = ClosedSDK.ProcessData(input: myData)

متطلبات بيان الخصوصية

تشترط Apple أن تتضمن XCFrameworks الموزعة عبر App Store بيانًا باسم PrivacyInfo.xcprivacy يسرد واجهات API المستخدمة.

// ClosedSDK.xcframework/
// ├── ios-arm64/ClosedSDK.framework/
// │   └── PrivacyInfo.xcprivacy
// └── ...

إصدارات Debug وRelease

عند استخدام XCFramework، لا يمكنك تنفيذ التعليمات خطوة بخطوة في مصحح الأخطاء عبر المصدر، بل ترى الرموز فقط. ويمكن تضمين ملفات dSYM لترجمة رموز الأعطال.

// Distribute dSYMs alongside XCFramework for crash reporting:
// ClosedSDK-1.0.0.xcframework.zip
// ClosedSDK-1.0.0.dSYM.zip

إدارة إصدارات XCFrameworks

استخدم الإصدار الدلالي في اسم الملف وإصدار حزمة SPM، حتى يتمكن المستخدمون من تثبيت إصدارات متوافقة محددة.

// ClosedSDK-1.2.0.xcframework.zip
// In Package.swift:
// .package(url: "...", from: "1.2.0")

XCFramework مقابل حزم المصدر

استخدم XCFramework للشيفرة المملوكة، أو حزم SDK الكبيرة المترجمة مسبقًا، أو أغلفة C/C++. واستخدم حزم المصدر لشيفرة Swift مفتوحة المصدر.

// XCFramework: proprietary analytics SDK, vendor-provided libraries
// Source: open-source Alamofire, SwiftUI components

تحقق سريع

لماذا تُضمّن مجموعًا اختباريًا عند تعريف هدف ثنائي بعيد في Package.swift؟

مراجعة الدرس

توزّع الأهداف الثنائية ملفات XCFramework المترجمة مسبقًا من دون الشيفرة المصدرية. أنشئها باستخدام xcodebuild -create-xcframework، واستضف الملف المضغوط، واحسب مجموعه الاختباري باستخدام swift package compute-checksum، ثم عرّفه في Package.swift. وأدرج PrivacyInfo.xcprivacy عند الإرسال إلى App Store.

الأسئلة الشائعة

هل درس «الأهداف الثنائية وXCFrameworks» مجاني؟

نعم — نص درس «الأهداف الثنائية وXCFrameworks» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.

ماذا ستتعلم في «الأهداف الثنائية وXCFrameworks»؟

وزّعوا الشيفرة مغلقة المصدر بصيغة XCFramework واستهلكوها كهدف ثنائي. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «الأهداف الثنائية وXCFrameworks»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ‏Package.swift: الأهداف والمنتجات والتبعيات
  2. الحزم المحلية ووحدات الميزات
  3. الأهداف الثنائية وXCFrameworks
  4. إدارة الإصدارات وحل التعارضات وإضافات Swift
← العودة إلى Swift Academy