truebit / xUnique

merge Xcode project file is so easy
https://fclef.wordpress.com
Other
1.5k stars 120 forks source link

Property List error #32

Closed jeffctown closed 8 years ago

jeffctown commented 8 years ago

Hey there. I think this project sounds like a HUGE time saver, so I am excited to try it out. I am trying to investigate how it works, but am not able to open my Xcode project after running xUnique the first time.

My project uses Cocoapods (/Pods is saved in the repo), but I have even tried removing the /Pods folder from the repo to make sure that wasn't the problem.

I run xunique on my xcodeproj folder, and it does lists some files that were removed since they are either unused or duplicates, which is great. After I open up my workspace in Xcode afterwords, it cannot read my project anymore.

Here is what I did in my Terminal:

xuniquefailure

This is the error I get in Xcode after:

xcodefailure

The error I receive after trying xunique the second time is this:

Property List error: Unexpected character / at line 1 / JSON error: JSON text did not start with array or object and option to allow fragments not set.

Please check:

  1. You have installed Xcode Command Line Tools and command 'plutil' could be found in $PATH;
  2. The project file is not broken, such like merge conflicts, incomplete content due to xUnique failure.

_Can anyone give me any tips on what I can do to fix this? _

UPDATE: By trying different command line flags, I have narrowed this down to using the -u flag in xunique. If I use -s or -p I am able to run xunique a second time and open the project in Xcode.

truebit commented 8 years ago

It seems that some of your project file structure was incorrect after applying xunique? According to the snapshot you posted, The problem occurs in here :

022.... ???SignInBenefitsBulletViews.xib = {

were deleted ,but the format of this line ends with only one { without any content. You should check lines after this line until you see the corresponding }. and delete all of them.

This occurs because xunique only find and remove lines contains UUID, but if this UUID contains a section, it would not delete other contents in the section except the one with the UUID. Here seems the SignInBenefitsBulletViews.xib = { contains a section. so you need to remove other contents in the section. a.k.a the contents in the {}.

Because this line was deleted, it may not be easy to find the rest of the section. I suggest you could find this line and delete its entire section before executing xunique. and then execute xunique would be ok.

Please comment if it works

jeffctown commented 8 years ago

That was it!

That XIB didn't show up at all in my project strangely enough. I had to look at the pbxproj file in a text editor to see it, and the reference was an absolute file reference from a develop who worked with us 5 years ago. I deleted all references to this file inside of my pbxproj and everything is working great now.

Thank you!

truebit commented 8 years ago

Glad it helps :smile:
I think we may need more hint when delete a section. I would add the section delete warning sometime.