Flex/AIR for iOS Development Process Explained!

June 20, 2011By 166 Comments

So you’ve heard the great news and downloaded Flash Builder 4.5.1 supporting iOS, what now?! The process to become an iOS developer with Apple can be a bit daunting. This post is intended to help make the process easier and more understandable for those looking to develop applications for iPhone, iPad etc. My best advice before diving into this is to try not to get too caught up in the jargon and just follow the required steps. I put a short summary of iOS terms and their meanings at the bottom of the post. There are also more links there, including some Apple programs to check out such for your apps such as push notifications, and a section detailing the AIR app-descriptor XML specific to iOS.

You could avoid the rest of this post and still create an application in Flash Builder 4.5.1 with an iOS target and simply use the emulator if you just want to get a feel for what Flex Mobile for iPhone/iPad is like before going through the process. When you feel you are ready to try your application on an actual device though, there are two files you will need to have obtained from Apple, a code-signing certificate and provisioning profile. Here’s a dialog from Flash Builder 4.5.1 specific to an application being targeted for iOS. You can see that two files are required to continue and this post details the steps required to obtain those:

Note: You can use Flash Builder 4.5.1 or CS5.5 to package an iPhone or iPad application, but Apple basically requires you to have access to a Mac or use a Mac to create the necessary certificates with the Keychain to use for uploading your application to the app store. If you’re a Windows user you should see this link on generating a certificate and use that to replace the steps below where the Keychain Access utility is used on Mac. This post has some information that might also be useful to Windows users.

Apple Developer Steps
1-Register
2-Select Program Contract
3-Setup Certificates/Devices/Provisioning Files

Application Phases
1-Develop
2-Test
3-Distribute

Note: Apple Developer Steps 1 and 2 will be done prior to any application phase, Step 3 will be used in each application phase.

Steps Summary

1) Register as an iOS Developer

Start here to enroll in the iOS Developer Program. The Apple Developer Center will walk you through the necessary steps to either create a new Apple id for an individual or company, or use an existing Apple id but add the iOS developer program to it (for instance if you’re already developing for Mac OS X). On the ‘Select a program’ step, choose ‘iOS Developer Program’.

Note: When signing up as a company versus an individual, the enrollee will be designated the ‘Team Agent’ and can invite more team members and assign team admins. Those steps are beyond the scope of this post, refer to the Apple iOS Developer’s guide for more details. When you register as an individual, your name will be listed as the seller of any apps you submit to the app store. If you register as a company, your company’s name will be used.

2) Pay ($99/year)

3) Wait for the activation email

(should be within 24-48 hours or sooner when registering as an individual)

4) Choose contract type using the iTunes Connect link in your activation email

Free Applications Contract – You will automatically be eligible to develop applications for iTunes that are free. This contract is managed through iTunes Connect, which you will receive an email from with a link and can login to using your Apple Developer id set up in the enrollment step.
Paid Applications Contract – You need to complete a separate contract through iTunes Connect for applications you are selling including your bank info (where to distribute proceeds and deduct payments), a W-9 tax form and contact information. Note: don’t worry about this step if you’re just wanting to start playing around with some application dev’t and testing, you can always go back and update it later.

5) Setup certs/devices/profiles in the Apple iOS Provisioning Portal

These are needed during application development, testing and distribution (explained next…)

Develop and Test

This section explains how to use the Apple iOS Provisioning portal to develop and test an application on one of you devices but NOT distribute (distribution is covered in the next section):

Certificate/Profile/Device Setup

This step is probably the most confusing or painful part of the process of developing for iOS, but this info should help explain what you’re doing and why.

Once you have your contracts in place in iTunes Connect, you want to log in to the Apple Developer Center with the id you created in the registration step to set up any devices you’re using and obtain provisioning profiles and certificates to use in development and distribution. Once logged in, click on iOS Provisioning Portal.

TIP: The Apple Developer Center iOS Provisioning Portal has a ‘How To’ tab in each section that gives more detailed information on each step of the process below and I highly recommend using it as you’re going through these steps.

Steps Summary:
• Request, Authorize and download iOS Development Certificates
• Designate Apple Devices for your Development Team
• Create unique App IDs for your Applications or create a wildcard app id to use for a set of applications
• Create and Download a Development Provisioning Profile

Detailed Steps:
1) Request and authorize an iOS developer certificate – required for code-signing your applications
An iOS developer certificate is required to sign your applications, for instance you will be asked to supply it in packaging step of the development process in Flash Builder 4.5.1. On your Mac (OS X 10.6 or higher) run the Keychain Access application by going to Applications -> Utilities -> Keychain Access. Go to the top menu and select: Choose Keychain Access -> Certificate Assistant -> Request a Certificate from a Certificate Authority. Enter the email address you used in your Apple developer registration and leave the CA email address blank. Your screen should look like this:

next you will be prompted to save the file to your hard drive. Make note of where you saved this file. Then on the Key Pair Information panel, just leave the defaults of 2048 bits and RSA and press ‘Continue’.

(Windows Users: use this link to generate your certificate)

Now go back into the Apple Developer Center web page where you’re logged in to the iOS Provisioning Portal and click the ‘Certificates’ option on the left:

On that first Developer tab, click on the ‘Request Certificates’ button:

Now towards the bottom of the screen, click ‘Choose File’ and find that certificate signing request (CSR) file you just created from your Keychain Access application and press Submit. The certificate will show up in the list now with a status of ‘Pending Approval‘. Since you’re registered as an individual, you will need to just go in and approve your own certificates by clicking the ‘Approve’ button.

Next you need to download your newly approved developer certificate (.cer file) and the WWDR intermediate certificate (don’t worry about what this is, just download it from the supplied link next to the * note below your list of certificates). Once downloaded, double click each of them from your Mac and they will automatically cause Keychain Access to open, where you will choose to Add/Install them to your login keychain.

2) Register devices
This step requires you to use the portal to enter the UDID (Unique Device ID) of any devices you plan to have your application tested on, up to 100 of them per year. Once they have been provisioned they are included in the count for that year, regardless of whether you remove them. To get the UDID of a device, you can use iTunes with your device plugged in and locate the Serial ID on the Summary Tab and click on it. You will see it change to a 40-character UDID number, copy this number for the portal. Note: DO NOT USE THE SERIAL NUMBER, it will not work!


Note: Each new device added requires you to download a new provisioning profile that has the device and app id associated.

3) Create a unique app id
An Apple App ID is made up of a 10 character Bundle Seed ID (generated by apple) and a Bundle Identifier (specified by the developer). The Bundle Seed ID is generated by apple, and it a combination of letters and numbers. For instance, A12BC3D45E. You need to register your App ID to use specific Apple features such as the Apple Push Notification service (APNs) and to register an application to incorporate In App Purchases. Wildcard bundle identifiers are a good way to start with developing for iOS because it can be used to build and install all of your applications. You can generate a wildcard app id in the provisioning portal. An example of a wildcard to be used with all applications would look like: L2R24EVPME.*. If you create one for a specific application, use the reverse domain name approach for the bundle identifier. So something like L2R24EVPME.com.devgirl.myfirstapp. for instance.

4) Create and download a Developer Provisioning Profile
A provisioning profile is required for testing your application on any iOS device and is basically a legal entity binding you as an authorized developer to a developer certificate, device id (or list of device id’s) and application. You will be using the same developer certificate that is correlated to this provisioning file to code sign your application. I have a personal tendency to need to understand things to the Nth degree and don’t like to just assume what I read. I thought the best way to understand what this file contains and is used for would be to just open it up and look at it. I opened it in a text editor and saw all of the information it contained, and thought it may help to show some of that data in this post too:

<key>DeveloperCertificates</key>
	<array>
		<data>
		FIIMYzCCBEugAwIBAgIIA3dPnIKEeV8wDQYJKoZIhvcNAQEFBQAwgZYxCzAJ
		BgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBs
		BSZXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBw
		iCNAgY+HfCq5WHCPM+4mDTUZDCrzYylgAVbk75aJziP6
		</data>
	</array>
