Skip to content

Commit 841b1e5

Browse files
Add support for Xcode 15.3 and Xcode 16.0 project formats
- Add objectVersion lookup and check for Xcode 16.0 format - Resolves #101
1 parent 35759b2 commit 841b1e5

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

BuildSettingExtractor/BuildSettingExtractor.m

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,20 @@
1515
static NSSet *_compatibilityVersionStringSet;
1616
static dispatch_once_t onceToken;
1717
dispatch_once(&onceToken, ^{
18-
_compatibilityVersionStringSet = [NSSet setWithObjects:@"Xcode 3.2", @"Xcode 6.3", @"Xcode 8.0", @"Xcode 9.3", @"Xcode 10.0", @"Xcode 11.0", @"Xcode 11.4", @"Xcode 12.0", @"Xcode 13.0", @"Xcode 14.0", @"Xcode 15.0", nil];
18+
_compatibilityVersionStringSet = [NSSet setWithObjects:@"Xcode 3.2", @"Xcode 6.3", @"Xcode 8.0", @"Xcode 9.3", @"Xcode 10.0", @"Xcode 11.0", @"Xcode 11.4", @"Xcode 12.0", @"Xcode 13.0", @"Xcode 14.0", @"Xcode 15.0", @"Xcode 15.3", @"Xcode 16.0", nil];
1919
});
2020
return _compatibilityVersionStringSet;
2121
}
2222

23+
static NSSet *XcodeObjectVersionStringSet(void) {
24+
static NSSet *_objectVersionStringSet;
25+
static dispatch_once_t onceToken;
26+
dispatch_once(&onceToken, ^{
27+
_objectVersionStringSet = [NSSet setWithObjects:@"77", @"70", nil];
28+
});
29+
return _objectVersionStringSet;
30+
}
31+
2332
@interface BuildSettingExtractor ()
2433
@property (strong) NSMutableDictionary *buildSettingsByTarget;
2534
@property (strong) NSDictionary *objects;
@@ -143,13 +152,17 @@ - (NSArray *)extractBuildSettingsFromProject:(NSURL *)projectWrapperURL error:(N
143152
return nil;
144153
}
145154

155+
// Get object version
156+
NSString *objectVersion = projectPlist[@"objectVersion"];
157+
146158
// Get root object (project)
147159
self.objects = projectPlist[@"objects"];
148160
NSDictionary *rootObject = self.objects[projectPlist[@"rootObject"]];
149161

150162
// Check compatibility version
151163
NSString *compatibilityVersion = rootObject[@"compatibilityVersion"];
152-
if (![XcodeCompatibilityVersionStringSet() containsObject:compatibilityVersion]) {
164+
165+
if (![XcodeCompatibilityVersionStringSet() containsObject:compatibilityVersion] && ![XcodeObjectVersionStringSet() containsObject:objectVersion]){
153166
if (error) {
154167
*error = [NSError errorForUnsupportedProjectURL:projectWrapperURL fileVersion:compatibilityVersion];
155168
}

0 commit comments

Comments
 (0)