keithpitt / vendor

Dependency management for iOS and OSX development
http://www.vendorkit.com
MIT License
99 stars 7 forks source link

Vendor install and AppCode IDE issues #14

Closed jasperblues closed 11 years ago

jasperblues commented 12 years ago

After running 'vendor install' an AppCode project will refresh and then hang. After closing the project and reopening it, things look OK, except the Run configurations are missing and need to be recreated. (I'm not sure if why, or if AppCode even stores these in project.pbxproj).

burtlo commented 12 years ago

As an AppCode owner, I'll take a look. An aside, I have been pleased to see that Xcode no longer freaks out when the file is updated.

burtlo commented 12 years ago

So xcoder is no better in how it saves the project file to make AppCode play nice with the file. Xcoder in fact makes the project file look like garbage until you ask Xcode to re-arrange one file.

The error message that I get with AppCode is the following:

Object attribute key expected position: 119 current token: '"080E3E8BAAFCA977A7CCC3BA"' type: STRING_LITERAL ------------------------------------- // !$UTF8$!" { "archiveVersion" = "1"; "classes" = { }; "objectVersion" = "46"; "objects" = { "080E3E8BAAFCA977A7CCC3BA" = { "children" = ( "267754CF6D42A9EA51DC68A4", "2805D5138ED65D7A6A689E91" ); "isa" = "PBXGroup"; "name" = "Reachability"; "sourceTree" = " "; }; "0C4917223014C0196EEB2155" = { "isa" = "PBXFileReference"; "lastKnownFileType" = "sourcecode.c.objc"; "name" = "ASIInputStream.m"; "path" = "Vendor/ASIHTTPRequest/ASIInputStream.m"; "sourceTree" = " "; }; "113FDD5FCD066BE92F9DF328" = { "isa" = "PBXFileReference"; "lastKnownFileTy

Xcoder simply saves string identifiers as "IDENTIFIER", which AppCode likely wants to see as simply IDENTIFIER. There are likely some other values that are being saved in such a way that don't need the quotes. I'll see what I can do to make Xcoder smarter on save about certain strings.

burtlo commented 12 years ago

Alright looking through Appcode, I found the following issue which the Cocoapod team posted. It seems that AppCode wants the project in the exact Xcode output format.

As a workaround, until AppCode accepts more formats, the command pl -input Project/Project.xcodeproj/project.pbxproj -output Project/Project.xcodeproj/project.pbxproj can be run to format the project nicely and will open in AppCode and Xcode.

Sorry, I spoke too soon. It seems I opened the xcode project after I did the re-format and it still did not work. I think this may have to wait until the next AppCode version. However, I did add the re-formatter command to Xcoder to make the output prettier.

jasperblues commented 12 years ago

The pl command is still not going to work for AppCode - it'll put the plist into legacy OpenStep format, but at the moment AppCode needs it in exactly the format that Xcode uses - with the comments, etc.

This is because AppCode is written on the IntelliJ platform, which is implemented in Java, so I presume that they don't use obj-c plist framework to parse/serialize the project, but have implemented their own.

AppCode team have assigned the highest status to the issue and stated their intention to fix it. They're really fast too!

Regards, Jasper

On Mar 25, 2012, at 7:39 AM, Franklin Webber wrote:

pl -input Project/Project.xcodeproj/project.pbxproj -output Project/Project.xcodeproj/project.pbxproj

jasperblues commented 12 years ago

Two alternative workarounds that I can think of are:

  1. Use IDEKit (private framework) to trigger a project save.
  2. An AppleScript to drive the GUI and trigger a save from Xcode.

. . . however I haven't had time to look into these, considering that the AppCode issue will likely be resolved soon.

On Mar 25, 2012, at 7:39 AM, Franklin Webber wrote:

Alright looking through Appcode, I found the following issue which the Cocoapod team posted. It seems that AppCode wants the project in the exact Xcode output format.

As a workaround the command pl -input Project/Project.xcodeproj/project.pbxproj -output Project/Project.xcodeproj/project.pbxproj can be run to format the project nicely and will open in AppCode and Xcode


Reply to this email directly or view it on GitHub: https://github.com/keithpitt/vendor/issues/14#issuecomment-4677720

samritchie commented 11 years ago

This looks like it was fixed in 1.6 (http://youtrack.jetbrains.com/issue/OC-2797).

I don't have AppCode so I can't verify, but if something similar pops up again, please raise a new issue.