<key>Entitlements</key>
	<dict>
		<key>application-identifier</key>
		<string>L4DHMAGNR9.*</string>
		<key>get-task-allow</key>
		<false/>
		<key>keychain-access-groups</key>
		<array>
			<string>L4HDANMGR9.*</string>
		</array>
	</dict>
	<key>ExpirationDate</key>
	<date>2079-07-02T20:05:40Z</date>
	<key>Name</key>
	<string>HollysJune2011DistributionCertificate</string>
	<key>ProvisionedDevices</key>
	<array>
<!-- the following are the device UDID's for which this provisioning profile can be used -->
		<string>70193d04350b256bfa369030b9e3017e5fefa31b</string>
		<string>323bdcefb416202352646a241d232dfed3b71be2</string>
		<string>4891caf07e97827b622f06b2f776d8163a3c082b</string>
		<string>cg3ba2c52857063b36392899a78fc535c4770fe9</string>
		<string>25ecde32aad52da6174a89fa672e81acdd74a1be</string>
		<string>0mffb312e9abb5bf1b0d7d6fa7de558fa22e9a51</string>
	</array>
	<key>TimeToLive</key>
	<integer>24855</integer>
	<key>UUID</key>
	<string>B154BFFB-DAF6-4E8B-861A-B51E818EA2FA</string>
	<key>Version</key>
	<integer>1</integer>

Tip: If you get an error in iTunes when trying to install an app saying that the Signer is not Valid, it’s probably because you did not re-generate your provisioning file again from the portal after adding your device UDID. You also need to make sure the application is built with that new provisioning profile (Flash Builder asks you for it).

Note: Any given device may contain numerous provisioning files tied with different certificates, device and app id’s. You should also realize you will be creating multiple provisioning files, so you should get used to this step. Each development provisioning profile expires after 90 days. The distribution provisioning profiles expire later, see the Distribution section for details.

Remember, the above steps will only allow you to test an application on your own devices. You need to go through the next set of Distribution steps to distribute your application to others for testing or for final distribution of your application.

Distribution

You will use the same sections in the portal as you did in the Development stage, except this time you will be selecting the Distribution tab within those steps where applicable, as well as the final Distribution section.

Step Summary:

  • Create and Download an iOS Distribution Certificate
  • Add device id’s
  • Create and Download a Distribution Provisioning Profile
  • Submit your application for Distribution

Many of these steps are similar to what you did in the development phase so less detail is needed in this section. The most important thing to note here is that there are two different types of distribution phases, Ad Hoc and App Store. Ad Hoc just means distributing your application to a limited set of people for testing on their devices (limited to 100 devices). The App store distribution phase is the final distribution phase where you’re application is ready for the iTunes app store. The two phases each require their own provisioning file, just as the development phase required a development provisioning profile. The application must be rebuilt with this new provisioning file after it’s created and downloaded before it can be distributed.

NOTE: You will see a note in red that says: ‘Only Team Agents are authorized to prepare and submit applications for distribution.’ – don’t worry, you are your own Team Agent since you signed up as an individual :)

Detailed steps:
1. Create a ‘Distribution’ Certificate to sign your application for distribution to others. This is the same sets as creating the Developer Certificate above, do the exact same thing but use your company name this time if you want, this is the one that will be used to sign your apps for others. Your developer certificate can only be used for development and will expire, or could be revoked before expiration. The distribution certificate is valid for one year. It can be used to sign your application for distribution.

2. Register any device id’s for those users who you are designating as testers. You must do this step before generating your provisioning profile, to ensure the device id’s are included in the provisioning profile you will associate with your application in Flash Builder. Note: You can continue to add more device id’s up to 100, you just have to remember to re-generate the provisioning file created in the next step and download that to use with your application.

3. Create a Provisioning Profile for distribution – you will need to select from either Ad Hoc (to distribute to people for testing) or App Store Provisioning Profile to use for your final release to the iTunes App Store depending on your stage of development.

4. Rebuild your application with your new distribution provisioning file and distribution certificate in Flash Builder. You can use the Flash Builder – File | Export | Release Build (under Flash Builder in the Export dialog) option to do this. Here’s an example of the dialog for iOS when you select to do a release build:

5. Ad Hoc Distribution – If you’ll be distributing your app for testing, you could then post the resulting package .ipa file to a website or send via email to your testers.
App Store Distribution – If it’s an app store ready distribution package, then you will use the iTunes Connect site to submit your application. You’ll need to fill out a bunch of information, be as explicit as possible to avoid issues with rejection. Upload your application on the Upload page as a renamed .zip file and upload the 512×512 image separately as the large icon. This will be used for your application presence in iTunes.


Apple Jargon


Bundle Seed ID – the Apple generated 10 digit id portion of your AppID
Bundle Identifier – the developer provided portion of your AppID (reverse domain name or * for wildcard)
Provisioning Profile – a file that gets installed to the device and links you (via your digital certificate) with an Apple iOS registered id, list of device id’s and application id plus some other metadata.
Ad Hoc Distribution – ‘test provisioning profiles’ – Share your application with up to 100 others via email, or by posting it to a website or server. A specific type of ad hoc provisioning file is used when you build your installer package in Flash builder that includes the registered device id’s of your testers.
Code-Signing Certificate – a .p12 file used for code signing your applications. It gets installed to your keychain (Mac thing) after download from the provisioning portal and is one of the items you’ll need to specify in Flash Builder when you build your installer package, along with your provisioning profile. Also referred to as a developer certificate or distribution certificate.
Information Property List (info.plist) – Contains settings and configuration data information for your iOS application. Similar to the app-descriptor XML file for AIR. The iOS section in the AIR app-descriptor will use the key/value pairs specified in the infoAdditions element. See this link for more details about which values can be specified here.
Keychain – on your Mac, it’s a password management system tied to your Login id/pw that holds encrypted keys of data.
UDID – a unique 40-character identifier for your Apple device.


AIR app-descriptor iOS-specific notes:


There are certain icon sizes needed specifically for iOS. At the time of this writing, the app-descriptor created when you build a new Flex Mobile project that includes an iOS target does not include XML tags for all of the sizes used for iOS. For instance, you will want to specifically specify these sizes:

  • 29×29 shows up in Spotlight search on iPhone or iTouch
  • 48×48 shows up in Spotlight search on iPad
  • 57×57 home application icon on iPhone and iPod Touch
  • 72×72 home application icon on iPad
  • 114×114 The iPhone and iPod Touch home screen icon for the 960-by-640–pixel retina display
  • 512×512 used to display your app in iTunes

Note: The 512×512 icon is NOT included in the packaged installer (.ipa file) that’s used to submit to the app store, you submit this icon separately as a jpeg. It is however included in the development and ad hoc packaged installers generated from Flash Builder but you should specify it as a .png in the app-descriptor. See Icons for app descriptor notes for more details!

There’s also a section in the AIR app-descriptor XML file specific to iOS that you need to be aware of that can be used to change some application settings corresponding to the iOS Information-property list (application config file for iOS, aka info.plist file). Here’s an example of some values that could be set in this section:

<!-- iOS specific capabilities -->
	<iPhone> -->
		<!-- A list of plist key/value pairs to be added to the application Info.plist -->
	<InfoAdditions>
            <![CDATA[
                <key>UIDeviceFamily</key>
                <array>
                    <string>1</string>
                    <string>2</string>
                </array>
                <key>UIStatusBarStyle</key>
                <string>UIStatusBarStyleBlackOpaque</string>
                <key>UIRequiresPersistentWiFi</key>
                <string>YES</string>
                <key>UIApplicationExitsOnSuspend</key> 
                <string>YES</string>
                <key>UIRequiredDeviceCapabilities</key> 
                <array> 
                   <string>microphone</string> 
                   <string>gps</string> 
                   <string>camera-flash</string>
                 </array>
            ]]>
        </InfoAdditions>
        <requestedDisplayResolution></requestedDisplayResolution>
</iPhone>

