Thursday, June 04, 2009

XCode Frameworks Versioning - How to find the version of a Framework

XCode and in general coding on the mac is not my cup of tea.... I think those expensive mac are good to play but not good to write code quicker than with Visual Studio 2008. XCode has a weird multiple window concept and force you to do some weird human interface action all over the place. The debugger is slow,
The Clean feature is slow as hell....

Anyway i wanted to talk about versioning :

When it comes to identify bug the version of dll on window are very usefull. Incremental file version each time you build and distribute the component to third party will help developers to diagnose and address bugs in an efficient manner.
On the mac the concept of dll didn't exist per say but the mac is using a similar mecanism through Frameworks and Bundle. When you browse for an Application you can right click and expand the package nd find out the dependency with third party frameworks or XCode Frameworks. If you want to get some information about the file version of a frameworks simply browse for the following

\debug\osx10\MySample.framework\Versions\A\Resources\Info.plist

The Plist will look like this

< have been replace by { and > by }

{?xml version="1.0" encoding="UTF-8"?}
{!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"}
{plist version="1.0"}
{dict}
{key}CFBundleDevelopmentRegion{/key}
{string}English{/string}
{key}CFBundleExecutable{/key}
{string}PackageName{/string}
{key}CFBundleIdentifier{/key}
{string}Bla bla{/string}
{key}CFBundleInfoDictionaryVersion{/key}
{string}6.0{/string}
{key}CFBundleLongVersionString{/key}
{string}1.0.0 (C) 2008 Freedom of Speech, Inc. All rights reserved.{/string}
{key}CFBundleName{/key}
{string}PackageName{/string}
{key}CFBundlePackageType{/key}
{string}FMWK{/string}
{key}CFBundleShortVersionString{/key}
{string}1.0.0{/string}
{key}CFBundleSignature{/key}
{string}Freedom of Speech{/string}
{key}CFBundleVersion{/key}
{string}1.0.0{/string}
{key}CSResourcesFileMapped{/key}
{string}yes{/string}
{/dict}
{/plist}

No comments: