ฉันเข้าใจว่าคำสั่งต่อไปนี้จะอัปเดตพ็อดเดียว: pod update <podname>
. อย่างไรก็ตามสิ่งนี้ยังอัพเดตการพึ่งพาของพ็อดอื่น ๆ (พ็อดที่ไม่รวมอยู่ในคำสั่ง update) ที่คุณติดตั้งไว้ก่อนหน้านี้ มีวิธีอัปเดตพ็อดเดียวและปล่อยให้การพึ่งพาอื่น ๆ
ฉันเข้าใจว่าคำสั่งต่อไปนี้จะอัปเดตพ็อดเดียว: pod update <podname>
. อย่างไรก็ตามสิ่งนี้ยังอัพเดตการพึ่งพาของพ็อดอื่น ๆ (พ็อดที่ไม่รวมอยู่ในคำสั่ง update) ที่คุณติดตั้งไว้ก่อนหน้านี้ มีวิธีอัปเดตพ็อดเดียวและปล่อยให้การพึ่งพาอื่น ๆ
คำตอบ:
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง CocoaPods เวอร์ชันล่าสุดแล้ว $ pod update POD
เปิดตัวเมื่อเร็ว ๆ นี้
ดูหัวข้อปัญหานี้สำหรับข้อมูลเพิ่มเติม :
การอัพเดท $ pod
เมื่อคุณเรียกใช้
pod update SomePodName
CocoaPods จะพยายามค้นหาฝักรุ่น 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 install
pod update
ข้อความที่ตัดตอนมาทั้งหมดมาจาก ติดตั้งพ็อดและการอัพเดทพ็อด
ฉันขอแนะนำให้ดูสิ่งที่podfile.lock
ต้องทำ
ฉันใช้cocoapods version 1.0.1
และใช้pod update name-of-pod
งานอย่างสมบูรณ์ ไม่มีการปรับปรุงพ็อดอื่น ๆ เฉพาะอันที่คุณป้อน
นี่เป็นค่าผิดปกติเล็กน้อยและไม่น่าจะเป็นสิ่งที่ OP กำลังดำเนินการ แต่pod update <podname>
จะไม่ทำงานในทุกกรณีหากคุณใช้พ็อดภายในเครื่องบนคอมพิวเตอร์ของคุณ
ในสถานการณ์นี้สิ่งเดียวที่จะทริกเกอร์pod update
ให้ทำงานคือถ้ามีการเปลี่ยนแปลงในไฟล์ podspec อย่างไรก็ตามการเปลี่ยนแปลงจะอนุญาตให้pod install
ทำงานได้เช่นกัน
ในสถานการณ์นี้คุณสามารถแก้ไขบางสิ่งเล็กน้อยเช่นคำอธิบายหรือสรุปด้วยตัวอักษรหนึ่งตัวจากนั้นคุณสามารถเรียกใช้คำสั่งติดตั้งหรืออัปเดตได้สำเร็จ
podfile.lock
เป็น ดูลิงค์และวิดีโอที่อ้างอิง