Mon Sep 20 05:45:09 2010
For the longest time now, many ActionScript developers have dreamt of using their skills to build iPhone applications, without having to mess around with learning yet another programming language. Adobe released the iPhone packager along with Flash CS5, but a few days prior to that release, Apple and it's lawyers rinsed any possibility of ActionScript running on the iPhone/iPod/iPad etc with bold changes to it's Developer's Agreement, thus leaving the iPhone packager useless. With that, Adobe pledged to discontinue efforts on the iPhone and concentrate on development for Android Devices. As exciting as this was for Android, it left a lot of developers angry, to the extent that some began boycotting Apple products and iPhone Developer get-togethers.
Recent events, however, (and I won't even try to understand the reasons why) have seen a kind of reverse to Apple Developer's Agreement, in that Apple are basically saying that you can now Develop for the iPhone using the iPhone packager (as well as other packagers for various languages) as long as the applications built do not download code. Great news, right?
I was one of the one's who had given up any hope of seeing ActionScript on the iPhone, and I had gone out and found other means of building my first app: Tumble Bee, and to be quite honest, I don't regret it. I learnt a lot from my ordeals and I came out much the wiser.
On the other hand, I am really excited to see what is in store for ActionScript on mobile devices in general and I think that the recent changes really open up the market for developers to build better than ever.
So without any further ado, I would like to post here what I have found out about compiling ActionScript for use on the iPhone.
What you will need
- Flex SDK including air 2.0+
- Adobe's iPhone packager
- Apple provisioning profile (You have to sign up for the Apple Developers license [$99] )
- p12 certificate (info can be found here)
- application.xml (I have created an example in the downloadable zip file below)
- ...patients!
Next download the zip file from the link below. It contains example files that will get you on your way.
iPhone App Example Files
Upzip it and inside you should see:
- Main.as
- application.as
- icons (folder with icon29.png and icon57.png inside)
- Default.png
First thing to do is to place the .mobileprovision file that you got from the iOS Dev Center and the .p12 file you should have created inside the unzipped TestCase folder containing the items listed above.
Next, open up Terminal and navigate to amxmlc inside the bin folder inside the Flex SDK you downloaded. (Note* There's more than one way to skin a cat, but this the way I prefer). I have my SDK in my Developer folder so I would type /Developer/SDKs/flex_sdk_4/bin/amxmlc followed by the path the file Main.as file inside the zip file you should have downloaded. For example, if the TestCase folder is on your desktop, it will look like this:
/Developer/SDKs/flex_sdk_4/bin/amxmlc /Users/{Username}/Desktop/TestCase/Main.as
That will compile the Main file inside the file. You could add -o="location+name.swf"
to create a file using a different name.
As you may already know, I like Textmate's ability to run commands very efficiently. If you're like me, you'll probably make a command out of this so you don't have to type all of that every time you want to compile.
Now that you have your .swf, it's time to make the .ipa that will run on your iPhone. You will need to compile using the iPhone packager. I placed mine in a folder called iphone in /Developer/SDKs/. You can place it anywhere you like, but just remember the location. Next make sure you have the .mobileprovision and .p12 in the TestCase folder, cd (change directory) into the TestCase folder and run the following command in Terminal (altering where necessary):
/Developer/SDKs/iphone/bin/pfi -package -target ipa-test -provisioning-profile my_cert.mobileprovision -storetype pkcs12 -keystore my_cert.p12 -storepass {your password} TestCase.ipa application.xml Main.swf Default.png icons
Once that has finished compiling, you should be left with the TestCase.ipa file, which you can then add to iTunes and sync to your device. The actual app in question is a simple program that will show you an example of the ActionScript TouchEvents available - TOUCH_BEGIN, TOUCH_MOVE and TOUCH_END. Just tap and move your finger around the screen and you will see what it does.
Anyway, that's about it. It has a little bit of a learning curve but I'm sure you'll pick it up in no time.