#58: Managing new SDKs
00:00:00
◼
►
Hello and welcome to Developing Perspective. Developing Perspective is a podcast discussing
00:00:04
◼
►
news of note in iOS development, Apple and the like. I'm your host, David Smith. I'm
00:00:08
◼
►
an independent iOS developer based in Herner, Virginia. Today is Thursday, June 21st, and
00:00:13
◼
►
this is show number 58. Developing Perspective is never longer than 15 minutes, so let's
00:00:17
◼
►
get started.
00:00:18
◼
►
All right, so today's topic I'm going to talk about is a response to a question from
00:00:23
◼
►
Naylin B. on Twitter, who's asked a couple of good questions actually, and probably it's
00:00:28
◼
►
It's good to take a moment and say that if you have questions,
00:00:30
◼
►
if you have things that you're struggling with, things
00:00:32
◼
►
that you think I might know about,
00:00:35
◼
►
definitely just send me a reply on Twitter.
00:00:38
◼
►
I'll add it to the list and try and work through them.
00:00:41
◼
►
So what Nalen was asking about is, basically,
00:00:46
◼
►
how do I manage and handle the kind of awkward place we're in
00:00:49
◼
►
now as iOS and actually to the same degree Mac developers,
00:00:54
◼
►
where they have these beta builds that Apple is producing?
00:00:58
◼
►
So currently, there's essentially
00:00:59
◼
►
three versions of Xcode.
00:01:02
◼
►
There's the main shipping gold master in the App Store build.
00:01:06
◼
►
Then there's the mountain line, whatever
00:01:10
◼
►
that they called it, like a near final preview
00:01:12
◼
►
or something like that.
00:01:14
◼
►
And then there's the iOS 6 beta, which is definitely
00:01:17
◼
►
nowhere near final.
00:01:19
◼
►
And it's kind of a tricky thing when you look at that,
00:01:21
◼
►
of like, OK, so what exactly do we--
00:01:25
◼
►
as a developer, how do I manage that?
00:01:27
◼
►
And how do I work on adding new features while still
00:01:32
◼
►
being able to do fixes and updates to the current stuff
00:01:36
◼
►
that you can't ship?
00:01:38
◼
►
So first, probably worth saying is that Apple typically
00:01:43
◼
►
doesn't allow, or at least very strongly discourages,
00:01:47
◼
►
people from submitting applications
00:01:50
◼
►
with anything other than the current gold master Xcode.
00:01:54
◼
►
So currently, that's the iOS 5.1 SDK, I believe.
00:02:00
◼
►
And that's the version that you should
00:02:01
◼
►
be using if you're submitting to the App Store.
00:02:03
◼
►
Similarly, that last-- it's the final version in the Mac App
00:02:07
◼
►
Store of Xcode for if you're submitting an app for Lion.
00:02:11
◼
►
So that's kind of what Apple would recommend.
00:02:13
◼
►
And in some ways, I think they even enforce it.
00:02:15
◼
►
Often, if you try to submit a build that
00:02:19
◼
►
was built against, say, the iOS 6 stuff,
00:02:23
◼
►
I believe they reject it.
00:02:25
◼
►
I think it's an automated rejection rather than having
00:02:28
◼
►
to go through a review one, so it wouldn't be too problematic.
00:02:30
◼
►
It'll just catch it and yell at you.
00:02:32
◼
►
But definitely not something you'd want to do,
00:02:36
◼
►
especially if you're trying to actually ship a build.
00:02:38
◼
►
So instead, it's going to be this funny place of,
00:02:40
◼
►
what do you do?
00:02:42
◼
►
So typically, this is the way that I handle it.
00:02:46
◼
►
And it may not work for everybody.
00:02:48
◼
►
It requires a little bit of extra technology.
00:02:51
◼
►
But I found it worked pretty well.
00:02:53
◼
►
Apple has shifted to this new kind of Xcode as an app
00:02:58
◼
►
approach, where rather than the Xcode being this thing that
00:03:03
◼
►
gets installed into /developer and sticks its fingers all
00:03:06
◼
►
over your system, in theory, Xcode is now entirely bundled
00:03:10
◼
►
into one .app file.
00:03:12
◼
►
So installing multiple copies of it shouldn't interact with
00:03:17
◼
►
But at this point, that approach is a little too new
00:03:20
◼
►
for me to truly trust that if I install the new beta,
00:03:24
◼
►
that it's not going to mess up something
00:03:26
◼
►
about my main shipping version.
00:03:29
◼
►
And that could either prevent me from getting an update out
00:03:31
◼
►
as quickly or fail in some strange, subtle way that
00:03:35
◼
►
takes forever to hunt down.
00:03:37
◼
►
And so that's kind of what I'm looking for to serve
00:03:43
◼
►
with my thing is I want the most reliable developer setup
00:03:47
◼
►
possible for my main machine.
00:03:49
◼
►
I don't want something that has any unexpected behaviors,
00:03:54
◼
►
weird bugs, things like that.
00:03:56
◼
►
What I really want in my main--
00:03:58
◼
►
like my iMac that I sit in front of every day
00:04:01
◼
►
and just pour out the code, I want
00:04:03
◼
►
that to be stable and rock solid.
00:04:05
◼
►
And so I always install the gold master version on that.
00:04:08
◼
►
And that's it.
00:04:09
◼
►
I never install any betas, anything like that.
00:04:11
◼
►
Pretty much that never touches that computer
00:04:14
◼
►
until it's a gold master.
00:04:16
◼
►
And so typically this process works
00:04:18
◼
►
appable at some point release a gold master of Xcode,
00:04:22
◼
►
for example, with Mountain Lion, my guess
00:04:24
◼
►
is that it will probably be in the next couple weeks.
00:04:26
◼
►
They'll be kind of like, here's the GM version of it that
00:04:29
◼
►
includes the Mountain Lion SDK.
00:04:31
◼
►
And at that point, I'll install that and submit
00:04:34
◼
►
the Mountain Lion updates to the Mac App Store
00:04:36
◼
►
for my applications.
00:04:39
◼
►
Typically, they don't really allow--
00:04:41
◼
►
like I said before, you can't link against the new stuff
00:04:45
◼
►
in a version until typically the Google GM's released.
00:04:50
◼
►
And so you can do some kind of forward compatibility updates.
00:04:54
◼
►
So this is like-- you'll probably
00:04:56
◼
►
have heard a bunch of this recently, where people
00:04:58
◼
►
need to make updates to their 5.1 SDK apps
00:05:03
◼
►
to make them compatible with iOS 6.
00:05:06
◼
►
What they have to do there is not necessarily taking the--
00:05:09
◼
►
they're not linking against the new stuff to make it work.
00:05:12
◼
►
It's usually that they are--
00:05:14
◼
►
they're doing something in their 5.1 code that is broken on iOS 6.
00:05:19
◼
►
And so they're sort of fixing it in almost like a future proofing
00:05:23
◼
►
way, if that makes sense, rather than actually adding
00:05:26
◼
►
in the future stuff.
00:05:28
◼
►
And so you can kind of do those, but you'll just
00:05:30
◼
►
use those with your main versions of Xcode.
00:05:33
◼
►
So anyway, so that's kind of the process that I'll do is,
00:05:35
◼
►
on my main machine, it's whatever the latest is,
00:05:37
◼
►
pretty much all the time.
00:05:39
◼
►
Really, the only exception is, unless I really
00:05:41
◼
►
need to rush out an update, I often will--
00:05:45
◼
►
I typically wait like maybe 18 hours, almost a day,
00:05:49
◼
►
maybe before I install the new version once it's released,
00:05:53
◼
►
just because you kind of are waiting for that Twitter
00:05:55
◼
►
feedback of, wait, the new version of Xcode
00:05:58
◼
►
totally destroys XYZ.
00:06:00
◼
►
And I try not to be an early adopter with my job,
00:06:06
◼
►
because if something goes weird and wrong,
00:06:08
◼
►
that could be very problematic to me.
00:06:11
◼
►
So I usually wait a little bit.
00:06:12
◼
►
And one nice thing about the new Xcode being shipped as an app
00:06:16
◼
►
file is it's very easy to back up.
00:06:19
◼
►
So typically what I'll do is I'll just grab that .app bundle,
00:06:22
◼
►
create a zip file, throw it on a big hard drive I have,
00:06:25
◼
►
and just in case.
00:06:27
◼
►
If I ever need to bring it back, I can.
00:06:29
◼
►
Because it's very hard to get the old past versions.
00:06:32
◼
►
You can't get them in the Mac App Store, I don't think.
00:06:35
◼
►
There may be some somewhere available on the dev portal,
00:06:38
◼
►
but I'm not even sure about that.
00:06:40
◼
►
So I always just back them up and have a whole bunch of
00:06:42
◼
►
archives of my old Xcode installs, just in case.
00:06:47
◼
►
So then that begs the question, what do I do with
00:06:49
◼
►
the new stuff?
00:06:50
◼
►
And so for that, I'm going to walk through some of the
00:06:52
◼
►
changes I've been making to Five Live, one of my Mac
00:06:57
◼
►
applications that I've recently been making
00:06:59
◼
►
Mountain Lion ready.
00:07:00
◼
►
So Mountain Lion includes this new notification center, which
00:07:03
◼
►
is great for something like Five Live, whose purpose is to
00:07:07
◼
►
monitor the 5x5 live stream status
00:07:11
◼
►
and alert you when shows are being recorded.
00:07:13
◼
►
And so that's a great thing for Notification Center
00:07:15
◼
►
to be able to pop up an alert and say,
00:07:17
◼
►
hey, build and analyze, hey, Hypercritical
00:07:20
◼
►
are being recorded, would you like to listen to them?
00:07:22
◼
►
And so I've been working on that.
00:07:23
◼
►
And for me, what I do is I have an old Mac laptop.
00:07:27
◼
►
It's an old MacBook Pro.
00:07:28
◼
►
It's fairly performant, does a pretty good job.
00:07:30
◼
►
And I use that as my--
00:07:32
◼
►
I guess you could almost call it my sandbox.
00:07:35
◼
►
That's where I go to work on stuff that is beta, that is
00:07:39
◼
►
volatile, that I want to play with without having any risk
00:07:42
◼
►
to my main machine.
00:07:44
◼
►
And so right now, that's running the latest developer
00:07:47
◼
►
preview of Mountain Lion.
00:07:48
◼
►
It's running the absolute latest Xcode.
00:07:50
◼
►
It's got all the iOS 6 stuff in it.
00:07:52
◼
►
And that's kind of my sandbox.
00:07:53
◼
►
And I can really do whatever I want on that machine.
00:07:56
◼
►
And I don't have to worry that I'm going to be messing up
00:07:59
◼
►
my production, important for shipping, actual money
00:08:05
◼
►
And I'll work on that.
00:08:06
◼
►
And so I've got notification center support all baked in
00:08:10
◼
►
and ready to go in the new 5 Live
00:08:12
◼
►
as soon as Apple starts accepting Mountain Lion apps.
00:08:14
◼
►
It'll be one of the things that I submit.
00:08:16
◼
►
But by segregating those machines,
00:08:18
◼
►
it just gives me such peace of mind.
00:08:20
◼
►
And I may be overly paranoid with this,
00:08:22
◼
►
but I've been bitten by it so many times, especially
00:08:25
◼
►
in the old days, where you'd install some new beta
00:08:29
◼
►
and it would mess up some weird thing.
00:08:30
◼
►
And you couldn't build, and you couldn't submit for two days.
00:08:33
◼
►
You had to find the old version and install it.
00:08:35
◼
►
And it's just one of those things that--
00:08:38
◼
►
if you were a carpenter, it's like having a sharp ax,
00:08:43
◼
►
or I guess maybe if you're a lumberjack, having a sharp ax.
00:08:47
◼
►
But your tools are important to you,
00:08:51
◼
►
and so I take very good care of them.
00:08:52
◼
►
And so I'm very conscious and very careful
00:08:54
◼
►
about what I do with them.
00:08:56
◼
►
So that's kind of my process.
00:08:58
◼
►
I'd say it's a little overly paranoid,
00:09:00
◼
►
but I think it works.
00:09:01
◼
►
And I think it really--
00:09:02
◼
►
if this is your job, this is your profession,
00:09:04
◼
►
you've got to be careful about this.
00:09:06
◼
►
Similarly, related to this on the side
00:09:08
◼
►
is how I manage the betas on my devices.
00:09:11
◼
►
And so what I always do with this is--
00:09:13
◼
►
what works pretty well is I typically
00:09:16
◼
►
am installing the new iOS.
00:09:19
◼
►
So in this case, iOS 6.
00:09:20
◼
►
I install it on my previous generation iPhone.
00:09:25
◼
►
I own one of almost every iPhone since the iPhone 3G, I think.
00:09:30
◼
►
So what I do is I'll install one before.
00:09:32
◼
►
So currently, it's on my iPhone 4.
00:09:34
◼
►
And I tend to prefer iPhones rather than iPod touches
00:09:36
◼
►
for playing around with it, primarily because I can
00:09:39
◼
►
actually then use it as my phone, which
00:09:41
◼
►
is really convenient.
00:09:42
◼
►
I can pop the SIM out of my current iPhone.
00:09:44
◼
►
I can pop it in.
00:09:45
◼
►
And I can get a sense of those features in day-to-day use
00:09:47
◼
►
without the risk of actually-- if somehow it
00:09:50
◼
►
breaks my phone or something weird,
00:09:52
◼
►
I'm not totally out of luck.
00:09:53
◼
►
I can just probably take the SIM out,
00:09:55
◼
►
put it in my main phone, which is running--
00:09:56
◼
►
I think now it's iOS 5.1.1.
00:09:59
◼
►
and that's you know i can
00:10:00
◼
►
pick that up right at right where i left off no problem
00:10:03
◼
►
you know that seems to work pretty well for me i'll do that and that you know
00:10:06
◼
►
and the i_m_ the ipad side is kinda pick a device
00:10:10
◼
►
it any matters as much there just because it's they're all kind of the
00:10:13
◼
►
same in many ways
00:10:15
◼
►
so i think on stall i was six probably on one of my
00:10:18
◼
►
problem i've had three
00:10:21
◼
►
i think that i'll probably where i go just because
00:10:24
◼
►
going to be wanting iOS 5 on my older devices, probably more
00:10:29
◼
►
than iOS 6 on my older devices.
00:10:31
◼
►
So that's probably what I'll do.
00:10:33
◼
►
It's kind of interesting, of course,
00:10:35
◼
►
because iOS 6 is not compatible with the first-gen iPad.
00:10:39
◼
►
So those will be stuck forever on iOS 5.1.1.
00:10:45
◼
►
But that's not really a big deal.
00:10:47
◼
►
I still actually even have an iPad running 3.2,
00:10:49
◼
►
the absolute original build.
00:10:52
◼
►
I just can't bear to update it because that machine is
00:10:56
◼
►
irreplaceable.
00:10:57
◼
►
Not that I even have many users stuck on that.
00:11:01
◼
►
There's just something kind of hard.
00:11:02
◼
►
It's almost like if I had an original iPad or iPhone
00:11:05
◼
►
running like iOS 1.
00:11:06
◼
►
I'd just-- there's something kind of cool.
00:11:08
◼
►
At some point, I'll probably break down and install iOS 5.1,
00:11:10
◼
►
put 1 on it.
00:11:11
◼
►
That may just be when I want to sell it or something like that.
00:11:15
◼
►
Though I mentioned it here.
00:11:16
◼
►
In case you have some weird bug on someone running an iOS 3.2,
00:11:21
◼
►
you need me to try something out,
00:11:22
◼
►
just let me know.
00:11:23
◼
►
I've got it sitting there, and it hardly ever gets any use.
00:11:26
◼
►
Anyway, so that's kind of my version strategy.
00:11:28
◼
►
It seems to work for me.
00:11:29
◼
►
And so hopefully that's helpful.
00:11:30
◼
►
Hopefully it's a useful thing to kind of be thinking about.
00:11:33
◼
►
A little pro tip, if you don't have another computer that you
00:11:35
◼
►
can kind of make your sandbox, I'd
00:11:37
◼
►
definitely recommend just getting it, whatever,
00:11:39
◼
►
the cheapest external hard drive you can,
00:11:41
◼
►
and just installing Mac OS on that and booting from that.
00:11:44
◼
►
And you can, since you completely
00:11:47
◼
►
reproduce your-- it's as though you have a new computer,
00:11:49
◼
►
even if it's running on your main computer.
00:11:51
◼
►
So you just boot from the external drive.
00:11:53
◼
►
You can do what you want.
00:11:54
◼
►
You could even start from a super duper backup or copy
00:11:57
◼
►
of your main computer.
00:11:58
◼
►
So all your applications and stuff are there.
00:12:00
◼
►
And then you can just upgrade it,
00:12:01
◼
►
as long as you're just kind of careful.
00:12:03
◼
►
It's like, whenever I do something like that,
00:12:05
◼
►
I always change the desktop on my new computer
00:12:07
◼
►
to something really obvious and gaudy,
00:12:10
◼
►
so that I'm very aware of what machine I'm on.
00:12:13
◼
►
So that's it for today's show.
00:12:15
◼
►
Hopefully that's helpful.
00:12:16
◼
►
As I said, if you have any questions, thoughts,
00:12:18
◼
►
comments, definitely the best place--
00:12:20
◼
►
Just reply me on Twitter.
00:12:21
◼
►
I'm @_DavidSmith there, and I'll do my best to respond.
00:12:26
◼
►
I think it's really helpful when I
00:12:27
◼
►
get a sense of what people are actually interested in,
00:12:30
◼
►
what people want to hear about.
00:12:31
◼
►
It just helps hopefully makes the show more engaging
00:12:33
◼
►
and more kind of a dialogue rather than just a monologue.
00:12:37
◼
►
But yeah, otherwise, have a good week, happy coding,
00:12:39
◼
►
and I'll talk to you later.