Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

เชื่อมโยงการพึ่งพา Firebase แบบคงที่หรือแบบไดนามิก

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

เริ่มต้นด้วย 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

โปรดทราบว่าการเชื่อมโยงแบบไดนามิกอาจเพิ่มเวลาเปิดใช้แอปของคุณ โดยเฉพาะอย่างยิ่งหากแอปของคุณมีการอ้างอิงจำนวนมาก