เริ่มต้นด้วย CocoaPods 1.9.0 และ Firebase 7 คุณสามารถเลือกได้ว่าการพึ่งพา Firebase ของคุณจะสร้างเป็นเฟรมเวิร์กแบบสแตติกหรือไดนามิก ขอแนะนำให้ใช้เฟรมเวิร์กแบบสแตติก เว้นแต่ว่าคุณต้องการลักษณะการทำงานบางอย่างของไลบรารีไดนามิก
โปรดทราบว่าไลบรารีที่พัฒนานอก GitHub สามารถเชื่อมโยงแบบคงที่เท่านั้น แม้จะใช้ CocoaPods 1.9.0 และใหม่กว่าก็ตาม ปัจจุบัน รายการไลบรารีนี้ประกอบด้วย AdMob, Analytics, Firebase ML และการตรวจสอบประสิทธิภาพ ช่องทางการเผยแพร่อื่นๆ ทั้งหมด รวมถึงไฟล์ zip, Swift Package Manager และ Carthage จัดเตรียมไลบรารีที่เชื่อมโยงแบบคงที่เท่านั้น
เอกสารนี้ถือว่ามีความรู้ในการทำงานของการเชื่อมโยงแบบไดนามิกและแบบคงที่บนแพลตฟอร์มของ Apple หากคุณไม่คุ้นเคยกับแนวคิดเหล่านี้ โปรดดูเอกสารต่อไปนี้:
เนื่องจากเอกสารนี้เกี่ยวข้องกับประเภทของการเชื่อมโยงไลบรารีและไม่ใช่การโหลดบันเดิลรีซอร์สที่ไม่สามารถดำเนินการได้ เงื่อนไข ไลบรารี และ เฟรมเวิ ร์กจึงใช้แทนกันได้
การเชื่อมโยงแบบคงที่
ไลบรารีที่เชื่อมโยงแบบสแตติกจะถูกรวมเข้ากับโปรแกรมเรียกทำงานของคุณในขณะสร้าง ด้วยเหตุนี้ ไฟล์ออบเจกต์ในไลบรารีสแตติกจะปรากฏในแอปของคุณเมื่อเปิดใช้ และไม่จำเป็นต้องแก้ไขในเวลาเปิดใช้แอปโดยตัวเชื่อมโยงแบบไดนามิก ดังนั้น แอปที่ใช้การลิงก์แบบสแตติกจะเปิดเร็วขึ้น สิ่งนี้มาจากค่าใช้จ่ายของไฟล์ปฏิบัติการไบนารี / แอพที่ใหญ่ขึ้นเล็กน้อย แม้ว่าควรสังเกตว่าขนาดไฟล์ปฏิบัติการที่ใหญ่ขึ้นจะถูกชดเชยด้วยการขาดไลบรารีไดนามิกที่รวมไว้
คุณสามารถบังคับการเชื่อมโยงแบบสแตติกของการขึ้นต่อกันของ Firebase ได้โดยการระบุการเชื่อมโยงอย่างชัดเจนใน Podfile ของคุณ:
# cocoapods >= 1.9.0
use_frameworks! :linkage => :static
การเชื่อมโยงแบบไดนามิก
ไลบรารีที่เชื่อมโยงแบบไดนามิกจะจัดเก็บไว้ใน App Bundle ของคุณโดยแยกจากโปรแกรมสั่งการหลักของแอป และต้องโหลดไลบรารีเหล่านี้ในเวลาที่เปิดตัวแอปโดย Dynamic Linker เฟรมเวิร์กของ Apple ทั้งหมดเชื่อมโยงแบบไดนามิกเพื่อเปิดใช้งานการแบ่งปันรหัสระหว่างกระบวนการต่างๆ ในทำนองเดียวกัน คุณสามารถใช้ไดนามิกเฟรมเวิร์กเพื่อแชร์โค้ดระหว่างเป้าหมายแอปและส่วนขยาย คุณไม่สามารถแชร์เฟรมเวิร์กไดนามิกระหว่างแอปพลิเคชันที่แยกกัน แม้ว่าทั้งคู่จะลงนามโดยนักพัฒนาคนเดียวกันก็ตาม
หากคุณต้องการใช้ Firebase เป็นที่พึ่งพาของเป้าหมายเฟรมเวิร์กแบบไดนามิก คุณต้องเชื่อมโยง Firebase แบบไดนามิกด้วย มิฉะนั้นคุณจะพบกับ คำจำกัดความของคลาสที่ซ้ำกัน ในรันไทม์ของแอป การเชื่อมโยงแบบไดนามิกเป็นพฤติกรรมเริ่มต้นด้วย use_frameworks!
แต่คุณยังสามารถระบุการเชื่อมโยงแบบไดนามิกอย่างชัดเจนใน Podfile ของคุณ:
# cocoapods >= 1.9.0
use_frameworks! :linkage => :dynamic
โปรดทราบว่าการเชื่อมโยงแบบไดนามิกอาจเพิ่มเวลาเปิดใช้แอปของคุณ โดยเฉพาะอย่างยิ่งหากแอปของคุณมีการอ้างอิงจำนวนมาก