The UIDeviceFamily specifies what iOS devices the application can be run on. The 1 value refers to the iPhone/iTouch and the 2 value refers to the iPad.

<key>UIDeviceFamily</key>
         <array>
                    <string>1</string>
                    <string>2</string>
        </array>

If you want to limit it to just the iPad for instance, you would only include the 2 value, such as:

<key>UIDeviceFamily</key>
         <array>
                    <string>2</string>
        </array>

The UIStatusBarStyle can be set to 3 different values. More details can be found here, but here is a summary of the 3 values.
UIStatusBarStyleDefault – A gray style (the default)
UIStatusBarStyleBlackTranslucent – A transparent black style (specifically, black with an alpha of 0.5)
UIStatusBarStyleBlackOpaque – An opaque black style

Note: The iOS docs mention that on the iPad the UIStatusBarStyleDefault and UIStatusBarStyleBlackTranslucent styles default to the UIStatusBarStyleBlackOpaque appearance.

When the UIRequiresPersistentWiFi flag is set to true, it indicates you need to keep the wifi connection open during the lifetime of your application. If it’s set to NO (or default), it will close the connection after 30 minutes.

The requestedDisplayResolution setting should be set to high such as shown here if you want your application to take advantage of the retina display screen and 960×640 resolution. Otherwise the default is standard and it will not take advantage of the high resolution when running on those devices. If you’re running on a non-retina display screen this setting is ignored.

One excerpt from the Adobe docs that further describes this resolution property says that it: “Specifies whether the application desires to use the standard or high resolution on an iOS device with a high-resolution screen. When set to standard, the default, the screen will appear to the application as a standard-resolution screen. In other words, the fullscreen stage dimensions are 320×480, even on a 640×960 high-resolution screen. When set to high, the application can address each high-resolution pixel. In other words, the fullscreen stage dimensions are 640×960. On devices with standard-resolution screens, the stage dimensions match the screen dimensions no matter which setting is used.”

Therefore, it would seem like a good idea to generally set this value to high, unless your application specifically does not want to take advantage of the higher resolution:

<requestedDisplayResolution>high</requestedDisplayResolution>

The UIRequiredDeviceCapabilities can be added to indicate that the application can ONLY be installed when the device has certain capabilities. Here’s an example, but for the complete list, see the link I recommend below…

<key>UIRequiredDeviceCapabilities</key> 
<array> 
          <string>microphone</string> 
          <string>gps</string> 
          <string>camera-flash</string>
</array>

I highly recommend perusing this link for more details and information about which key/value pairs can be specified in this section because not all of the iOS settings are directly available and there are a couple others that could be of interest, such as using a custom URI or exiting your application when it’s paused or put in the background.

Apple iOS Programs to check out…
Push Notification Service
In App Purchases
Apple Game Center
iCloud

Great Resources:
Flash Builder 4.5.1 Updater (for existing Flash Builder installs)
Apple Developer Program Guide
Adobe Devnet – Guide for Apple App Store Submissions
Antonio Holguin’s iOS Development Process Summary
iPhone Dev’t – Good Practices
iPhone iPad Development Guide

Credits and References:
Apple Developer Program Guide (some screenshots used in order to use generic id’s)

Filed in: Adobe AIRFlash Builder 4.5Flex 4.5Flex 4.5/MobileFlex AndroidFlex iOSFlex/AIRMobile DevelopmentUncategorized Tags:

About the Author ()

Comments (166)

