ลิงก์ทรัพยากร Dependency ของ Firebase แบบคงที่หรือแบบไดนามิก

ใน CocoaPods 1.9.0 และ Firebase 7 คุณเลือกได้ว่าจะให้ ทรัพยากร Dependency ของ Firebase สร้างขึ้นเป็นเฟรมเวิร์กแบบคงที่หรือแบบไดนามิก คำแนะนำจากเรา โดยใช้เฟรมเวิร์กแบบคงที่ เว้นแต่ว่าคุณต้องการใช้งานไลบรารีแบบไดนามิกบางอย่าง

โปรดทราบว่าไลบรารีที่พัฒนานอก GitHub จะลิงก์ได้ในแบบคงที่เท่านั้น แม้แต่กับ CocoaPods 1.9.0 ขึ้นไป ปัจจุบันรายการในคลังนี้ประกอบด้วย AdMob, Analytics, Firebase ML และการตรวจสอบประสิทธิภาพ การกระจายอื่นๆ ทั้งหมด รวมถึงไฟล์ ZIP, Swift Package Manager และ Carthage ไลบรารีที่เชื่อมโยงแบบคงที่เท่านั้น

เอกสารนี้ถือว่ามีความรู้เกี่ยวกับการลิงก์แบบไดนามิกและแบบคงที่ใน แพลตฟอร์มของ Apple หากคุณไม่คุ้นเคยกับแนวคิดเหล่านี้ โปรดดูที่ เอกสารประกอบต่อไปนี้

เนื่องจากเอกสารนี้เกี่ยวข้องกับประเภทของการลิงก์ห้องสมุด ไม่ใช่ การโหลดกลุ่มทรัพยากรที่เป็นไฟล์ปฏิบัติการ คำศัพท์ไลบรารีและเฟรมเวิร์ก สามารถใช้แทนกันได้

การลิงก์แบบคงที่

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

คุณสามารถบังคับให้ลิงก์แบบคงที่ของทรัพยากร Dependency ของ Firebase ได้โดยการระบุอย่างชัดเจน ลิงก์ใน Podfile ของคุณ:

# cocoapods >= 1.9.0
use_frameworks! :linkage => :static

การลิงก์แบบไดนามิก

ระบบจะจัดเก็บไลบรารีที่ลิงก์แบบไดนามิกไว้ใน App Bundle แยกจาก ไฟล์ปฏิบัติการหลักของแอป และต้องโหลด ณ เวลาที่เปิดแอปตามแบบไดนามิก Linker เฟรมเวิร์กของ Apple ทั้งหมดจะลิงก์กันแบบไดนามิกเพื่อเปิดใช้การแชร์โค้ด ระหว่างกระบวนการ ในทำนองเดียวกัน คุณสามารถใช้ เฟรมเวิร์กแบบไดนามิกเพื่อแชร์โค้ด ระหว่างเป้าหมายแอปและส่วนขยาย คุณแชร์เฟรมเวิร์กแบบไดนามิกไม่ได้ ระหว่างแอปพลิเคชันทั้งสอง แม้ว่าแอปพลิเคชันทั้งสองจะลงชื่อโดย

หากต้องการใช้ Firebase เป็นทรัพยากร Dependency ของเป้าหมายเฟรมเวิร์กแบบไดนามิก ต้องลิงก์ Firebase แบบไดนามิกด้วย ไม่เช่นนั้น คำจำกัดความคลาสที่ซ้ำกัน ในรันไทม์ของแอป การลิงก์แบบไดนามิกเป็นลักษณะการทำงานเริ่มต้นกับ use_frameworks!แต่คุณยังคงระบุการลิงก์แบบไดนามิกอย่างชัดแจ้งใน Podfile:

# cocoapods >= 1.9.0
use_frameworks! :linkage => :dynamic

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