Daring Fireball

ByJohn Gruber


Archive


The Talk Show

Dithering

Projects

Contact

Colophon

Feeds/Social

Sponsorship


 WorkOS
WorkOS, the modern identity platform for B2B SaaSfree up to 1 million MAUs.


 

New iPhone Developer Agreement Bans the Use of Adobes Flash-to-iPhone Compiler

Thursday, 8 April 2010

Prior to todays release of the iPhone OS 4 SDK, section 3.3.1 of the iPhone Developer Program License Agreement read, in its entirety:


3.3.1  Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.


In the new version of the iPhone Developer Program License Agreement released by Apple today (and which developers must agree to before downloading the 4.0 SDK beta), section 3.3.1 now reads:


3.3.1  Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).


My reading of this new language is that cross-compilers, such as the Flash-to-iPhone compiler in Adobes upcoming Flash Professional CS5 release, are prohibited. This also bans apps compiled using MonoTouch  a tool that compiles C# and .NET apps to the iPhone. Its unclear what this means for tools like Titanium and PhoneGap, which let developers write JavaScript code that runs in WebKit inside a native iPhone app wrapper. They might be OK. This tweet from the PhoneGap Twitter account suggests theyre not worried. The folks at Appcelerator realize, though, that they might be out of bounds with Titanium. Anscas Corona SDK, which lets you write iPhone apps using Lua, strikes me as out of bounds.

I originally thought this would ban games written using Unity3D, but perhaps not  Unity3D produces a complete Xcode project and Objective-C source files, so its more like a pre-processor than a cross-compiler. Hard to tell. If you forced me to bet, though, the fact that developers are writing C# code puts Unity3D on the wrong side of this rule.

There was no mention of this change during the announcement event today, but the language in the agreement doesnt leave much wiggle room for Flash CS5. It could hardly be more clear if they singled out Flash CS5 by name. (Wonder what Adobe does now? CS5 is thisclose to release and the iPhone compiler is the flagship feature in this version of Flash. Theyre pretty much royally fucked.)

Im not sure how exactly Apple intends to enforce this, but my understanding is that iPhone apps produced by Flash CS5 are easily identifiable as such by inspecting the contents of the app bundle. Im not sure if there are any intermediary translation or compatibility layers or tools which produce app bundles that are indistinguishable from app bundles produced by Xcode and the official SDK.

Update: To be clear, I do not think that Apple is singling out Flash CS5. I do think, though, that Flash CS5s cross-compiler epitomizes the sort of meta-frameworks Apple is not going to allow. Same goes for MonoTouch. What Apple doesnt want  and as we see now, is not going to allow  is for anyone other than Apple to define the framework for native iPhone apps. What Apple is saying here is, if youre going to write a native iPhone app, then you need to target our platform; if you want to do something else, then target the iPhone with an optimized web app. I.e., the iPhone OS supports two software platforms: Cocoa Touch and the web. Apple isnt going to let anyone else build a meta-platform on top of Cocoa Touch. I think this comment at Hacker News from raganwald nails Apples perspective on this.

Previous:The iPad
Next:Why Apple Changed Section 3.3.1

 


Display Preferences

Copyright © 20022024 The Daring Fireball Company LLC.