ใน CocoaPods 1.9.0 และ Firebase 7 คุณเลือกได้ว่าจะให้ ทรัพยากร Dependency ของ Firebase สร้างขึ้นเป็นเฟรมเวิร์กแบบคงที่หรือแบบไดนามิก คำแนะนำจากเรา โดยใช้เฟรมเวิร์กแบบคงที่ เว้นแต่ว่าคุณต้องการใช้งานไลบรารีแบบไดนามิกบางอย่าง
โปรดทราบว่าไลบรารีที่พัฒนานอก GitHub จะลิงก์แบบคงที่ได้เท่านั้นแม้ว่าจะใช้ CocoaPods 1.9.0 ขึ้นไปก็ตาม ปัจจุบันรายการไลบรารีนี้มี AdMob, Analytics, Firebase ML และ Performance Monitoring ส่วนช่องทางการจัดจำหน่ายอื่นๆ ทั้งหมด ซึ่งรวมถึงไฟล์ 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 จำนวนมาก