Skip to content

Commit 2210082

Browse files
author
Eric Miller
committed
Add better error messaging
1 parent 83d7b5b commit 2210082

File tree

4 files changed

+23
-22
lines changed

4 files changed

+23
-22
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,10 @@ $ UnityBuildKit generate
5454

5555
4. Once generation is completed, open the Xcode project. Using the Build Scheme drop down menu, select Edit Scheme to edit your project's scheme (the scheme should be the same name as your project). Select the Run action then the Options tab. In the middle of the window, you will see `Metal API Validation` with a set of options in a drop down menu. Change the current option to `Disabled`, as seen below:
5656
![](Assets/metal_validation_scheme.png)
57+
_(Note: if you do not see the option for Metal API Validation, verify your run destination is a physical device of set to Generic iOS Device)_
5758

5859
#### Notes
59-
- The generation script sets up the Unity project to build for the Device SDK. These means that, if building for a simulator, there is a high probability that you will encounter build errors in Xcode. Change the run destination to a physical device and the errors should go away.
60+
- The generation script sets up the Unity project to build for the Device SDK. These means that, if building for a simulator, there is a high probability that you will encounter build and linker errors in Xcode. Change the run destination to a physical device and the errors should go away.
6061

6162
- If building for a physical device, do not forget to set up your code signing.
6263

@@ -87,4 +88,4 @@ Inspiration for building `UnityBuildKit` came after running into several problem
8788

8889
## License
8990

90-
UnityBuildKit is licensed under the MIT license. See LICENSE for more info.
91+
UnityBuildKit is licensed under the MIT license. See LICENSE for more info.

