SkillAgentSearch skills...

XcodeProjKit

Parse project file and write it to open step format.

Install / Use

/learn @phimage/XcodeProjKit
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

XcodeProjKit

License Platform Language Swift Sponsor

Parse project file and write it to open step format.

Work also on simple plist in xml, binary or json format.

Project description

Plist files could be in binary, xml or open step format. All could be parsed natively using PropertyListSerialization.

:warning: But you cannot be written back into open step format.

This project aim to

  • check xcode project file. Error could occurs after merging file using git.
  • rewrite the file into open step format, if you edit it using some command line like plutil.

Alternatively you can use apple private framework DVTFoundation, like Xcodeproj do.

Usage

Read

let xcodeProj = try XcodeProj(url: url)
let project: PBXProject = xcodeProj.project

let mainGroup: PBXGroup? = project.mainGroup
let targets: [PBXNativeTarget] = project.targets
let buildConfigurationList: XCConfigurationList? = project.buildConfigurationList

Write

try xcodeProj.write(to: newURL, format: .openStep)

Setup

Using Swift Package Manager

let package = Package(
    name: "MyProject",
    dependencies: ["
        .package(url: "https://github.com/phimage/XcodeProjKit.git", from: "3.0.0"),
        ],
    targets: [
        .target(
            name: "MyProject",
            dependencies: ["XcodeProjKit"]),
        ]
)

Using Carthage

Carthage is a decentralized dependency manager for Objective-C and Swift.

Add the project to your Cartfile.

github "phimage/XcodeProjKit"

Run carthage update and follow the additional steps in order to add MomXML to your project.

Using Cocoapod

Add the project to your Podfile.

pod "XcodeProjKit"

References

  • http://danwright.info/blog/2010/10/xcode-pbxproject-files/
  • http://www.monobjc.net/xcode-project-file-format.html
  • https://github.com/apple/swift-package-manager/tree/master/Sources/Xcodeproj

Thanks

  • @Karumi for the test files : https://github.com/Karumi/Kin
  • @allu22 for the PR

Used by

  • iblinter a command line tool to check your storyboards
  • plistconvert a command line tool to convert plist and pbxproj to different supported format (work on linux and macOS)
  • xprojup a command line tool to update xcode proj to latest version (to avoid warnings)
  • punic a command line tool too remove the usage of binary frameworks introduced by Carthage and to go back to developpement with sources.

Contribute

  • Fork
  • Make PR
View on GitHub
GitHub Stars18
CategoryDevelopment
Updated2mo ago
Forks4

Languages

Swift

Security Score

95/100

Audited on Jan 7, 2026

No findings