Trackback URL | Comments RSS Feed

  1. Awesome!!! Thanks a lot for this!

  2. Brandon says:

    Thank you so much for this walk through!

  3. Satish Kumar says:

    Thanks for the Info , How ever I have a doubt , Say , I do not wish to put my App to the Apple App Store , Still would I need to enroll to IOS developer program and Pay 99$ every year.

    My need is simple , Develop the Flex Apps for IOS , Package and Distribute to the Clients or For personal use.

    • Nate Nielsen says:

      Yes, you will still need to be a part of the program in order to get the cert to sign the app. I know, lame.

  4. Lee Burrows says:

    hi Holly

    Great explanation – unfortunately, i’m stuck on step 5/develop and test…
    What do us windows users use instead of Keychain Access?

    • Hi Lee!

      Check out these links for generating certificates and provisioning profiles on Windows:

      Generating a certificate signing request

      Lee Brimelow has a video here that walks through using these steps (though he’s building the original application with Flash IDE, the certificate and provisioning process is the same):

      That should be what you need, good luck!
      Holly

      • Hi there!

        Just launched our flash built app game onto the App Store “Splat Facebook” thanks to your help Holly!

        It was alot harder than launching it to the android market but thats why we love apple :)

        Question: Push notifications? Whats the best way to set these up if we have been using adobe products? any suggestions?

  5. Dat Chau Quoc says:

    Hi, i need to find a solution that i can load swf file (code as3 inside) to app which i build in iPAD by Flash Builder 4.5.1

    Can FB4.5.1 do it ?

    Because i create a demo and i still can’t load it by FB4.5.1 ( i used SWFLoader)

    Thanks you,

    • Mike says:

      Hi,

      I was wondering if you were able to load a external SWF into FB 4.5.1. I am building a prototype and need to load an external AS3 SWF into my mobile app. SWFLoader does not seem to be a feature in a mobile app.

      Thanks in advance
      Mike

  6. Joost says:

    Thanks Holly,

    This helped a lot.

    Do you know anything about “In App Purchase”. That’s for sure something I need.

    Brgds, Joost

    • Chit1 says:

      Hey Joost,

      Were you able to use “In App Purchase” using Flash Buidler ?

      I am also planning to build an iPhone app using this but wanted to know whether Flash Builder supports this or not.

      Thanks,
      Chit1

  7. Hi Holly,
    the Flex SDK provides us free command line compiler for flex. Version 4.5.x also contains lib/AOT/ folder with all the stuff to package for iOS.
    But I couldn’t find any explanation on how to package for iOS from the command line without the window interface provided by Flash Builder 4.5 (and Flash CS5.5)
    Are you able to point me to some how-to page?
    Thanks,
    Saverio.

  8. David says:

    Holly,

    Thanks for this entry – it really helped me get a jump start on mobile development with Flex.

    Quick question – I have created a TabbedViewNavigatorApplication with two tabs (tab1 & tab2). The first time I launch the app, tab1 is displayed (as expected). After using the app (switching screens, adding data to fields, etc) and closing the app (and even turning off the iPad) – I return to the app at some point in the future to use it again – to find that it has ‘remembered’ the screen and choices where I left off!

    I realize this is likely the default design of this media, however I am used to web/desktop environments where the state is not remembered and I am presented with the default entry screen anew (like a login screen!)

    So my question is – how do I control this? I tried fiddling with the persistNavigatorState property – which gave me a nice way to ‘listen’ for the navigatorStateSaving – and perhaps save data, but could not figure a way to force the state back to ‘origin’ (think login screen). Perhaps push a login screen onto the navigator at this point?

    What are your thoughts, ideas on best practice?

    Regards,

    David

    • Hi David!

      You could set the selectedIndex of your tabbedNavigator to the tab you want it to start with (such as the first one or 0), in the deactivate handler of the main application MXML, such as:

      <?xml version="1.0" encoding="utf-8"?>
      <s:TabbedViewNavigatorApplication ... deactivate="deactivateHandler(event)">
      
      ...
      <fx:Script>
      		<![CDATA[
      protected function deactivateHandler(event:Event):void
      {
      	this.tabbedNavigator.selectedIndex=0;
      }
      ...
      ]]&gt;
      

      If you want your application to completely exit rather than suspend to the background in-between on iOS, see my latest post…

      Hope this helps!!
      Holly

      • jacob manning says:

        Hi Holly,

        Are there push notification services for flex/AIR yet?

        we are wanting to build a notification service for ios aps made in flash for ios devices.

        Cheers!

        Jake

        • Mike says:

          Hi Holly,

          I am interested in implementing iOS app push notifications as well. Is this something that we can do now or something that is going to be In a future release? If so is there a tutorial or any kind of documentation.

          Thanks
          Mike

  9. Jose Ramon says:

    Great post!. Thanks Holly!.

    Best regards from Spain,

    J.R. Leon

  10. Erik says:

    The ability to compile an app to multiple devices is without a doubt the holy grail of mobile computing. I enjoy being both a Flex developer and an XCode/Obj-C/Cocoa developer, but I would like a solution to expand my reach to Android, etc. without having to learn yet another platform to love/hate. 4.5 had me very excited.

    However, there are some key APIs that Apple provides in its SDK that are sorely unavailable from Adobe’s approach. iAd, GameCenter, In-App Purchase and the upcoming iCloud APIs are MAJOR benefits of being a part of Apple’s ecosystem as a developer. The absence of these features is a deal-breaker for me as an independent developer who’s looking for creative ways to profit from the exposure Apple provides in the “walled garden”. If there are plans to eventually support some of these APIs (or APNS for that matter), please direct me to the info and I will patiently/anxiously await it.

    It would have been nice if the AIR packager had the ability to publish to XCode, where one could somehow take advantage of the aforementioned APIs with a minimal understanding of ObjC/Cocoa. Yeah, that’s a tall order, but one can dream. Regardless, 4.5 is a step in a good direction and Adobe’s offering undoubtedly is the most empowering suite available, if not the only.

    • fabini says:

      Hi Erik,

      Fully Agree :-)
      I also develop with both XCode/Objective C and Flex and I think that both Approaches are most interesting and promising.

      As you pointed out, Flashbuilder is missing some APIs that we can find in the Apple SDK (in my case, I have an App using some OpenGL ES APIs that I probably will not be able to port, with the same response time, using Flashbuilder).

      I understand that Adobe is targeting a generic platform, which is of course an excellent idea, but it would be also very useful, if platform dependent User-Exists (allowing in this case to reference platform specific API’s like the ones you mentioned) could be still possible.

      The approach is basically not new as such. Java allows also, via JNI, to access “non java modules” written in C/C++ and I am wondering if a similar approach would ever be an option for Flashbuilder.

      @Holly : great Post… as usual… :-)

  11. Chit1 says:

    hey Holly,
    Thank you soo much for the great post. However, I am really stuck at the installation process.
    When I try to install it on my iPad using itunes it gives the following error:
    Tha app was not installed because it requires the newer version of ipad software.

    And when I try to update my iPad using iTunes, it again gives me an error:
    The itunes update server could not be contacted. Please check your internet connection or try again later.

    However, internet connection is active on my iPad as well.
    Can you please please please help/ What should I do :(

    Thanks,
    Chit1

  12. Chit1 says:

    hey Holly,
    Thank you soo much for the great post. However, I am really stuck at the installation process.
    When I try to install it on my iPad using itunes it gives the following error:
    Tha app was not installed because it requires the newer version of ipad software.

    And when I try to update my iPad using iTunes, it again gives me an error:
    The itunes update server could not be contacted. Please check your internet connection or try again later.

    However, internet connection is active on my iPad as well.
    Can you please please please help/ What should I do :(

    P.S I am using windows and both the internet connections are different. I mean the one on my phone and the one on my computer
    Thanks,
    Chit1

    • Chit1 says:

      The current version of the iPad is 3.2.1 and the same problem I am getting on the iTouch as well

      • fabini says:

        Hi Chit1,

        I am working under Snow Leopard (Apple) and actually I deployed without problems Flashbuilder Apps using IOS 4.3 and now with the Beta Version of IOS 5.0
        No experience under windows but….

        Maybe under windows you should try to install first the latest Version of Itunes

        Don’t quote me on this but I think you need at least
        Apple iTunes 10.2.2 to upgrade to 4.3

        Hope it helps

        • Chit1 says:

          Hey Holly,

          I am planning to build an iPhone app using Flash Builder and it would also require feature of “in App Purchase”, so wanted to know whether Flash Builder supports this or not.

          Thanks,
          Chit1

        • Chit1 says:

          Thanks fabini :) It upgraded iOs to 4.3 and it worked :)

  13. Chit1 says:

    Hi Holly,
    Thanks for the info.. It helped..I tried installing my .ipa file(which was developed using windows) from a Mac PC and found out that it requires minimum of iOs 4.0

  14. Joseph Abenhaim says:

    Hi Holly,

    Great Info! I have a problem however, I followed your intructions and added 5 devices (all iphone 4s running 4.2+) 3 of those devices work great, I created a distribution portal and everything works great to download the app on those devices, however 2 of those devices fail, saying unable to download always at around 90% of the installation process. I did some digging around and aparently thats either due to the device id’s not added in the provisioning profile or a boolean flag set in the Entitlements.plist package. The former has been verified and all 5 devices are actually in the package. I even unpacked the ipa to verify the right provisioning profile contained all the correct ID’s for the phone.

    As far as the Entitlements.plist, is that even possible to have or add on a flash builder project ?

    Thanks!

  15. daslicht says:

    >>>99$ /year
    A Guide for Android or Blackberry Playbook would be interesting as well !

  16. Hugo says:

    I’m stucked in provisioning portal !

    I’m forced to have an iOS device !!!

    I’m pusbished in the BB App World and dont have any PlayBook.

  17. Antonio says:

    Hi Holly, i’m searching and searching about using Apple Push Notifications on a Flex Mobile app. I’ve found all kind of info, most talking about it’s not possible to use APN on Flex 4.5. But you talk about APN on this article. Is it possible to use it on Flex iOS app? Is there a sample anywhere? Thanks.

  18. Thanks for this – I’ve gone through most of these steps already, only to discover that you have to actually upload your app from a Mac! And not just any Mac, as my pre-Intel Mac just won’t do…you have to have a Snow Leopard or better machine in order to upload your app, even after doing all this and paying your $100 bucks.

    You may want to add something about this in a future post – I know some guys have used VMWare or other virtualization apps to use the uploader, but these getting OSX running on my 2 PCs failed miserably. I will probably buy a Mac once I get more serious about my iphone/ipad dev stuff, as there really isn’t any other solution that I’ve seen for a PC based mobile developer.

  19. Matt Nowicki says:

    Holly, terrific writeup of an awful process (not Adobe’s fault). I’m having a problem though and hope you can shed some light on it.

    When I go to upload the app with Application Uploader it tells me that the bundle app ID doesn’t match the provisioning app ID. In the app descriptor file I have my app ID in reverse DNS fashion WITHOUT the Apple generated unique bundle ID (something like 1D39DKSLA). If I put that unique bundle ID in place it won’t publish. But then when I go to upload the app, Apple says that the App ID doesn’t match (shows the IPA file as com.whatever.whatever and that the provisioning profile has 1D39DKSLA.com.whatever.whatever).

    I don’t know where to go to correct this — please help!

    • Hi Matt! Have you tried opening up your provisioning file to see what it has in it for application id? For instance, mine looks like this:

      <key>Entitlements</key>
          <dict>
              <key>application-identifier</key>
              <string>L4DHMAGNR9.*</string>
              <key>get-task-allow</key>
              <false/>
              <key>keychain-access-groups</key>
              <array>
                  <string>L4HDANMGR9.*</string>
              </array>
          </dict>
      

      Then you could verify what it’s trying to match… Let me know if that helps!
      Holly

      • Matt Nowicki says:

        OK, so mine has 1234567890.com.smartdealerproducts.smartpad(obviously the 1234567890 is fake but you get the idea). The problem is that if I put this value in my app descriptor file (within the tag), Flash Builder won’t compile the release executable because it doesn’t match. The exact error is “The AIR application ID ’1234567890.com.smartdealerproducts.smartpad’ does not match the pattern ‘com.smartdealerproducts.smartpad’ specified in the provisioning profile. Either change the applications ID, or use a provisioning profile that matches the existing ID”.

        So I have to put in just com.smartdealerproducts.smartpad. That lets me compile but then Application Loader says it doesn’t match because it’s expecting the 1234567890!

        • Hi Matt, so are you building an ad hoc release build from Flash Builder and using iTunes or are you doing an official release with the app store? If you’re doing the ad hoc from Flash Builder, make sure you remove any previous versions from iTunes and also install the correct ad hoc provisioning distribution file for it into iTunes… You shouldn’t need to use that bundle seed id portion of your app id in the app-descriptor.xml (see this link). Trying to think of what else could be happening, it sounds like your provisioning file is right… Let me know what type of build you’re doing exactly. Thanks! Holly

      • Matt Nowicki says:

        By the way, thanks in advance for your help!!!

  20. Does anyone know if you can access the iTunes library and play songs through a Flex app that’s been compiled to run on an iPhone or iPad? seems to me this would only be possible in a native objective-c app. also curious to see a list of things that can and can’t be done with Flex/Flash apps that get are compiled to run on iOS.

    anyone at Adobe have this info? seems there’s a lot of grey area. all of the sample apps i’ve seen going from Flex to iPhone are very simple.

    I fear that a lot of time wil be wasted trying to author cross-platform apps in Flex/AS3 and in the end it will make more sense to just author them natively.

    any thoughts?

    Mike

  21. cole says:

    Holly are you aware of any width restrictions of content?
    Like if i have a container sprite and i add twenty 1024 by 768 images.
    Will that sprite ever get to large to scroll? is there a max width?
    This would for a pure actionscript mobile project.
    thank you!

  22. Sanjay says:

    Hi Holly,

    I’m planning to use Flash Builder 4.5 for all my development of iOS and Android.

    However, I’m getting stuck at the monetization part, does the FB support iAd, in-app purchases etc.

    Can you give me pointers on how to do this. Also let me know, if it’s not available currently and will be available in future updates.

    This will really help me a lot on deciding on which platform to use.

    Thanks,
    sanjay

  23. I’m sure you can do in app purchases with FB or Flash, somebody has probably already posted some code for that, so I would Google it!

    Holly I agree though that a tutorial about in app purchases or app updating would be awesome – as well as anything about how to use the iPad’s built in recorder. Have not tried Googling that one yet, but I’m sure somebody has already done it…

  24. Holly, any new thoughts or info regarding what Erik said above?

    “However, there are some key APIs that Apple provides in its SDK that are sorely unavailable from Adobe’s approach. iAd, GameCenter, In-App Purchase and the upcoming iCloud APIs are MAJOR benefits of being a part of Apple’s ecosystem as a developer. The absence of these features is a deal-breaker for me as an independent developer who’s looking for creative ways to profit from the exposure Apple provides in the “walled garden”. If there are plans to eventually support some of these APIs (or APNS for that matter), please direct me to the info and I will patiently/anxiously await it.”

  25. Donny says:

    Hi Holly,

    What are the current conditions regarding an AIR app gaining access to the internet? Is this limited to certain deployment types? I’m currently using quick publishing for device testing and loading fails without any popup notification.

    • Hi there, what device are you testing with? Did you ensure you have the Internet permission set for Android if that’s what you’re using? You could check your app-descriptor.xml for your project to see if the android manifest has the Internet permission set. Thanks! Holly

  26. Hi Holly,

    It’s possible make push notifications on iOS from Flex/AIR app? Thank you!!!

  27. Brandon G says:

    Would this be the same process for signing an application for enterprise distribution? From what I can tell there are only to type of certificates, ad hoc and distribution. If you are an iOs enterprise developer, when you sign for distribution then you are finished. You can then provide access to your users however you want. Is this correct?

  28. Anurag says:

    Hi,
    I want to check internet connection for IPad but NetworkInfo class is not working for IPad.What should I do in my code for checking internet connection on IPad.

  29. Pierre Chaillet says:

    Hello Holly,

    It is easier to learn Flex 4.5 and develop a complex mobile application (perfectly working on my Samsung Galaxy SII Android) than to pass through the Apple Provisioning Problems. I am a newcomer on Mac OS X Lion Server.

    I have been stuck for 2 days in the Signer is not valid issue either on my iPod or my iPad2 at the end of the installation in debug mode. My mobileprovision file seems OK and is correctly installed on my end devices. I follow the instructions step by step, and try again, but I have no ideas where to go now.

    May be I miss something important. Any idea ?

    Thanks for your help and your blog.

    • Hi Pierre, it is not the easiest process, I know :)! Did you make sure to regenerate and download a new certificate and provisioning file after you added your device id in the developer portal? Thanks! Holly

      • Pierre Chaillet says:

        Thanks Holly,

        May be not. I will do it again.

        I try with Mac Terminal codesign -dvvv (path) DI_mobile_fr.ipa and the answer was: code object is not signed at all.

        I will come back when it is OK.

  30. Adam says:

    Does anybody know how to upload application ipa application to ITunes from Windows OS. It looks apple requires upload form Application loaded (XCode) and it runs only on Mac…. uhh…

  31. Pierre Chaillet says:

    Thanks Holly,

    It is working now. So, the problem was that the certificate request (number 1 in the Apple list) must be done after Device registration (numer 2 in the Apple list).

    • oliver merx says:

      Thanks for this hint, Pierre. I have spend the whole weekend trying to install my Apps on my brand new ipad.

      Your post saved my life! I do not understand why the apple guys are not able to bring these two points into the correct order on their portal.

      The only negative thing about the fact that its running: Now I know that my app is much slower on iPad 2 (with iOS 5) than on Android 3.2 (Samsung 10.1). So in the end I am still a little bit frustrated ,-)

      • Pierre Chaillet says:

        For my app, there is not a big difference between iPad2 and my Samsung Galaxy SII Android (2.3.5).

        Finally, my app was approved by Apple in less than a week. On the other hand, on the Android side, the new Application licensing system seems terrible, but I expect Flex 4.6 to take care of that…

  32. Damian says:

    Thank you very much for this article. It helped me a lot and saved me a lot of time :)

    That Apple doesnt support App uploading on a PC is a pitty and I cant understand why, its just a file upload (or am I wrong?).

    Greetings from Cologne, Germany
    Damian

  33. alex says:

    Holly,

    Using flashbuilder 4.5 on windows machine and you article is great.

    After if get id/etc I want to test on ipad2. I assume I can just plug into usb port from ipad2 to windows machine to test. Is that correct? I use android now and that is all I need to do.

    Or do I have to get it to ipad2 another way.

    Thanks,

    • Erik says:

      You have to have an Intel-based Mac capable of running XCode and an iOS developer account in order to test on a device.

  34. Lane Friesen says:

    I have an app that has successfully passed through the ad hoc distribution phase. I have a Windows machine. I understand that I need a Mac to upload the final binary to the Apple Store? I can access a Mac, but only for limited periods and can’t experiment on it (and am not familiar in any case with the commands). What precisely do I have to do on the Mac so that I can upload the final distribution binary without overly inconveniencing the person who is kindly letting me use their Apple machine? (They did download the SDK for me on our first unsuccessful attempt, so that element is present if it’s needed.) It sure would help if you could give exact step-by-step directions on this critical final stage – I can’t find anything anywhere on the Web.

  35. I faced the same issue just the last couple of weeks. My Mac is a lovely but older machine, non Intel w/ Tiger. So that is a no go for the Apple App Uploader. After trying to coach my brother in law over the phone for a few days, he still could not get my app uploaded.

    I’m sorry to report that the only real solution if you plan on actively developing for IOS, is to buy a Mac with Snow Leopard or Lion. You can search for a ‘Hackintosh’ on eBay, but you’ll pay over $200 for a used little netbook. In the end I got an iMac, and splurged for the all in one from 2009. I wanted the ability to mess around with Xcode a bit, and possibly look at Corona…

    Sorry I don’t have any better idea for you!

  36. Daniel Lee says:

    Hi Holly,

    Great post! However, when I attempt to debug my app on an iPad I get the following error:

    ‘Launching iPad device’ has encountered a problem.

    Error occurred while packaging the application:
    null
    java.lang.NullPointerException

    This error pops up after I enter my certificate password. I also get the same error when exporting a release build. I’ve tried upgrading Flash Builder to 4.6, but I’m still having the same issues. Do you have a solution to this problem?

    Thanks in advance,
    Daniel

    • as3coder says:

      Hi daniel, did you find any solution for your problem “Null pointer exception” I am facing same issue while building app for IOS.

  37. Daniel G says:

    Great Article Thank you. But, I have been trying to deploy a compiled AIR app (app name.ipa) with the distribution certificate and distribution_provision through Application Loader and it keeps telling me “Application failed code sign verification. The signature was invalid, or it was not signed with an iPhone Distribution Certificate” also “Unable to extract code signing entitlements from your application. Please make sure appName is a valid Mach executable that’s properly code signed.”

    I have follow the article info and was able to successfully debug and create ad-hoc install but now when submitting the app to the App Store it just doesn’t let me. Please Help.

    • Daniel G says:

      Fixed It! you guys wouldn’t believe what the issue was. I had a FOLDER in my application called ‘resources’ so apparently is a reserved word for apple and it will give you that error that really has nothing to do with the actual problem. So I renamed to ‘blah_resources’ and built the app then submitted and tada

      i mean seriously!

      • Lane Friesen says:

        I too have a folder called ‘resources’ and as I said I was unable to do the final upload. I will rename the folder and see if that solves the problem. Thank you.

        • Nizzle says:

          OMG. You have no idea, no clue of how long I have been hacking away at this problem. When I read this, I was just about to fire up a xCode project and see if I could get THAT to run. I’m trying this out as we speak. Thank you so much. There go 3 days I’ll never get back though…

      • Alain says:

        Hi ! Thanks a lot Daniel !
        I had exactly the same problem but with no ‘resources’ folder… After checking every single element of my packaging I figured that my ‘contents’ folder was the issue. Renaming it ‘content’ fixed the thing !
        Good to know.
        Btw any link to an official apple doc about this would be appreciated !

  38. scott says:

    Hi Holly,

    Great write up. I just distributed my app but I’m having an issue with file size. When I submitted to Apple it was around 9MBs. When I just got the approval and went to check it out it was over 21MBs! Any ideas or suggestions as to why it is bloating the app size? Thanks!

    • khuram says:

      hey Scott! Just came accross your problem. I’m having exactly the same issue and my app can only be downloaded after connecting to wifi coz its over 20 mb. Did you manage to find the solution for this problem as I could not find anything on this. Any help will be much appereciated

  39. cole says:

    If i want to do ad hoc distribution do i need to export for release or can i just use the standard release option that generates the ipa file.

    for whatever reason with i export for release all my text in my iOS app has an underline? I am using dynamic text and a css style sheet. any thoughts on that?

    does not happen with the standard release

    thanks
    cp

  40. Feng says:

    I have a question about test the Ad hoc package on tester device. I export the Ad package and it works on my Iphone(jailbreak, ios 4.3.3). But it can’t install on other tester’s device (ios 5). ipad show the error message on itunes ,”The app [app name] was not installed on the IPad, because it is not compatible on this IPad.” IPhone show the error message on the phone “app is failed to install”.

    I have already added the device id to the e provisioning profile.

    • as3coder says:

      Hi Fens, exactly same error I am facing since last month. and not able to find solution. I tried with new provision file, added new devices but no luck. if you ll find any solution let me know also.

      Thanks.

      • Feng says:

        Hi, I just find out the solution. I found the problem is in the AIR app-descriptor XML file. I only leave the device Family and delete the other parts.

        UIDeviceFamily 1 2

        • as3coder says:

          you mean to say inside XML file we have .

          <![CDATA[ UIDeviceFamily
          1 2

          ]]>

          high

          ——————————–
          instead of abobe I you are using only :
          ——————————–

          <![CDATA[ UIDeviceFamily
          1 2
          ]]>

          or anything else ? can you explain in detail ?

          Thanks.

          • as3coder says:

            I tried to put all of my code here but it’s showing some thing strange :-(

          • Feng says:

            Hi, I mean you should check the app descriptor xml file. Make sure you don’t have something weird there. Try to use the basic code there and delete other string, such as “UIRequiredDeviceCapabilities”.

  41. Rafael says:

    Hi, it’s possible put video on flash builder to generate app for ipad?

  42. as3coder says:

    Hi Fens, exactly same error I am facing since last month. and not able to find solution. I tried with new provision file, added new devices but no luck. if you ll find any solution let me know also.

  43. Shaun Bliss says:

    Hi,
    Great tutorial. I now have 3 questions which don’t seem to be covered.

    1. When I sync my app into iTunes by double-clicking, it never shows an Icon. Anyway of getting an icon to show up ??
    The icon is fine on the device.

    2. When I install a fast or standard build debug copy into my device it shows up with a name of “-debug”. Anyway to remove the “-debug” bit from the title when doing test builds ?? Pretty annoying.

    3. Any way to set the “Genre” of the app as used by the iTunes library ??

    Hope others will find the answers to these questions useful too …

    Thanks,

    Shaun

  44. Alessandro says:

    Hi,
    I developped an iPad application that need to display some graphs. To get data for these graphs I have an sql connection with an external Db. There is also a view where I set filters (I have 6 filters, each one linked to the others… so if I change the value set in the first filter (a list), the others (lists) cahnge consequently.

    My problem is that when I call Filters view, the app is extremely slow. I notice that it call a lot of time the function dispatchEvent (UIComponents.as).

    How can I reduce the access to this standard function and improve performances?

    Thank you!!!

  45. Raffi says:

    Hi Holly;

    I think my GPS is not working because I am attempting to use a service that I need to register for, and as you explained above. How can I register my App ID please?

    Thanks,

  46. capt chuck says:

    Holly,

    Thanks for this article and the links. I was able to follow and get a flex ios app onto the IPad for testing (yahoo!).

    Of course there are a few bugs, most of which I have a clue on how to address, but I’m lost in a couple of areas.

    I want to be able to capture key presses on an external bluetooth keyboard. When my app opens and the keyboard is connected, it works as expected when a textarea has focus. It’s not recognizing the keyboard presses when I’m in a second state without a dedicated text input control (I want to use the keyboard to control animation). I tried setting the “needsSoftwareKeyboard” property to true for the containers within this state (also tried setting it true at the application level), but that didn’t seem to do it.

    One thing that may complicate this further is that when the bluetooth keyboard is not available, I don’t want the software keyboard to appear (the animation will be controlled with on screen buttons or gestures).

    my addlisterner call looks like this:

    stage.addEventListener(KeyboardEvent.KEY_UP, keyEvent,false, 1);

    It works fine in the desktop simulation envionment.

    If you have any thoughts on this I would greatly appreciate it.

  47. addie says:

    hi,
    (remote object)remoting sevice not working for my ipad appplication.but it is working fine on android application using flex.

    • oliver merx says:

      on my iPad remoting works fine – I use AMFPHP 2.0 & Flex 4.5.1 (android works too)

      • addie says:

        hi what setting have you done to get it working on ipad.
        i am using .net service to weborb for remoting.

        • oliver merx says:

          no specific stettings – I use these two classes – works fine on Android and on iOS so far.

          ##########################

          package wdtp.Model{

          import wdtp.Model.RemotingConnection;

          import flash.net.Responder;

          import mx.managers.CursorManager;
          import mx.collections.ArrayList;
          import mx.collections.IList;
          import mx.core.FlexGlobals;
          import mx.rpc.events.FaultEvent;
          import mx.rpc.events.ResultEvent;

          import spark.components.DataGrid;

          public class GetServerListData{

          private var gateWay:RemotingConnection;
          private var gateWayTarget:Object;

          public function GetServerListData( gateWayURL:String, params:Array ){

          sendAndLoadData( gateWayURL, params );

          }

          public function sendAndLoadData( gateWayURL:String, sendParamsArr:Array ):void{

          var res:Responder = new Responder( onResult, onFault );

          CursorManager.setBusyCursor();

          gateWay = new RemotingConnection( gateWayURL );
          gateWay.call(

          “routine.”+sendParamsArr[1].toLowerCase()+”.get”+sendParamsArr[2]+”List”,
          sendParamsArr[3].toString(),
          sendParamsArr[4].toString(),
          sendParamsArr[5],
          sendParamsArr[6]
          );

          function onResult( result:* ): void{

          CursorManager.removeAllCursors();

          do something …

          gateWay.close();

          }

          function onFault( fault: String ): void{

          CursorManager.removeAllCursors();

          gateWay.close();

          }
          }
          }
          }

          ##########################

          package wdtp.Model{

          import flash.net.NetConnection;
          import flash.net.ObjectEncoding;

          public class RemotingConnection extends NetConnection{

          public function RemotingConnection( sURL:String ){

          try{

          objectEncoding = ObjectEncoding.AMF3;

          if (sURL){

          connect( sURL );

          }
          }
          catch(e:Error){

          }
          }

          public function AppendToGatewayUrl( s : String ) : void{

          }
          }
          }

          ##########################

  48. Vi da says:

    I am not aware of any AIR-specific dependency, however I know that Apple sometimes requires you to have the latest version of Application Loader in order to actually upload to the store. I have 1.4.1, which works fine for me. I vaguely recall that when iOS 4 was released, you had to update to the latest version to be able to upload to the app store.

  49. George Victor says:

    Hi Holly,

    Is there a tool available in the market which can perform automation testing on the “Mobile” Applications developed with Flex 4.5(Not for Web/Desktop apps)

  50. RaMel says:

    Hi,
    I’ve done all the steps added the IPA to to iTunes but when I sync with my iPod Touch. I get “Test App” failed to install.

  51. I am trying to update an existing app built with xcode on the app store with a new version built with Flash Builder. I keep getting:
    This bundle is invalid. The key UIRequiredDeviceCapabilities in Info.plist may not contain values that would prevent this application from running on devices that were supported by previous version

    Any help would be appreciated.

  52. Rocky says:

    i have some trouble,when i try to install the apps packaged by AIR3.1 on the ipad ios5.0.1.

    I drag the app to my iturns and click the “Synchronous” button.The ipad alert the message install faild.

    (Iturns don’t have any error messages,and i can see the icon when you install some app.)

    These old app can run on this ipad before update to ios5.0.1.

  53. darrin says:

    I built just an hello world app, and when I try to install on my iPad2 I get iTunes Sync ‘helloWorld-debug’ failed to install But that is all get and is totally useless. WHy did it fail? I have redone all my certs 3 times now and getting pissed. There is no reason for this not to freaking work, please help before I give up on Flex mobile

  54. Carl says:

    So I’m a bit confused. What’s the difference between a development build and an ad hoc distribution build if both require the device UDIDs to be in the provisioning profile?

    If I’m building for ad hoc distribution, can I just build the app once, and add devices later without having to rebuild in Flash?

    • Carl says:

      Anyone? Anyone?
      Still would love to know the intended difference
      ‘tween
      A Development Build
      and
      Ad Hoc Distribution

      The app doesn’t seem to get built any differently.
      I still need to compile a new cert into the app for every new UDID.
      I can use either in TestFlight.

      What’s the advantage/difference?

      (tried to format this so it doesn’t overrun the righthand
      margin of this comment section so you can actually read it…
      looks like a CSS update is in order, here)

      • Adam says:

        I have the same question. I find it incomprehensible that I need to re-build the application (.ipa) just because I want to add another device to my adHoc mobile provision. I thought the whole reason that a .mobileprovision file could be updated and then downloaded and pre-installed to iTunes was to serve as up-to-date replacement for the original .mobileprovision that was available at build time. Am I crazy?

        • David says:

          I have just tried to send an .ipa file to colleagues for testing on their devices. Their UDID’s are correctly entered in devices in the provisioning portal online, but they cannot install the .ipa. I don’t know what exactly the difference is between an ad hoc provisioning file and a developer’s, but there is one. I have to regenerate everything, apparently including the certificate.

          People I’ve spoken to who work directly in XCode tell me that you must separately put the provisioning profile on the device; however when we work in FB 4.6 all we do is drag the .ipa file into itunes, and it works. I don’t know if it is dragging the provisioning file along, invisibly, or what.

  55. Shane says:

    ScaleViz – A Theory App for guitarists – developed in AS3 with Flash ;-)

  56. Priyanka says:

    Hi Holly,

    Are there push notification services possible for flex 4.6?

    Priyanka Singh

  57. Random says:

    Not sure if those are real device id’s but you may want to blur them out if they are.

  58. Parks says:

    Is there any guidance on deploying Enterprise Development program apps (since the only options seems to be App Store and Ad Hoc)? I came across a hacky solution requiring XCode, but in a Windows only enterprise, this is not feasible.

    Thanks

  59. heguangm says:

    as a new bie to iphone app dev, wondering where the application data used by all users is stored?

    My app will have data consumed by the application and will be updated occasionally.

    Do we need a speparate server with database to hold such data? Or Apple AppStore provides storage – application specific.

    I assume that user specific data can be stored locally on user’s device (eg iphone) or iClound for users’ all apple decices to access.

  60. binay says:

    @parks….were you able to get the app released for enterprise.

    Hi Holly….any idea where we can find documentation on how to release the mobile app for enterprise. I tried XCode but was not successfull…

    • Parks says:

      @binay

      I have not made any headway yet.

      • binay says:

        @parks

        ok…seems like i got this working. Hopefully I did it right.

        Follow the above steps to build the release candidate of app (iap) using the required enterprise distribution_identity and mobileprovision key.

        An enterprise app created using the above process has to be hosted on local or company owned server. What i did was, I created a folder called “iPhoneApp” on my company’s web host. (Apache server)

        STEP 1: ftp(move) your iap file to this folder

        STEP 2: create a basis html file with the following link…
        Install My APP

        STEP 3: create a plist file…sample below:

        items

        assets

        kind
        software-package
        url
        http://www.example.com/iPhoneApp/example.ipa

        metadata

        bundle-identifier
        com.example.exampleapp
        bundle-version
        1.0.0
        kind
        software
        title
        AppName

        ————–

        Hope this help. If you need addition info let me know!

  61. david says:

    Hi All,

    I have build an application on FLEX.

    Now I need to spread this application but only to an set of thousand of person.

    I do not want to publish this app to every one. I just want to put it on a CD ROM. And let the person click to install that on their device.

    As you understand I won’t be able to know there mobile ID.

    What is the way to publish application for this specific aim.

    Regards

    David

  62. Khuram says:

    I’m having very serious problem. I just published an app to app store . I’m having a big problem app size jumped up to 21 mb from 8 mb once it is uploaded to app store. It can’t be downloaded with out wifi connection and this kills everything. It’s a known bug in flash builder apps.. Has anyone found the solution to this problem? It’s getting really very frustrating…

  63. Carl says:

    @Khuram – I’m not so sure it’s a bug, or that there’s a “solution” or workaround.

    ALL apps, whether they are built with Flash or not, increase in size when uploaded to the App Store due to Apple’s DRM. Flash apps probably increase a bit more than standard apps because an AIR package uses proprietary compression for distribution (that’s the 8MB version). When that package is then uncompressed, wrapped/encrpyted with DRM, and recompressed for use in the App Store (that’s the 21MB version), it’s compression is not as good as AIR’s native version. I’m imagining that, in addition, there’s some extra bloat in Flash apps because the App Store might insist on bundling the AIR player into the distributable.

    In short, I’m not sure you’re going to solve this, other than building your app in something other than Flash. Though, again, you’re still going to see an increase between your testing version and the version that actually goes into the App Store.

    • khuram says:

      I guess then practically Adobe Flash builder is useless for building mobile apps. An empty app is about 8 mb, no graphics no code no nothing. I guess there is a solid reason behind dumping Flex by Adobe. If we have to develop an optimized app then Flash builder is not the solution. I Love Flex but I have to accept now that it is a dead technology. I feel so bad about it.. so thought just share my thoughts :)

      • oliver M says:

        It’s not useless at all: I use Flash builder e.g. for b2b-apps and rapid prototyping. I am ten times faster than my colleages and I am independend.

        • Carl says:

          I do agree with Oliver. Flex is FAR from “useless”. It has it’s definite uses, and it’s definite advantages.

          It probably just isn’t right for a light-weight app intended for over-the-air install/updates.

          But, frankly, there are an awful lot of apps that I have on my iOS device right now that are larger that 20MB and they only seem to be getting larger… so I’d have to believe that Apple will have to revisit that limitation in the future anyway.

        • khuram says:

          It is not useless as I’m a Flex developer for last 8 years and I love it. But it is not the right solution for mobile apps at least.. it is best for desktop apps, web apps but for sure not a solution for mobiles. If you take a look at jquery and phone gap with Dream weaver cs 5.5, it is 10 times faster, easier to develop and smaller in size.

  64. Eric says:

    Hi Holly,

    I’m in the mid stage of iOS development for iPad and I have no experience with Flex before. Is it possible to compile Flex as a library that can be imported into Xcode?

  65. You could certainly see your expertise within the work you write. The sector hopes for even more passionate writers like you who aren’t afraid to mention how they believe. At all times follow your heart.

  66. Neal Drake says:

    Have you found any way to make the package download size from the iStore any smaller than 20mb. I’ve removed all my embeded assets and now call them from my server. This has helped a bit but I’m still sitting at 21.5 megs.
    My .ipa file is 7.8 megs and only 1.2 when I build it for android.
    I know they add a ton of junk into the build for the iStore but it’s a bit out of hand.
    Thanks for any advice you can give me.

    • khuram says:

      I could not find any way to downsize it. This bug is filed on adobe’s bug list too but as Flex is donated to Apache, I don’t think there will be any immediate solution to this. I am having the same problem and I tried everything to downsize the app, but I couldnt.. So I’m rebuilding the app in Jquery mobile and phoneGap. Do take a look at these two coz I have managed to build the same app with in one week with these two. So simple to build and deploy as compare to flex and it is way more reliable and works 10 times faster.Will be deploying it soon. I know we all love FLEX but I’m just trying to adopt to the best solution too. Flex is still best when it comes to build desktop apps or web apps for desktop computers but not for mobile and tablets at all.

  67. Spencer says:

    I built a fairly simple app using Flash Builder 4.6 and have successfully deployed it to the Android Market (after testing on my own Android device). I have also taken that same app and compiled it for iOS and tested it on my own iPad.

    I have then done the release build with the “Final Release for App Store Distribution” option in the release build wizard. I have all the correct provisioning certificates in place and compiled the application to a .ipa file.

    At this point, using a MAC, I have run the Application Loader utility to upload my application to the itunesConnect portal to get it in the appstore. I’ve already gone through the steps of entering the metadata, price scheme, and screenshots in the itunes connect portal, and just need to upload it for review.

    When I upload the .ipa file into the application loader, it gives me the following error:

    “iPhone/iPod Touch: application executable contains unsupported architecture(s): arm”

    Anyone have any idea what this means and how I can fix it? Any help is greatly appreciated!

    Thanks in advance!

    • Eric says:

      I am having this same problem. I have tried everything everyone says to try but it doesn’t seem to help. Did you get anything to work yet?

  68. Marvin says:

    Hi Holly,

    I used Windows to generate certificate and .p12 but when I tried to install it using iTunes sync it always say “AppName failed to install” am I missing something?

    Thanks

    • Spencer says:

      I have seen that error multiple times and it has always been caused by the ID in my xml descriptor not being the same as what I put in the provisioning portal when creating the provisioning profile.

      • Marvin says:

        You mean if my Bundle ID is “com.mobile.testMobile” my App ID in the descriptor should be “com.mobile.testMobile”?
        Thanks

        • Spencer says:

          Correct. They must match exactly. Also make sure you are installing it on the device you setup in your provisioning profile as well. (See device id steps from the main blog post above.)

          • Marvin says:

            My App ID and Bundle ID is already match. I am installing it on the device that I used in my provisioning but still no luck. Did I missed something?

  69. erik says:

    using 4.6 and following this directions to the T I am unable to get the p12 file from OSX Lion.

    I’ve tried going through all the steps multiple times, restarting, etc and it does not seem to be generating the key that I can use to generate the p12.

    When I accept the cets, i do see it pop up in the keychain menu, but the p12 export option is gray. I tried going to keys but dont see my key in there.

    any thought?

  70. Wenhu wang says:

    What a great blog! |It’s pretty lucky to find your webblog!|So great!|Nice post|nice to come across your blog||||||

  71. zanuka says:

    Works fine for me. You just need to really follow these steps exactly to generate the p12.

    http://help.adobe.com/en_US/as3/iphone/WS144092a96ffef7cc-371badff126abc17b1f-7fff.html

  72. ChandrashekarReddy Muthumula says:

    Hi,

    We developed a iPhone appliaction using flash builder. We used the following resolution icons.

    assets/images/x_29px.png
    assets/images/x_57px.png
    assets/images/x_58px.png
    assets/images/x_72px.png
    assets/images/x_114px.png
    assets/images/x_128px.png
    assets/images/x_512x512.png

    The icon is showing properly in the iTunes and also icon is displaying in the device after the installation. but the issue is while installing the app into the device it is showing blank icon.

    The app is specific to iPhone devices only. i.e.,

    <![CDATA[
    UIDeviceFamily

    1

    ]]>

    high

    Please help me here how to display the icon while installing the iPhone specific application.

    We have posted it in Adobe forums also please find the URL below:

    http://forums.adobe.com/message/4595599#4595599

    Thanks in advance
    ChandrashekarReddy Muthumula

  73. Yves Bastos says:

    Holly,
    thanks for this tutorial. Helped a not.
    However, I’m not being successful in obtaining internet access on my iOS app. I’ve already altered some lines on the XML generated file:

    true
    UIRequiresPersistentWiFi
    YES

    It’s still without connection, although. Do I have to add another line of code to give the app network permission?
    Thanks!

  74. Erin says:

    Check out the CLIPCLOCK mobile app. The new social hub to discover and share the best video moments with your favorites!!!
    Here is the link: http://www.clipclock.com/download/4112

  75. Erin says:

    CLIPCLOCK mobile app. is the best social hub with its new features. Lets discover and share the best video moments!!! Check it out… Here is the link: http://www.clipclock.com/download/5057

  76. Erin says:

    Check out the CLIPCLOCK mobile app. The new social hub to discover and share the best video moments with your favorites!!!
    Here is the link: http://www.clipclock.com/download/4751

  77. Erin Wilson says:

    Check out the CLIPCLOCK mobile app. The new social hub to discover and share the best video moments with your favorites!!! Here’s the link: http://www.clipclock.com/download/5493

  78. Tahir Alvi says:

    Awesome POst, thanks a lot for providing step by step information.

  79. Sami says:

    Hi, I think your blog might be having browser
    compatibility issues. When I look at your website in Ie,
    it looks fine but when opening in Internet Explorer, it has some overlapping.
    I just wanted to give you a quick heads up! Other then that, awesome blog!

  80. Further to my previous post regarding an app that stops at 90% and says ‘Unable to Download Application’ message after 90% downloaded… I’ve found a discrepancy between the provisioning profile, which has ‘get-task-allow’ set to false, and the app itself, which has ‘get-task-allow’ set to true.**

    Wondering if you would have any idea whether this could be the source of the install problem, and if so, how to change this setting in the app. (from within Flash if possible!)

    ** You can find this out with the following command in terminal, where myapp.app is the app within the Payload folder inside the ipa:
    codesign –entitlements=- -d -vvvv ***myapp.app***

    • It’s okay, in the end I discovered that I was using the keychain related to my developer provisioning profile, which must be why get-task-allow was set to true. I’ve used the distribution provisioning profile and now the app installs!

Leave a Reply