เป้าหมายไบนารีและ XCFrameworks
แจกจ่ายโค้ดปิดแหล่งที่มาเป็น XCFramework และใช้งานเป็นเป้าหมายไบนารี
เป้าหมายไบนารีและ XCFrameworks เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
เป้าหมายไบนารีคืออะไร
เป้าหมายไบนารีจะแจกจ่ายกรอบงานที่คอมไพล์ไว้ล่วงหน้าแทนโค้ดต้นฉบับ เพื่อปกป้องการนำไปใช้งานที่เป็นกรรมสิทธิ์
// Package.swift:
.binaryTarget(
name: "ClosedSDK",
path: "Frameworks/ClosedSDK.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เป้าหมายไบนารีระยะไกลพร้อมค่าตรวจสอบ
อ้างอิงไฟล์ zip ของ 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 สำหรับไฟล์ zip
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 กำหนดให้ XCFramework ที่แจกจ่ายบน App Store ต้องมีแมนนิเฟสต์ PrivacyInfo.xcprivacy ซึ่งแสดงรายการ API ที่ใช้งาน
// ClosedSDK.xcframework/
// ├── ios-arm64/ClosedSDK.framework/
// │ └── PrivacyInfo.xcprivacy
// └── ...รุ่นดีบักเทียบกับรุ่นเผยแพร่
เมื่อใช้งาน XCFramework คุณจะไม่สามารถเลื่อนดูโค้ดต้นฉบับทีละบรรทัดในเครื่องมือดีบักได้ แต่จะเห็นเฉพาะสัญลักษณ์เท่านั้น คุณสามารถรวมไฟล์ dSYM เพื่อแปลงสัญลักษณ์จากข้อขัดข้องได้
// Distribute dSYMs alongside XCFramework for crash reporting:
// ClosedSDK-1.0.0.xcframework.zip
// ClosedSDK-1.0.0.dSYM.zipการกำหนดเวอร์ชันของ XCFramework
ใช้การกำหนดเวอร์ชันตามความหมายในชื่อไฟล์และเวอร์ชันแพ็กเกจ 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 โฮสต์ไฟล์ zip คำนวณค่าตรวจสอบด้วย swift package compute-checksum แล้วประกาศใน Package.swift อย่าลืมใส่ PrivacyInfo.xcprivacy เมื่อต้องส่งแอปขึ้น App Store
คำถามที่พบบ่อย
บทเรียน “เป้าหมายไบนารีและ XCFrameworks” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เป้าหมายไบนารีและ XCFrameworks” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เป้าหมายไบนารีและ XCFrameworks”
แจกจ่ายโค้ดปิดแหล่งที่มาเป็น XCFramework และใช้งานเป็นเป้าหมายไบนารี คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “เป้าหมายไบนารีและ XCFrameworks” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Package.swift: เป้าหมาย ผลิตภัณฑ์ และการพึ่งพา
- แพ็กเกจภายในเครื่องและโมดูลฟีเจอร์
- เป้าหมายไบนารีและ XCFrameworks
- การกำหนดเวอร์ชัน การแก้ข้อขัดแย้ง และปลั๊กอิน Swift