Sources/UBKit/Models/UBKitError.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public enum UBKitError: Error, CustomStringConvertible {
2929
case error(Error)
3030
case unableToCreateFile(String)
3131
case invalidFolder(String)
32-
case invalidXcodeProject
32+
case invalidXcodeProject(String)
3333
case missingGroup(String)
3434
case invalidUnityProject
3535
case unableToCreateXcodeProjectGroup(String)
@@ -50,8 +50,8 @@ public enum UBKitError: Error, CustomStringConvertible {
5050
return "Unable to create \(str)"
5151
case .invalidFolder(let str):
5252
return "Invalid Folder: \(str)"
53-
case .invalidXcodeProject:
54-
return "Invalid Xcode Project"
53+
case .invalidXcodeProject(let str):
54+
return "Invalid Xcode Project: \(str)"
5555
case .missingGroup(let str):
5656
return "Could not find \(str)"
5757
case .invalidUnityProject:

Sources/UBKit/Workers/FileCopier.swift

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -124,12 +124,12 @@ private extension FileCopier {
124124

125125
func addUnityBridgingFiles() -> Result {
126126
guard let project = project else {
127-
return .failure(UBKitError.invalidXcodeProject)
127+
return .failure(UBKitError.invalidXcodeProject("Failed to find project file"))
128128
}
129129

130130
let sourceBuildPhases = project.pbxproj.sourcesBuildPhases
131131
guard sourceBuildPhases.count == 1, let sourceBuildPhase = sourceBuildPhases.first else {
132-
return .failure(UBKitError.invalidXcodeProject)
132+
return .failure(UBKitError.invalidXcodeProject("Missing sources build phase"))
133133
}
134134

135135
guard let targetGroup = project.pbxproj.groups.filter({ $0.path == config.projectName }).first else {
@@ -162,25 +162,25 @@ private extension FileCopier {
162162

163163
func deleteUnityFiles() -> Result {
164164
guard let project = project else {
165-
return .failure(UBKitError.invalidXcodeProject)
165+
return .failure(UBKitError.invalidXcodeProject(""))
166166
}
167167

168168
guard let ubkGroup = project.pbxproj.groups.filter({
169169
$0.path == "UBK"
170170
}).first else {
171-
return .failure(UBKitError.invalidXcodeProject)
171+
return .failure(UBKitError.invalidXcodeProject("Missing Vendor/UBK/ folder"))
172172
}
173173

174174
guard let frameworksBuildPhase = project.pbxproj.frameworksBuildPhases.first else {
175-
return .failure(UBKitError.invalidXcodeProject)
175+
return .failure(UBKitError.invalidXcodeProject("Missing frameworks build phase"))
176176
}
177177

178178
guard let sourcesBuildPhase = project.pbxproj.sourcesBuildPhases.first else {
179-
return .failure(UBKitError.invalidXcodeProject)
179+
return .failure(UBKitError.invalidXcodeProject("Missing sources build phase"))
180180
}
181181

182182
guard let resourcesBuildPhase = project.pbxproj.resourcesBuildPhases.first else {
183-
return .failure(UBKitError.invalidXcodeProject)
183+
return .failure(UBKitError.invalidXcodeProject("Missing resources build phase"))
184184
}
185185

186186
func removeFile(reference: String) {
@@ -244,11 +244,11 @@ private extension FileCopier {
244244

245245
func createUnityFileGroups() -> Result {
246246
guard let project = project else {
247-
return .failure(UBKitError.invalidXcodeProject)
247+
return .failure(UBKitError.invalidXcodeProject("Failed to find project file"))
248248
}
249249

250250
guard let unityGroup = project.pbxproj.groups.filter({ $0.path == "UBK" }).first else {
251-
return .failure(UBKitError.invalidXcodeProject)
251+
return .failure(UBKitError.invalidXcodeProject("Missing Vendor/UBK/ folder"))
252252
}
253253

254254
if let classesGroup = generateGroup("Classes", sourceTree: .absolute) {
@@ -300,16 +300,16 @@ private extension FileCopier {
300300
@discardableResult
301301
func addFiles(workingPath: String, parentGroup: PBXGroup) -> Result {
302302
guard let project = project else {
303-
return .failure(UBKitError.invalidXcodeProject)
303+
return .failure(UBKitError.invalidXcodeProject("Failed to find project file"))
304304
}
305305

306306
let sourceBuildPhases = project.pbxproj.sourcesBuildPhases
307307
guard sourceBuildPhases.count == 1, let sourceBuildPhase = sourceBuildPhases.first else {
308-
return .failure(UBKitError.invalidXcodeProject)
308+
return .failure(UBKitError.invalidXcodeProject("Missing sources build phase"))
309309
}
310310

311311
guard let mainTarget = project.pbxproj.nativeTargets.filter({ $0.name == config.projectName }).first else {
312-
return .failure(UBKitError.invalidXcodeProject)
312+
return .failure(UBKitError.invalidXcodeProject("Missing main target"))
313313
}
314314

315315
let frameworksBuildPhase: PBXFrameworksBuildPhase
@@ -386,16 +386,16 @@ private extension FileCopier {
386386

387387
func copyUnityDataFolder() -> Result {
388388
guard let project = project else {
389-
return .failure(UBKitError.invalidXcodeProject)
389+
return .failure(UBKitError.invalidXcodeProject("Failed to find project file"))
390390
}
391391

392392
guard let unityGroup = project.pbxproj.groups.filter({ $0.path == "UBK" }).first else {
393-
return .failure(UBKitError.invalidXcodeProject)
393+
return .failure(UBKitError.invalidXcodeProject("Missing Vendor/UBK/ folder"))
394394
}
395395

396396
let resourcesBuildPhases = project.pbxproj.resourcesBuildPhases
397397
guard resourcesBuildPhases.count == 1, let resourcesBuildPhase = resourcesBuildPhases.first else {
398-
return .failure(UBKitError.invalidXcodeProject)
398+
return .failure(UBKitError.invalidXcodeProject("Missing resources build phase"))
399399
}
400400

401401
let fileReference = PBXFileReference(reference: generateUUID(PBXFileReference.self, "data".appending(nameSalt)),
@@ -416,7 +416,7 @@ private extension FileCopier {
416416

417417
func saveProject() -> Result {
418418
guard let project = project else {
419-
return .failure(UBKitError.invalidXcodeProject)
419+
return .failure(UBKitError.invalidXcodeProject("Failed to find project file"))
420420
}
421421

422422
let projectPath = Path(xcodeProjectFilePath)

Sources/UBKit/Workers/UnityProject.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ private extension UnityProject {
155155

156156
// MARK: - Main
157157
print("Building \(unitySceneName) for iOS...")
158-
print("This will take some time to complete\n")
158+
print("This may take some time to complete\n")
159159
shell.perform(
160160
unityAppPath,
161161
Unity.Arguments.batchmode,

0 commit comments

Comments
 (0)