views:

1112

answers:

4

While this question does not involve any code, it does involve problems stemming from the fact that I don't own a Mac, and the impact that has on apps I'm working on where I do have access to a Mac. It's also a long read, so please bear with me.

iOS 4 and iPhone SDK 4 have been released; with that, I've made the obligatory upgrade on my primary-use iPhone 3GS (in other words, my iPhone 3GS). Now I'm running iOS 4 and enjoying its new features, and it's all good.

As a developer though, I'm having a bit of trouble. Here's my predicament right now:

  • The apps that I'm working on, which will actually become finished products for App Store distribution and not practice projects, are in early stages of development (i.e. they're past most of the planning stuff, but not design/feature-complete yet)
  • As far as I've heard, for device testing, iPhone SDK < 4 cannot create a debug binary that installs on my iOS 4 device, but correct me if I heard wrongly
  • The Macs at my school still run Leopard and iPhone SDK 3.1.3, and I've been told by the management that the school has no current plans to move to Snow Leopard
  • I'm not in a position to convince my school to upgrade, as iOS development is not even in any of its courses; in fact, I'm learning iOS development on my own — the school just happens to let me use its Macs
  • Most importantly, I still can't own my own Mac yet; this is a personal matter that I would most gladly deal with if only it was in my control

Basically, if I am to continue to write apps for iOS, until I find access to a Mac running Snow Leopard and iPhone SDK 4, I'll have to put up with Leopard and iPhone SDK 3.1.3. That means I either need to downgrade my iPhone's iOS to 3.1.3, or buy a device, install 3.1.3 and test on that device. Not to mention the 'awww, that sucks' feeling associated with how I won't get to enjoy the new APIs introduced by iOS 4.

But I can't see any good reason to continue to develop against the old SDK. Sure, testing with pre-4 software works, but on SDK 4 I can always target pre-4 software so that it'll install just fine on devices with that software. Even once I finally do get to continue on a Mac running Snow Leopard and SDK 4, I'm not sure how much work it'd be to go through my code and make adjustments to it to prepare it for iOS 4 compatibility and so on.

The only benefit I can think of by continuing with the old SDK is that in terms of how a developer works with a platform like iOS, there's hardly any difference other than some APIs being only available on the new iOS. For example, Xcode is still Xcode, Interface Builder is still Interface Builder, most Cocoa Touch development concepts remain the same, the design principles Apple proposes in their iPhone HIG remain the same and so on. That means I can still work on the old SDK, and while the extra time spent eventually making iOS 4-specific adjustments still applies, there isn't much that I need to relearn. I'd have had enough experience and practice to move on seamlessly and painlessly.

Still, I'm having trouble making a decision on how to move on from here. Both the development of my apps and my learning experience with the iPhone SDK have totally stalled because of this. The ideal solution would simply be to get my own Mac so I can get started with the new SDK right away, but as I said that's still out of my control right now, so it's pretty much a 'once I can' thing.

I have an iPhone, and I have a developer's and user's passion for the platform. I just don't know how to use the resources I currently have given their imminent obsolescence with all the new stuff that's out now. I could use some real advice here (speaking of which, I'm not sure, should this question be CW?) so thanks in advance for all the advice and sorry for my wordy question.

EDIT: I'm fine with sticking to the old SDK until the day I own a Mac, but I'm not sure whether or not that's healthy for my situation in the long run given that most others who are able to move on have moved on.

+4  A: 

I don't see the question. Either downgrade your phone to 3.1.3, get a dedicated testing device, convince school to upgrade, or get a Mac of your own. You can't expect to be on the cutting edge SDK if you have no computer to run it on. If you personally CAN'T have a Mac, and you obviously aren't working at a company who will provide one why are you that serious about iPhone dev?

jamone
Added a little clarification to my question which I hope makes sense. Also, I think it beats being able to use a new Mac but insisting I use my old one and refusing to upgrade. You have a good point about working for a company though (if I read that correctly) so I gave you an upvote.
BoltClock
Addendum to my second statement: unless I give @aidilfbk's answer a shot...
BoltClock
Turns out I was eventually able to get a Mac of my own (don't ask). As of now I'm waiting for it to ship. Thanks for your answer.
BoltClock
+2  A: 

I think I have a solution but it requires you to have a Snow Leopard install DVD on hand and a blank external hard drive (preferably one which uses FireWire to connect).

Macs are able to boot off external drives if you hold down the Option key during the boot sequence. What I'm suggesting is that you create your own personal OS X installation on an external drive. You still need a Mac to install Snow Leopard on your external drive, probably your school Macs. I can further elaborate but I think the install process should be easy to follow. Just make sure to actually select your external drive when the Installer asks which drive you want to install OS X to, or you could wipe your school's Mac clean.

This is an extremely portable configuration because any Mac will be able to boot off the drive so you can continue development so long as you have access to a Mac.

Also, as far as I know, there is no way to disable booting from external drives but I could be wrong.

aidilfbk
The school might not like it, but its a reasonable suggestion.
Yann Ramin
That's a very interesting idea! Plus, I can afford Snow Leopard and an external hard drive. But I'll have to see what my school says.
BoltClock
I'd bet your school would frown on this. If you are going to do it I would not ask them. "Its better to ask for forgiveness then permission"
jamone
+1  A: 

I would be a bit worried about having your developer certificates stored on your school's machines...

As far as I've heard, for device testing, iPhone SDK < 4 cannot create a debug binary that installs on my iOS 4 device, but correct me if I heard wrongly

In any case, a workaround is to build an Ad-Hoc distribution binary and use the iPhone Configuration Utility or iTunes to install the app on the device. Annoying, but works.

5ound
Ah, ad-hoc distribution. OK, I'm fine by that.
BoltClock
Ad-Hock won't allow him to debug, which will be a major limitation.
jamone
@jamone A very good point. He'll still get the simulator debug though, but I guess it's not the same.
5ound
@jamone, 5ound: yeah, but at least I have an actual touch screen on which to test my UIs :)
BoltClock
A: 

Why not just make a Hackintosh? its easy enough these days. osx86project.org will have all you need. heck, i'm developing right now on my hackintosh!

Log123
Because I'm not willing to develop on an unstable, unsupported setup.
BoltClock