ฉันเข้าใจว่าคำสั่งต่อไปนี้จะอัปเดตพ็อดเดียว: pod update <podname>. อย่างไรก็ตามสิ่งนี้ยังอัพเดตการพึ่งพาของพ็อดอื่น ๆ (พ็อดที่ไม่รวมอยู่ในคำสั่ง update) ที่คุณติดตั้งไว้ก่อนหน้านี้ มีวิธีอัปเดตพ็อดเดียวและปล่อยให้การพึ่งพาอื่น ๆ
ฉันเข้าใจว่าคำสั่งต่อไปนี้จะอัปเดตพ็อดเดียว: pod update <podname>. อย่างไรก็ตามสิ่งนี้ยังอัพเดตการพึ่งพาของพ็อดอื่น ๆ (พ็อดที่ไม่รวมอยู่ในคำสั่ง update) ที่คุณติดตั้งไว้ก่อนหน้านี้ มีวิธีอัปเดตพ็อดเดียวและปล่อยให้การพึ่งพาอื่น ๆ
คำตอบ:
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง CocoaPods เวอร์ชันล่าสุดแล้ว $ pod update PODเปิดตัวเมื่อเร็ว ๆ นี้
ดูหัวข้อปัญหานี้สำหรับข้อมูลเพิ่มเติม :
การอัพเดท $ pod
เมื่อคุณเรียกใช้
pod update SomePodNameCocoaPods จะพยายามค้นหาฝักรุ่น SomePodName ที่ได้รับการอัปเดตโดยไม่คำนึงถึงรุ่นที่อยู่ในรายการPodfile.lockฝักโดยไม่ต้องคำนึงถึงรุ่นที่ระบุไว้ใน มันจะอัปเดตพ็อดเป็นเวอร์ชันล่าสุดที่เป็นไปได้ (ตราบใดที่มันตรงกับข้อ จำกัด เวอร์ชันใน Podfile ของคุณ)หากคุณเรียกใช้การอัปเดตพ็อดโดยไม่มีชื่อพ็อด CocoaPods จะอัปเดตพ็อดทั้งหมดที่ระบุใน Podfile เป็นเวอร์ชันล่าสุดที่เป็นไปได้
$ pod update SomePodNameและฉันได้ลอง อย่างไรก็ตามมีบางกรณีที่ CocoaPods จะพยายามอัปเดตการอ้างอิงของพ็อดอื่น ๆ ด้วย เรื่องสั้นสั้น ๆ SomePodName ไม่ใช่พ็อดเดียวเท่านั้นที่จะได้รับการอัปเดตในบางกรณี
pod installมันจะเปลี่ยนกลับเป็นเวอร์ชันดั้งเดิม แต่ฉันไม่ต้องการที่จะสูญเสียการเปลี่ยนแปลงของฉัน
pod updateสัมผัสทุกอย่าง มันไม่ได้ทำตามที่พูดไว้ในกระป๋องและมันน่าหงุดหงิดมาก นำส่วนหัวออกจากพ็อดอื่น ๆ ที่คุณไม่ได้บอกให้แตะเป็นต้น
ในการติดตั้งพ็อดเดี่ยวโดยไม่ต้องอัปเดตที่มีอยู่ -> เพิ่มพ็อดนั้นลงใน Podfile ของคุณแล้วใช้:
pod install --no-repo-update
หากต้องการลบ / อัปเดตการใช้งานพ็อดเฉพาะ:
pod update POD_NAME
ผ่านการทดสอบ!
ดังนั้นเนื่องจากpod update SomePodสัมผัสทุกอย่างใน cocoapods รุ่นล่าสุดฉันจึงพบวิธีแก้ปัญหา
ทำตามขั้นตอนต่อไป:
ลบออกSomePodจากPodfile
วิ่ง pod install
พ็อดจะลบออกSomePodจากโครงการของเราและจากPodfile.lockไฟล์
ใส่กลับSomePodเข้าไปPodfile
ทำงานpod installอีกครั้ง
Podfile.lockคราวนี้รุ่นล่าสุดของฝักของเราจะได้รับการติดตั้งและบันทึกไว้ใน
pod update somepod anotherpod thirdpodอัปเดต
SomePodได้รับการอัปเดตเป็นข้อมูลอ้างอิงล่าสุดหรือไม่จะไม่อัปเดตข้อมูลอ้างอิงที่ใช้ร่วมกันanotherPodเป็นข้อมูลล่าสุดหรือไม่ จะไม่เกิดขึ้นโดยไม่คำนึงถึงสิ่งที่อยู่ในพอดล็อค ไม่เช่นนั้นจะไม่สามารถตอบสนองความต้องการของSomePod
แค่พูด:
pod install - สำหรับการติดตั้งพ็อดใหม่
pod update - สำหรับการอัพเดทพ็อดที่มีอยู่
pod update podName - สำหรับการอัพเดทเฉพาะพ็อดโดยไม่ต้องแตะพ็อดอื่น ๆ
pod update podName versionNum - สำหรับการอัพเดท / ดาวน์เกรดฝักเฉพาะโดยไม่ต้องสัมผัสกับฝักอื่น
podแทนgit?
เพียงสังเกตเล็ก ๆ
pod update POD_NAME
จะทำงานได้ก็ต่อเมื่อพ็อดนี้ติดตั้งไว้แล้ว มิฉะนั้นคุณจะต้องอัปเดตทั้งหมดด้วย
pod update
คำสั่ง
pod installเป็นอันดับแรกซึ่งจะติดตั้งเฉพาะส่วนที่ขาดหายไปโดยไม่ต้องแตะตัวอื่น ๆ แม้ว่าจะไม่มีกรณีใช้งานที่ต้องการอัปเดตพ็อดที่คุณยังไม่ได้ติดตั้ง
tl; dr ใช้:
pod update podName
ทำไม? อ่านด้านล่าง.
pod update จะไม่เคารพ podfile.lockจะไม่เคารพมันจะแทนที่มันpod install จะเคารพ podfile.lockแผนภาพนี้ช่วยให้เข้าใจความแตกต่างได้ดีขึ้น:
ปัญหาสำคัญมาจาก ~>ดำเนินการในแง่ดีผู้ประกอบการในแง่ดีหรือที่รู้จัก
Podfileไม่เพียงพอบางคนอาจคิดว่าโดยการระบุรุ่นที่แน่นอนของพ็อดใน Podfileเช่นpod 'A', '1.0.0'เป็นพอที่จะรับประกันว่าผู้ใช้ทุกคนจะมีรุ่นเช่นเดียวกับคนอื่น ๆ ในทีม
จากนั้นพวกเขาก็อาจจะใช้pod updateแม้ในขณะที่เพียงการเพิ่มฝักใหม่คิดว่ามันจะไม่เคยมีความเสี่ยงที่จะปรับปรุงฝักอื่น ๆ Podfileเพราะพวกเขาจะจับจ้องไปที่รุ่นที่เฉพาะเจาะจงใน
แต่ที่จริงแล้วมันไม่เพียงพอที่จะรับประกันว่า user1 และ user2 ในสถานการณ์ข้างต้นของเราจะได้รับพ็อดทั้งหมดในรุ่นเดียวกันเสมอ
ตัวอย่างหนึ่งโดยทั่วไปคือถ้าฝักAมีการพึ่งพาฝักA2- ประกาศเป็นA.podspec dependency 'A2', '~> 3.0'ในกรณีเช่นนี้การใช้พ็อด'A', '1.0.0'ใน Podfile ของคุณจะบังคับให้ผู้ใช้ 1 และผู้ใช้ 2 ต้องใช้พ็อด A เวอร์ชัน 1.0.0 เสมอ แต่:
A2ในรุ่น3.4(เพราะนั่นคือA2เวอร์ชั่นล่าสุดในขณะนั้น)pod installเมื่อเข้าร่วมโครงการในภายหลังพวกเขาอาจได้รับพ็อดA2ในเวอร์ชัน3.5(เนื่องจากผู้ดูแลA2อาจเปิดตัวเวอร์ชันใหม่ในเวลาเดียวกัน) นั่นเป็นเหตุผลที่วิธีเดียวที่จะให้แน่ใจว่าการทำงานทุกสมาชิกในทีมกับรุ่นเดียวกันของทุกฝักในแต่ละคอมพิวเตอร์คือการใช้Podfile.lockและใช้อย่างถูกต้องกับpod installpod updateข้อความที่ตัดตอนมาทั้งหมดมาจาก ติดตั้งพ็อดและการอัพเดทพ็อด
ฉันขอแนะนำให้ดูสิ่งที่podfile.lockต้องทำ
ฉันใช้cocoapods version 1.0.1และใช้pod update name-of-podงานอย่างสมบูรณ์ ไม่มีการปรับปรุงพ็อดอื่น ๆ เฉพาะอันที่คุณป้อน
นี่เป็นค่าผิดปกติเล็กน้อยและไม่น่าจะเป็นสิ่งที่ OP กำลังดำเนินการ แต่pod update <podname>จะไม่ทำงานในทุกกรณีหากคุณใช้พ็อดภายในเครื่องบนคอมพิวเตอร์ของคุณ
ในสถานการณ์นี้สิ่งเดียวที่จะทริกเกอร์pod updateให้ทำงานคือถ้ามีการเปลี่ยนแปลงในไฟล์ podspec อย่างไรก็ตามการเปลี่ยนแปลงจะอนุญาตให้pod installทำงานได้เช่นกัน
ในสถานการณ์นี้คุณสามารถแก้ไขบางสิ่งเล็กน้อยเช่นคำอธิบายหรือสรุปด้วยตัวอักษรหนึ่งตัวจากนั้นคุณสามารถเรียกใช้คำสั่งติดตั้งหรืออัปเดตได้สำเร็จ
podfile.lockเป็น ดูลิงค์และวิดีโอที่อ้างอิง