tags:

views:

113

answers:

3

I'm very interested in the technology behind ConvertBot. I tried to do a lot of stuff with CA, but what I am seeing there looks just too fast for CA.

I tried to open with Instruments, but it doesn't work with foreign apps. Is there any legal way to figure out what's under the hood?

A: 

I would hazard a guess that ConvertBot is using CA. What is it doing in that makes you think otherwise?

This is a complete guess BTW.

coob
I figured out they use CA. Probably I believed it must be OpenGL since it's so extremely cool.
Thanks
A: 

Why not write them and ask? They've been very open about their design process in a blog post and an interview on the Mobile Orchard podcast. From looking at the application, there's nothing that they are doing that couldn't be done with Core Animation and achieve the level of performance they're seeing. I don't know what you're doing with Core Animation, but I've been impressed with its capabilities in my application.

It is odd that you can't attach Instruments to a running application on the iPhone in the same way that you can for arbitrary applications on the Mac. Instruments is based on DTrace, so it should hook into any running process, but maybe the DRM prevents that on the iPhone.

Brad Larson
For some reason Instruments does work pretty well with my apps on the device (iPod touch, tough). It starts the app on the device automatically and then I can track everything. Very nice in Core Animation: It shows "misaligned views" that can cause performance problems. Yeah, you're right about just asking them. They don't seem to make a big secret about their business ;) I've heard a podcast with them. They do everything with CA. I love CA.
Thanks
+2  A: 

I'd also recommend just asking the tapbots people. But if you're just curious (and impatient), you can always look into the executable.

You can find your iPhone's synchronized apps in "~/Music/iTunes/Mobile Applications/". The '*.ipa' files are really only zip files which you can rename and decompress. You'll find the app wrapper in the 'Payload' directory.

To see what frameworks an executable links to use the command line:

> otool -L MyApp/Payload/MyApp.app/MyApp

If there's a line in the output like

/System/Library/Frameworks/OpenGLES.framework/OpenGLES (compatibility version 1.0.0, current version 1.0.0)

they are probably using OpenGL.

You can also look into the linked symbols, to see what functions they are using:

> nm -u MyApp/Payload/MyApp.app/MyApp

...
_glColorPointer
_glDrawArrays
_glEnable
_glVertexPointer
_glViewport
...
Nikolai Ruhe