จะอัปเดตเพียงหนึ่งไลบรารีจาก Cartfile ด้วย Carthage ได้อย่างไร


87

My Cartfile มีห้องสมุดมากมาย เมื่อฉันทำcarthage updateมันผ่านไลบรารีทั้งหมด ซึ่งอาจใช้เวลานานมาก

มีวิธีอัปเดตไลบรารีเดียวกับคาร์เธจหรือไม่? อะไรทำนองนี้? (สิ่งนี้จะไม่ทำงาน)

carthage update "evgenyneu/moa"

คำตอบ:


150

จาก0.12 รุ่น build , checkoutและupdateใช้พื้นที่เป็นตัวเลือกคั่นรายการการอ้างอิง

สำหรับ Cartfile ดังต่อไปนี้

github "Alamofire/Alamofire"
github "ReactiveX/RxSwift"

คุณสามารถเลือกที่จะอัปเดตการอ้างอิงหนึ่งรายการ

carthage update Alamofire

หรือหลายการอ้างอิง

carthage update Alamofire RxSwift

หากคุณต้องการเพิ่มแฟล็กให้เพิ่มแฟล็กสุดท้าย:

carthage update Alamofire --platform iOS

24
กล่องอัปเดต carthage - ไม่ใช้ไบนารี - แพลตฟอร์ม iOS // หากคุณต้องการระบุแฟล็กเพิ่มเติม
nalexn

@ Alex Salom: Box เป็นชื่อของ repo ใน Cartfile หรือไม่? จะเข้าใจง่ายขึ้นถ้าคุณใช้สิ่งที่คุ้นเคยมากกว่าเช่น AlamoFire อาจจะ? และส่วนผลลัพธ์คืออะไร? ชื่อ repo อื่นหรือ?
eonist

1
@GitSyncApp ใช่คุณต้องเขียนชื่อของการอ้างอิงโดยคั่นด้วยช่องว่าง ฉันแก้ไขคำตอบของฉัน
Alex Salom

@ MartinRomañukอะไรที่ไม่ได้ผล? ฉันเพิ่งลองตัวอย่างข้างต้นcarthage bootstrapและประมวลผลการอ้างอิงเพียงครั้งเดียวจากสองรายการที่กำหนดไว้ใน Cartfile ลองดูที่หน้าจอจากสถานีของฉันpasteboard.co/I9bARyq.png
อเล็กซ์ Salom

@AlexSalom เป็นธรรมคุณกำลังใช้ในขณะที่คำตอบว่าจะใช้bootstrap updateเมื่อbootstrapคุณดาวน์โหลดสิ่งที่Carfile.resolvedกล่าวมามันจะไม่อัปเดต
Lluis Gerard

13

Carthage รองรับการอัปเดตการอ้างอิงเดียวในขณะนี้หากคุณมีสิ่งนี้ใน Cartfile ของคุณ:

github "bitstadium/HockeySDK-iOS"

จากนั้นคุณสามารถอัปเดตการอ้างอิงนี้ได้โดยการเรียกใช้

carthage update HockeySDK-iOS

9

ตอนนี้คำตอบคือไม่ ... ถ้าคุณวิ่งcarthage help updateคุณจะเห็น

Update and rebuild the project's dependencies

[--configuration Release]
    the Xcode configuration to build (ignored if --no-build option is present)

[--platform all]
    the platform to build for (ignored if --no-build option is present)

[--verbose]
    print xcodebuild output inline (ignored if --no-build option is present)

[--no-build]
    skip the building of dependencies after updating

[--use-ssh]
    use SSH for downloading GitHub repositories

[--use-submodules]
    add dependencies as Git submodules

[--no-use-binaries]
    check out dependency repositories even when prebuilt frameworks exist (ignored if --no-build option is present)

[--color auto]
    whether to apply color and terminal formatting (one of ‘auto’, ‘always’, or ‘never’)

[/path/to/your/app]
    the directory containing the Carthage project

อย่างที่คุณเห็นไม่มีการกล่าวถึงตัวเลือกในการระบุการอ้างอิงเพียงรายการเดียวที่จะอัปเดต

คุณควรเปิดปัญหาในการ repo โครงการที่ขอให้สนับสนุน


9

หากกรอบงานไม่ได้เก็บไว้ใน GitHub หรือคุณกำลังใช้gitตัวระบุและcartfileหน้าตาของคุณจะเป็นดังนี้:

git "ssh://git@bitbucket.org/teamname/repo-name.git" ~> 1.0

จากนั้นคุณสามารถอัปเดตเฉพาะที่รันคำสั่งต่อไปนี้

carthage update repo-name

6

ฉันลองคำตอบทั้งหมดแล้วและสำหรับฉันเพียงแค่ลบหรือแสดงความคิดเห็นในที่เก็บชั่วคราวและหลังจากเรียกใช้

carthage update --platform ios

หลังจากฉันกู้คืน Catfile เป็นสถานะก่อนหน้า


5

ฉันลงเอยด้วยการเขียนสคริปต์ของตัวเองที่สร้างการพึ่งพาครั้งเดียวสำหรับฉันและรวมเข้ากับการอ้างอิงที่มีอยู่ของฉัน คุณสามารถค้นหาได้ที่https://github.com/ruipfcosta/carthage-workarounds


0

สวิฟต์ 5

//MARK:- Step 1
carthage update KeychainAccess --platform iOS

carthage update SDKNAME(like i mention KeychainAccess upper) --platform iOS

หากคุณพบข้อผิดพลาดเช่นนี้

//MARK:- If this error occur
error: unable to find utility "xcodebuild", not a developer tool or in PATH

จากนั้นใช้ส่วนที่ 1 ใน Terminal อีกครั้ง

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

และอีกครั้ง

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

0

[ขั้นตอนการอัปเดตคาร์เธจ]

carthage [update|bootstrap|checkout|build] [dependency1] [dependency2] [--no-use-binaries] [--platform <name>]

//--no-use-binaries - does not use prebuild binary and use source code
//--platform - specify a platform

ระยะที่ยาวที่สุดคือbuildขั้นตอน[xcodebuild]เนื่องจาก:

  1. fat binaryสร้างขึ้นโดยใช้lipo[About]
  2. คาร์เธจสร้างshared frameworks schemesโครงการทั้งหมด หากคุณทราบว่าสคีมาใดที่คุณต้องการคุณสามารถ:

    • ทิ้งโครงร่างเฉพาะไว้ที่xcschemesโฟลเดอร์.../Carthage/Checkouts/<dependency>/<project>.xcodeproj/xcshareddata/xcschemes/<schema>.xcscheme

    • เปิดโครงการที่สร้างขึ้นจากCarthage/Checkoutsโฟลเดอร์ -> จัดการแบบแผน ... -> ออกจากโครงร่างเฉพาะ


0

ดูเหมือนว่าไม่ทำงานบนcarthage update repo-name ฉันจะแก้ไขปัญหานี้โดยการปรับปรุงตนเองCarthage 0.36.0 Carthage.resolvedตัวอย่างเช่นเพิ่มCartfileการอ้างอิงใหม่:

github "konkab/AlamofireNetworkActivityLogger" ~> 3.0.0

เพิ่มการCartfile.resolvedพึ่งพาใหม่ด้วยตนเอง:

github "konkab/AlamofireNetworkActivityLogger" "3.0.0"

จากนั้นทำการcarthage bootstrapอัปเดตการอ้างอิงเพียงรายการเดียว:

carthage bootstrap

มันจะใช้Carthage.resolvedและเพิ่มการพึ่งพาเพียงครั้งเดียว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.