Three20 & Xcode4: Solving the Various Build and Archive Errors

After struggling for hours to solve the various build errors with Xcode4 and Three20 (old Xcode3.2 project), and then investing additional precious time to get the Xcode4 “Archive” option to work, I decided to document my steps to who ever find it useful.

I’m aware that there are useful guides about this topic, but unfortunately I could not find a complete article that answer all the various build option errors. So hopefully this will be it… :)

First thing to notice is that there is a difference between the “Archive” option and the different “Build for X” options (e.g. for running, archiving, testing).

First thing first. Let’s get the “Build for X” option to work:

  1. Open your project in Xcode4 and in the “Project Navigator” view, do the following for each “Three20” related project (e.g. Three20, Three20Core, etc):
    – Click on the project.
    – Select the “Build Settings” tab.
    – Search for “Skip Install” setting and make sure it is set to YES for Debug, Internal and Release configuration.
    – Click on the project’s target (under the TARGETS section).  Make sure it is NOT the UnitTests target but rather the actual build target – and set the same YES value in the “Skip Install” setting.

    Make sure to repeat these steps in each Three20 project in your project tree.

  2. In the “Project Navigator” view, select your project and then “Build Settings”. In the “header search paths” setting add the two following entries (with the quotes) and make it the first entries in the list:”$(BUILT_PRODUCTS_DIR)/../three20″

    Make sure to set it both in release and debug configuration, and that the same build setting appear in your poject’s target (under the TARGETS section).

  3. Follow this link to edit the Three20 scripts to enable support for Xcode4:
  4. Go to Xcode4 Preferences (Cmd + ,) > Locations > Build Location > and select “Place build products in derived data location”.
  5. Build your project. This should work fine both for release AND debug configurations! If there are still build errors, see the troubleshooting section below.

Now comes the part where we make the “Archive” function to work:

  1. Make sure you performed the steps above and everything compiles OK.
  2. Go to Xcode4 Preferences (Cmd + ,) > Locations > Build Location > and select “Place build products in locations specified by targets”
  3. Select the Archive option – it should build OK now.

As you can notice, from now on the only thing you need to manually change before switching between “Archive” and “Build fo *” option is the “Build Location” setting in Xcode4 preference window.


  1. If you still getting build errors try the “Clean” action under the “Product” menu and build the project again.
  2. If you get the “File not found” error, make sure your import is “Three20/Three20.h” and not a direct import to a class header  (e.g. “Three20/TTImageView.h”)

Happy B’Day! for iPhone and iPod touch

During the last few months I was working on my first (private) iPhone application to be submitted to the app store. After completing it, doing a review cycle with friends and implementing the feedbacks, it is finally released and available on the app store.

The app is actually the next generation of “Birthday Synchronizer” which I developed more than 18 months ago for the windows platform. This time I invested some more thought and efforts into it, and frankly, I like the results! :-)

You are more than welcome to check it out yourself and let me know what you think!

Making the iPhone4 Work with AT&T GoPhone

So today I decided to take the risk and buy an iPhone4 without a contract (but locked to AT&T) and make it work with my GoPhone/Prepaid SIM card (without jail breaking).

I bought the 16gb version (599$) from the Apple store. Before doing anything with my SIM card, i simply plugged the new iPhone to my Mac, and iTunes asked for a few “I agree” clicks. Then it asked me if want to restore my old 3GS iPhone backup into my new iPhone 4. That took about 3 minutes and then the phone was up.

After that I cut my AT&T SIM card with a good pair of scissors to get the shape of the micro SIM I’ve got with the new iPhone. If you do that, you have to be carful. You might want to look at some videos on youtube before you start.

After placing my “new micro SIM” into the iPhone4 SIM slot, I waited about two seconds before getting the message I was hoping for: the iPhone activation succeeded!!

So now I could use the iPhone4 for texting and voice but no data yet. so I simply followed the same steps I wrote about a few months ago (see here) and it works! Now I have iPhone4 running with my AT&T GoPhone account, with a regular data package and without any special iPhone contract with AT&T.

I actually had to go through the process twice with another iPhone4. The first iPhone had a bad pixel so I got back to Apple and they replaced it with a new device. Then I placed my “homemade” micro SIM and the activation worked again like a charm.

**though it worked for me I can’t take any responsibility if it does not work for you :-)

UPDATE (OCT. 5th 2011):  You can now get a micro sim in the ATT store instead of the regular sized card, so you dont have to cut it. They did not ask me to pay more for it. In addition, you should note that the GoPhone Unlimited plan with the unlimited data does not apply to smartphones including the iPhone (in regards to 3G Data). So you have to purchase a separate data plan (e.g. 500MB for 25$) to make the internet work for you.


Enabling Startup Image for an iPad Web Application

Though Apple did not document yet if  and how the iPad supports the startup image tag for web applications:

<link rel=”apple-touch-startup-image” href=”/startup.png”>

After some trials and errors I found how to make it work. You just need to make sure that your image is set to size: 1004*768 portrait.

Note that it is 1004 and not 1024. They did the same with the iPhone: 460 instead 480..

Hope you will find this useful.

Installations Getting Stuck With Snow Leopard

When I bought my first MAC a week ago, I believed Apple that there is something behind their statement that “Leopard OS is more stable than Windows”. Well… I’m not sure about that..

Here is a small example: if you leave the iPhone simulator open, and try to install any program, it will probably get stuck on the “Preparing” stage… the solution is to close the simulator and reinitiate the install.

If you wonder how you can kill (force close/quit) the installer (or any other program) in a MAC, then it is only a matter of pressing command+option+esc and selecting the program to close.

« Previous Entries