设置标签 ‘Xcode’

开发技巧: 利用lipo 编译合并iPhone模拟器和真机通用的静态类库

如何编译静态类库,大家已经比较熟悉了,而且现在网上也有很多教程,就不多罗唆了. 现在问题是, 我们编译好了会是两个版本的.a文件 分别用于模拟器和iPhone真机, 因为Mac和iPhone的CPU不同, 才造成了这样的情况. 有点像 PowerMac 和 InterMac.

屏幕快照 2010-01-01 下午09.34.54.png

在使用静态类库的时候, 我们如果想在模拟器调试, 就必须把用于模拟器版本的lib加到项目里, 同理要想运行在iPhone上, 我们又必须把真机lib也加到项目, 这样确保两个平台都能运行, 但问题是我们总有一个类库是不需要了, 在Snow Leopard的Xcode 3.2中编译的时候会出现一个警告: 没必要加上***.a. Xcode 3.1 也偶尔出现, 没有总结出规律来.

OK, 我们来解决这个问题!

假设两个版本的lib分别是 libIMIUI.s.a , libIMIUI.d.a 我们的目标是 把他们合并成无敌超级通用版的libIMIUI.a :)
打开命令行 Terminal.app 输入:

lipo -create

然后依次把两个.a文件拖到终端窗口, 命令行会变成这样:

lipo -create /Users/Travis/Desktop/libIMIUI.d.a /Users/Travis/Desktop/libIMIUI.s.a

然后接着输入 -output 目标文件路径,如:

-output /Users/Travis/Desktop/libIMIUI.a

最后现在这样一条命令:

lipo -create /Users/Travis/Desktop/libIMIUI.d.a /Users/Travis/Desktop/libIMIUI.s.a -output /Users/Travis/Desktop/libIMIUI.a

回车! 好了, 这样就会生成我们需要的通用类库 libIMIUI.a

如果大家嫌麻烦, 请留言回复, 超过10个 我会给大家写一个自动生成的小工具 :)

用Mac的程序员 必备软件 Snippets @snippetsapp

注意: 只支持雪豹, 如果您还没升级而且不想升级(比如我公司的那个大iMac), 可以不用看了 :)

这是一个收集有用代码片段的软件,看名字就知道. 目前Mac平台上这样的软件已经有好多了,比如:CodecollectorPro 但是从只有0.7.4的小版本号来看,
Snippets 更有潜力超过它, 当然还有一个非常重要的原因, 此软件免费!

先列举一下优点:
1. 简洁漂亮, 这也是我选软件的首要条件 :)

2. 默认支持大概15种常用语言代码高亮, 对中文支持也非常好

3. 支持MobileMe同步, 这个也是大大滴有用阿

4. 任务栏工具, 可以快速的粘贴到任何其他程序中

5. 支持智能文件夹, 标签, 管理和查找都非常方便

6. 将会走社会化路线, 比如分享代码等, 看这里 Extras   

试试吧, 免费的, 非常好用!

使Xcode在任何抛出异常时候进入断点

有好多异常,无法正常进入断点,程序会直接退出,比如:
screen 2

这时候我们甚至不知道使在哪出现的这个错误,OK,打开Run>>Debugger 找到程序退出位置:

screen 4

然后添加一个软断点 Run->Manage Breakpoints -> Add symbolic breakpoint, 并输入 objc_exception_throw
screen 12

重新运行调试
screen 11

错在哪儿是不是很容易就找到了 :)

不用装新SDK,让XCode适应高版本iPhone OS

iPhone经常更新,但是升级完了iPhone,我们XCode也要跟着更新,动辄就2G多。
现在有个办法,可以RT。
原理是建一个软连接骗过XCode的版本检查,让它误以为自己支持高版本OS的开发了。 当然,要是确实需要新SDK的功能,您还是乖乖的下载升级

方法很简单,就一句命令(以最新版3.1OS 为例),打开Terminal,输入:
ln -s /Developer/Platforms/iPhoneOS.platform/DeviceSupport/3.0\ \(7A341\) /Developer/Platforms/iPhoneOS.platform/DeviceSupport/3.1

回车,OK!
重启XCode,就可以用了

Make your file invisible(just hide)

If you do not have an Xcode, plz close this page :)
open you terminal, and copy the following into it :

/Developer/Tools/SetFile -a V

Then drag the file or folder into terminal
Ok, u did it!

Build using date as short verison

For XCode only!
When you have lots of testing to do for some other tester, you may need a short extend version number for easy marking bugs, of course it’s good that using build times, here I find an acceptable way.

  1. add build script for your project target. Add>New Build Phase>New Run Script Build Phase.
    1. input shell script like this:
    2. DATE=`date +%y%m%d`echo “CURRENT_PROJECT_VERSION = ${DATE}”> version.xcconfig
  2. build and then you will get a file named “version.xcconfig” in project root folder, add this to your project(do not copy, you wont)
  3. open project info, go to Build, you will find a droplist on the bottom of the window by label “Based on:” choose “version” (it’s the file name we just created)
  4. edit Info.plist. find Bundle version. change it to some you like by this format:
  5. 2.1.${CURRENT_PROJECT_VERSION}

OK. We will get a update version number!

回到顶部

关于我:

  • iPhone 开发者. 自由职业者.
  • 苹果忠实用户. 完美主义者.
  • Email/iChat/MSN/GTalk: i@imi.im
  • Twitter/Sina: @TraWor
  •  

    Switch to our mobile site