1 2 Previous Next 59 Replies Latest reply: Jul 29, 2014 6:12 AM by tromatom RSS

    Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)

    DaveGallant Community Member

      My company is developing a game for the iPhone and iPad devices using Flash cs5.5 and Air3.0

       

      The client requires that certain features be supported - such things like GameCenter, Rating system, etc... none of which is currently supported by flash for the iOS.

      However, they did provide us with a bunch of xCode sample files on how they want things to work.

       

      My idea was to bridge the gap in functionality by creating a native exention that utilized the xcode source that was given to me, thus giving me the functionality that is required.

       

      But first, I need to actually CREATE a native extension, even just a basic echo/hello world... I have followed all the steps from various guides and tutorials and I have managed to create an ipa and put it on my iPad2 to test, but when the program starts up, nothing happens, I am left with a black screen. When I comment out the lines of code that intialize the extension, it fires up just fine.

      (and yes, I even tried to put things in try blocks in case there was an error - no luck)

       

      So I am hoping that someone can read through the process of what I am doing below and point out what I am doing wrong, or what I am missing.

       

       

      What I am using:

       

      Mac Mini running OSX 10.7.2 - this is used to run xCode 4.1 build 4B110

      PC - Windows 7 home 64bit - Running Flash CS5.5 (version 11.5.1.3469) with the AIR 3.0 SDK inside it. I also have the AIR 3.0 sdk in a seperate folder for command line running. (This is my primary developement platform)

      The PC does have flash builder installed, but I have never really used it, nor do I know how to use it... everything that has been built to date has been done using Flash CS5.5

       

       

      So, this is what I have done.

       

       

       

      The first thing I do is create a .a static library on the mac.

       

      I open xcode and create a new project.

      • Select iOS Framework and Library, then select "Cocoa touch Static Library"
      • Give it a name, in this case "EchoExtension" and put it in a folder.
      • I then delete the EchoExtension.h file as all the samples I have seen to date don't use it.
      • I then add "FlashRuntimeExtension.h" to the project from the AIR3.0 sdk frameworks folder on my PC
      • I then delete everything in my .m file and, following several different examples and tutorials, type up the following code:

       

       

      //

      //  EchoExtension.m

      //  EchoExtension

      //

       

       

      #include "FlashRuntimeExtensions.h"

       

      FREObject echo(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]) {

       

          return argv[0];

       

      }

       

      //----------- Extention intializer and finalizer ----------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------ -

       

       

      // A native context instance is created

      void ContextInitializer(void* extData, const uint8_t* ctxType, FREContext ctx, uint32_t* numFunctionsToTest, const FRENamedFunction** functionsToSet) {

       

          // setup the number of functions in this extention

       

          // for easy reference, set the number of function that this extention will use.

          int FunctionCount = 1;

       

          // set the pointer reference to the number of function this extention will use.

          *numFunctionsToTest = FunctionCount;

       

          // create an array to store all the functions we will use.

          FRENamedFunction* func = (FRENamedFunction*)malloc(sizeof(FRENamedFunction)*FunctionCount);

       

          // create an array entry for each function

       

          func[0].name = (const uint8_t*)"echo"; // the name of the function

          func[0].functionData = NULL;                    // the data type

          func[0].function = &echo;             // reference to the actual function

       

       

          // save the array in a pointer.

          *functionsToSet = func;

      }

       

      // A native context instance is disposed

      void ContextFinalizer(FREContext ctx) {

          return;

      }

       

      // Initialization function of each extension

      void ExtInitializer(void** extDataToSet, FREContextInitializer* ctxInitializerToSet, FREContextFinalizer* ctxFinalizerToSet) {

          *extDataToSet = NULL;

          *ctxInitializerToSet = &ContextInitializer;

          *ctxFinalizerToSet = &ContextFinalizer;

      }

       

      // Called when extension is unloaded

      void ExtFinalizer(void* extData) {

          return;

      }

       

      • I then go "Product", "Build" and it creates libEchoExtension.a
      • I copy this .a file over to my PC.

       

       

       

       

       

      I am now finish with that god foresaken mac (*shudders*)
      Back on my PC, I create a folder for my test project. For all intents an purposes, let's call this "D:\src\EchoExtension" I then create 2 folders, one called "lib" and one called "app". Lib is where I will create the actionscript source for my extension.

       

      • In my lib folder, I create a new fla in flash cs5.5 called "EchoExtension.fla"
      • I create in my lib folder, the following:
        • com\extensions\EchoExtension\EchoExtension.as
        • a folder called "Build" in which I place my libEchoExtension.a file.
      • in my EchoExtension.as file, I place the following code:

       

      package com.extensions.EchoExtension

      {

          import flash.events.EventDispatcher;

          import flash.events.IEventDispatcher;

          import flash.external.ExtensionContext;

       

          public class EchoExtension extends EventDispatcher

          {

              protected var _extensionContext:ExtensionContext;

       

              /**

               * Constructor.

               */

              public function EchoExtension()

              {

                  super();

                  // Initialize extension.

                  _extensionContext = ExtensionContext.createExtensionContext( "com.extensions.EchoExtension", "main" );

              }

       

              public function echo(Prompt:String):String

              {

                  return _extensionContext.call( "echo" ) as String;

              }

       

          }

      }

       

      • In my main fla, on the first layer of the time line, I simply put the following code to make sure that the as file get's included when I publish the swc.

       

      import com.extensions.EchoExtension.EchoExtension;

       

      var ext:EchoExtension = new EchoExtension();

       

      stop();

       

       

      • I then open up my fla's publish settings, turn off the swf - which I don't need, and check the swc and make sure that it outputs into my build folder.  "./Build/EchoExtension.swc"
      • I also set the player to Air 3.0 (which I can do since I have successfully integrated AIR 3.0 along side my AIR 2.6 and can build both without any problems)
      • I then publish the swc. So far, so good. No problems.
      • I then make a copy of the swc and rename it to EchoExtension.swc.zip, at which point I extract the library.swf file from it and also place it in my build folder.
      • I then create extension.xml in by build folder which contains the following code:

       

      <extension xmlns="http://ns.adobe.com/air/extension/2.5">

        <id>com.extensions.EchoExtension</id>

        <versionNumber>1</versionNumber>

        <platforms>

          <platform name="iPhone-ARM">

              <applicationDeployment>

                  <nativeLibrary>libEchoExtension.a</nativeLibrary>

                  <initializer>ExtInitializer</initializer>

                  <finalizer>ExtFinalizer</finalizer>

              </applicationDeployment>

          </platform>  

        </platforms>

      </extension>

       

      • Now, at this point I am a little wary, because I am building for the iPad2... the platform is iPhone... I thought that may be a problem and at one point I tested the same build on the iPhone4 and had the same results. I have also tested it using the platform name of iPad-ARM and got the same results... So I don't think that is the problem, but I am unsure.
      • Now, to make things easier, I created a batch file called "buildane.bat" in my build folder. This is what I will use to create my .ane file and it contains the following command line:

       

      D:\SDKs\AirSDK30\bin\adt -package -target ane EchoExtension.ane extension.xml -swc EchoExtension.swc -platform iPhone-ARM library.swf libEchoExtension.a

       

      • I then open a command prompt and run buildane.bat and poof. My ane is created. My build folder has the following files in it now:
          • buildane.bat
          • EchoExtension.ane
          • EchoExtension.swc
          • EchoExtension.swc.zip
          • extension.xml
          • libEchoExtension.a
          • library.swf

       

       

       

       

      Now that I have my swc, ane, and all that, it's time to create my sample application that will be used to test my new extension.

       

      • I go back to my D:\src\EchoExtension folder and go into the app folder I created ealier.
      • I then create a new flash project called EchoExtensionTester.fla
      • I open the action script settings, library paths, and add the swc that I created in my D:\src\EchoExtension\lib\build folder to my project.
      • On my stage, I create an input text field called txtInput, a dynamic text field called txtEcho, and a couple of buttons called btnClear, btnRuntime, and btnEcho
      • I open up the first layer in the time line and place the following code:

       

      // basic imports.

      import flash.desktop.NativeApplication;

      import flash.events.MouseEvent;

      import flash.text.TextField;

       

      // import the extension from our swc.

      import com.extensions.EchoExtension.EchoExtension;

       

      // set our input text field to need the softkeyboard

      txtInput.needsSoftKeyboard = true;

       

      // add the event handlers to our buttons.

      btnEcho.addEventListener(MouseEvent.CLICK, btnEcho_Click);

      btnClear.addEventListener(MouseEvent.CLICK, btnClear_Click);

      btnRunTime.addEventListener(MouseEvent.CLICK, btnRunTime_Click);

       

      // create our extension variable.

      var ext:EchoExtension;

       

      try

      {

          // initialize our echo extension.

          ext = new EchoExtension();

      } catch (e:Error) {

          txtEcho.text = "Error trying to create new EchoExtension:\n\n" + e;

      }

       

       

      stop();

       

      // clear the echo text field

      function btnClear_Click(e:MouseEvent):void

      {

          txtEcho.text = "";

      }

       

      // just for testing, put the current version of air runtime into our text field so we can make sure we are running air 3.0

      function btnRunTime_Click(e:MouseEvent):void

      {

          txtEcho.text += "\nRuntime version = " + NativeApplication.nativeApplication.runtimeVersion;

      }

       

      // call the extension, passing it whatever is in the input text field and have it return it and place it in our echo text field

      function btnEcho_Click(e:MouseEvent):void

      {

          txtEcho.text += "\n";

          try

          {

              txtEcho.text += ext.echo(txtInput.text);

          } catch (e:Error) {

              txtEcho.text += "\nError calling ext.echo: " + e;

          }

      }

       

      • I then save the project, Open the Air for iOS settings and set the following:  (but yes, I know... I am going to have to use adt to do the build, but I need to create the swf first)
        • Output file: EchoExtensionTester.ipa
        • Appname: EchoExtensionTester
        • Version 1.0
        • Landscape
        • Fullscreen On
        • Auto orientation is off
        • rendering GPU
        • device: iPad and iPhone
        • Res: High
        • Deployement: I use my certificate and provisionging profile that I use for my Primary project (which work) and set for device testing.
      • I close the window and save again... but before I publish, I open  newly created "EchoExtensionTester-app.xml" that is in my app folder.
      • I add <extensions>    <extensionID>com.extensions.EchoExtension</extensionID>  </extensions> to the xml file so now it looks like this:

       

      <?xml version="1.0" encoding="UTF-8" standalone="no" ?>

      <application xmlns="http://ns.adobe.com/air/application/3.0">

        <extensions>

          <extensionID>com.extensions.EchoExtension</extensionID>

        </extensions>

        <id>EchoExtensionTester</id>

        <versionNumber>1.0</versionNumber>

        <filename>EchoExtensionTester</filename>

        <description/>

       

        <!-- To localize the description, use the following format for the description element.<description><text xml:lang="en">English App description goes here</text><text xml:lang="fr">French App description goes here</text><text xml:lang="ja">Japanese App description goes here</text></description>-->

       

        <name>EchoExtensionTester</name>

       

        <!-- To localize the name, use the following format for the name element.<name><text xml:lang="en">English App name goes here</text><text xml:lang="fr">French App name goes here</text><text xml:lang="ja">Japanese App name goes here</text></name>-->

       

        <copyright/>

        <initialWindow>

          <content>EchoExtensionTester.swf</content>

          <systemChrome>standard</systemChrome>

          <transparent>false</transparent>

          <visible>true</visible>

          <fullScreen>true</fullScreen>

          <aspectRatio>landscape</aspectRatio>

          <renderMode>gpu</renderMode>

          <maximizable>true</maximizable>

          <minimizable>true</minimizable>

          <resizable>true</resizable>

          <autoOrients>false</autoOrients>

        </initialWindow>

        <icon/>

        <customUpdateUI>false</customUpdateUI>

        <allowBrowserInvocation>false</allowBrowserInvocation>

       

        <iPhone>

          <InfoAdditions>

            <![CDATA[<key>UIDeviceFamily</key><array><string>1</string><string>2</string></array>]]>

          </InfoAdditions>

          <requestedDisplayResolution>high</requestedDisplayResolution>

        </iPhone>

      </application>

       

       

      • I save the changes to the xml and go back to flash. I then publish.
      • The swf is created as it should be, but then I get the error message:

       

      Error creating files.

       

      An implmentation for native extension 'com.extensions.EchoExtension' required by the application was not found for the target platform.

       

      • Now, while this is a pain in the rear, I new this was going to happen because in my reading of tutorials and samples, they all said that you must use adt to build the ipa... but that's fine... all I wanted anyway was the swf, which I now have in my app folder.
      • I close down flash as I don't need it anymore and I create a new batch file: (note: I change the names of the cert, provision profile, and password for this post)

       

      cls

       

      "D:\SDKs\AirSDK30\bin\adt" -package -target ipa-ad-hoc -storetype pkcs12 -keystore "D:\src\mycert.p12" -storepass MYPASSWORD -provisioning-profile "D:\src\myprovfile.mobileprovision" "EchoExtensionTester.ipa" "EchoExtensionTester-app.xml" "EchoExtensionTester.swf" -extdir ../lib/Build

       

      set /p dummy=

       

      echo done

       

      • I then open a command window in my app folder and run build.bat...
      • I wait about 2 minutes....
      • ...
      • ...
      • YAY! My ipa file has been created with no errors reported so far.... Time to copy this bad boy to the iPad and see what happens.
      • I open iTunes, drag "EchoExtensionTester.ipa" over to the Apps, then sync my device....
      • ...
      • YAY! iTunes has successfully installed the ipa on the device... and there is by bright and shiney blank icon for Echo Extension Tester...
      • I open the app.... and.....
      • nothing.
      • I wait
      • still nothing.
      • I go to the bathroom.
      • I get back... still nothing... just a black screen.
      • I press the iPad home button, the app minimized, I restore it... nothing... black screen.

       

       

      hrm. Time to do a little trial and error to see if I can figure out where the break down is.

       

       

      • As a test, I open my fla and I comment out the following lines:
        • ext = new EchoExtension();
        • txtEcho.text += ext.echo(txtInput.text);
      • I then rebuild the swf... get the same error (don't care)... I then rebuild the ipa using the batch file.... and re-install it on the device when it's done.
      • The exact same thing....
      • I open the xml file... and remove the <extensionID>com.extensions.EchoExtension</extensionID> line, save and re-run the batch file again... wait for the ipa to finish, and run it on the device.
      • I fire up the program on the iPad and it launches perfectly... except for the commented line of code to actually create and call the extension, everything works as it should. The runtime on the device is reporting as 3.0.0.4080
      • As a test, I open the .fla back up and uncomment the 2 lines I commented out above... keeping the extensionID out of the xml file, I re-publish the ipa.... of course, this time, it actually creates the ipa from flash because the extension id is not in the xml.
      • I put the ipa file with the extension code in place on the ipad... Fire it up and put some text into the txtInput and press the echo button. I get the following error:
        • Error calling ext.echo: TypeError: Error #1009
      • I suspect that is because I failed into include the extension in the descriptor... but when I build it with the extensionid in the xml, I just get a black screen. I am 99% sure that the extension context in the ext object is null (because that is what happens when I run it in flash debug without the extension lines in the xml)

       

       

       

      And here I am stuck.

      Can anyone tell me what I am doing wrong or what I have forgotten to do?

       

      Thanks.

        • 1. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
          Joe ... Ward Community Member

          AIR 3 links against iOS 4.0. What is your native library set to? (I didn't see anything else suspicious in what you are doing, but I haven't built an iOS extension myself, yet.)

          • 2. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
            DaveGallant Community Member

            I am not 100% sure what you mean by "what is your native library set to" - but the iOS deployment target is set to 4.3

            • 3. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
              Joe ... Ward Community Member

              I assumed that there would be some link options somewhere. After looking at XCode a bit, this seems to be set by the Base SDK setting. However, I only get an option for iOS 4.3 and I don't see a way to get the iOS 4 SDK from Apple (?). .

              • 4. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                Colin Holgate ACP/MVPs

                Xcode 4.2 only has SDKs for iOS 4.3 and 5.0. The older Xcode has SDKs for 3.0 - 4.3. That Xcode isn't compatible with Lion.

                 

                The version numbers are a bit confusing, so I'm not fully sure what Xcode you will get at this link, but it ought to be able to make things for iOS 4:

                 

                http://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20792

                 

                Make sure to rename or duplicate your current Developer folder, so that this install doesn't overwrite the newer Xcode (in case you should ever need it).

                 

                It's funny in a way if AIR does require 4.0, because most devices that are using something earlier than 4.3 are also the same devices that cannot run AIR.

                • 5. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                  DaveGallant Community Member

                  so the answer is to recompile the static library targetting an ios version earlier than 4.3?

                   

                  hrm... that is odd... I mean, I am targetting ios mobile devices, specifically iphone 3,4 and iPad 1 and 2...

                   

                  What should I be targetting to cover those?

                  • 6. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                    Joe ... Ward Community Member

                    Well, I'm not sure that this is the issue. It is the case that you can only link to iOS 4 libraries. I'm asking around here, but I haven't gotten an answer yet.

                     

                    [Edit] It looks like I was wrong. While you can only use those frameworks that were originally available in iOS 4.0, using iOS 4.3 as the base SDK should be fine. CoreMidi is the only iOS 4.3 framework that can't be used. Sorry for introducing a red herring into the mix.

                     

                    Message was edited by: Joe ... Ward

                    • 7. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                      DaveGallant Community Member

                      Ok, new info.

                       

                      If I leave in the extension ID lines in the xml, but comment out the lines of code that use them in the swf, and build... when I laugh the program it fires up normally... but the buttons don't do anything as there are no extensions present.

                       

                      I still have no idea why I am getting a black screen when using native extensions... I even tried to use an ane from the net from other tutorials and I can't get them to work either... same thing...

                      • 8. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                        DaveGallant Community Member

                        I have also tried to use .ane that have been pre-built by others from here: http://www.adobe.com/devnet/air/native-extensions-for-air.html

                         

                        on both the iPhone and the iPad2 I just get a black screen.

                        • 9. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                          DaveGallant Community Member

                          As another test, I downloaded the Air3.0 sdk for mac onto the mac directly.... copied all my source files over to it.

                           

                          Then, using terminal and adt, I rebuilt the ane directly on the mac... I then used adt to directly rebuild the ipa file aswell (talk about an annoying and difficult process)

                          anyway, once I had successfully build an IPA on the mac solely, I put the newly minted "made in mac" ipa on my ipad and fired it up... exact same results... black screen.

                          the app will minimize when I press the home button, and restore to a black screen when I restore it, but the interface I built does not appear so long as I am trying to use an extension.

                           

                          I have also tested iphone only, ipad only, and iphone/ipad combinations... no change.

                           

                          I have also made sure that my .a library is build using a release (in xcode, I select product, build, then product/build for/build for archiving which created the release build folder - so I am using that release build .a file in my ane.

                          This too, had no change on anything.

                           

                          I have also tried testing with gpu mode and cpu mode as I found another thread that said they were getting a black screen with gpu mode... that too, made no difference.

                           

                           

                          I am completely out of ideas of things to try.... I don't know what I am doing wrong.

                           

                           

                          (the iPad is version 4.3.5 (8L1) if that makes any difference)

                          • 10. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                            Joe ... Ward Community Member

                            Dave,

                             

                            If you comment out the extension code in your app and display the value of NativeApplication.nativeApplication.runtimeVersion, what do you see on the device? Does it indicate AIR 3, or something earlier? Nevermind, I see you already did that.

                             

                            It (still) sounds like the problem isn't in how you are creating the ANE, but rather on the application compiling or packaging side.

                             

                            Another thing to check is that the EchoExtension.swc is externally linked (but that is the default, so it probably is unless you changed it).

                             

                            -Joe

                            • 11. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                              DaveGallant Community Member

                              ok... I did have the swc set to merged as I usually always set them to merged, so i changed it to RSL and rebuilt it on the pc... no change...

                               

                              The only thing I can think of at this time is maybe it is because I am building the swf using flash instead of the flex sdk.... problem is I have no idea how to use flex or build the swf that I created...

                              • 12. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                Joe ... Ward Community Member

                                It has to be external, otherwise the runtime looks for the code in the wrong place.

                                 

                                Have you been able to connect to the debugger when you run the app? That should reveal any errors occuring at initialization.

                                • 13. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                  DaveGallant Community Member

                                  I have been trying to get the remote debugging working with my flash and ipad2... but I can't seem to figure it out. I looked at several tutorials, but the ipad build just doesn't want to seem to connect to the flash remote debugger.

                                   

                                  Anyway... here is a little more information.

                                   

                                  I moved the initialization of the extension from the  start of the application to the button event itself. Now, the application will start up exactly as it's supposed to, but when I press the button that creates and initalizes the extension and does the echo call, the application crashes.

                                   

                                  Here is the new code:

                                   

                                  // basic imports.

                                  import flash.desktop.NativeApplication;

                                  import flash.events.MouseEvent;

                                  import flash.text.TextField;

                                   

                                  // import the extension from our swc.

                                  import com.extensions.EchoExtension.EchoExtension;   

                                   

                                  // set our input text field to need the softkeyboard

                                  txtInput.needsSoftKeyboard = true;

                                   

                                  // add the event handlers to our buttons.

                                  btnEcho.addEventListener(MouseEvent.CLICK, btnEcho_Click);

                                  btnClear.addEventListener(MouseEvent.CLICK, btnClear_Click);

                                  btnRunTime.addEventListener(MouseEvent.CLICK, btnRunTime_Click);

                                   

                                  txtEcho.text += "Initialization complete.\n";

                                   

                                  stop();

                                   

                                  // clear the echo text field

                                  function btnClear_Click(e:MouseEvent):void

                                  {

                                      txtEcho.text = "";

                                  }

                                   

                                  // just for testing, put the current version of air runtime into our text field so we can make sure we are running air 3.0

                                  function btnRunTime_Click(e:MouseEvent):void

                                  {

                                      txtEcho.text += "Runtime version = " + NativeApplication.nativeApplication.runtimeVersion +"\n" ;

                                  }

                                   

                                  // call the extension, passing it whatever is in the input text field and have it return it and place it in our echo text field

                                  function btnEcho_Click(e:MouseEvent):void

                                  {

                                     

                                  // create our extension variable.

                                      try

                                      {

                                          var ext:EchoExtension = new EchoExtension();

                                          txtEcho.text += ext.echo(txtInput.text) +"\n" ;

                                          ext = null;

                                             

                                      } catch (err:Error) {

                                          txtEcho.text += "Error: " + err.message +"\n" ;

                                      }

                                  }

                                   

                                   

                                  Now, program crashes are an entirely different animal because the ipad creates a crash log! YAY!
                                  this is what the crash log contains:

                                   

                                   

                                   

                                  Incident Identifier: 4BF67A2C-FD36-495D-BB56-B3DCA4772EB8

                                  CrashReporter Key:   7a4dd56d46eb23a7701ad55245de2bca11c48b32

                                  Hardware Model:      iPad2,2

                                  Process:         EchoExtensionTester [9272]

                                  Path:            /var/mobile/Applications/90B3B31D-F516-4094-BE3B-88E1324419EC/EchoExtensionTester.app/Ech oExtensionTester

                                  Identifier:      EchoExtensionTester

                                  Version:         ??? (???)

                                  Code Type:       ARM (Native)

                                  Parent Process:  launchd [1]

                                   

                                  Date/Time:       2011-10-28 14:17:48.145 -0300

                                  OS Version:      iPhone OS 4.3.5 (8L1)

                                  Report Version:  104

                                   

                                  Exception Type:  EXC_BAD_ACCESS (SIGBUS)

                                  Exception Codes: KERN_PROTECTION_FAILURE at 0x00000000

                                  Crashed Thread:  0

                                   

                                  Thread 0 name:  Dispatch queue: com.apple.main-thread

                                  Thread 0 Crashed:

                                  0   EchoExtensionTester               0x00813aac 0x1000 + 8465068

                                  1   EchoExtensionTester               0x005f88ec 0x1000 + 6256876

                                  2   EchoExtensionTester               0x00372ba4 0x1000 + 3611556

                                  3   EchoExtensionTester               0x006dd7c8 0x1000 + 7194568

                                  4   EchoExtensionTester               0x006dd25c 0x1000 + 7193180

                                  5   EchoExtensionTester               0x006de304 0x1000 + 7197444

                                  6   EchoExtensionTester               0x006dc750 0x1000 + 7190352

                                  7   EchoExtensionTester               0x006730cc 0x1000 + 6758604

                                  8   EchoExtensionTester               0x006dd0ac 0x1000 + 7192748

                                  9   EchoExtensionTester               0x006dc750 0x1000 + 7190352

                                  10  EchoExtensionTester               0x006730cc 0x1000 + 6758604

                                  11  EchoExtensionTester               0x006dd0ac 0x1000 + 7192748

                                  12  EchoExtensionTester               0x006dc750 0x1000 + 7190352

                                  13  EchoExtensionTester               0x006730cc 0x1000 + 6758604

                                  14  EchoExtensionTester               0x006dd0ac 0x1000 + 7192748

                                  15  EchoExtensionTester               0x0032fc90 0x1000 + 3337360

                                  16  EchoExtensionTester               0x00329e1c 0x1000 + 3313180

                                  17  EchoExtensionTester               0x0032171c 0x1000 + 3278620

                                  18  EchoExtensionTester               0x0032179c 0x1000 + 3278748

                                  19  EchoExtensionTester               0x0032ae00 0x1000 + 3317248

                                  20  EchoExtensionTester               0x00137328 0x1000 + 1270568

                                  21  EchoExtensionTester               0x004f9a5c 0x1000 + 5212764

                                  22  EchoExtensionTester               0x00035adc 0x1000 + 215772

                                  23  EchoExtensionTester               0x002f6824 0x1000 + 3102756

                                  24  EchoExtensionTester               0x002f7f18 0x1000 + 3108632

                                  25  UIKit                             0x35ef9bee 0x35ede000 + 113646

                                  26  UIKit                             0x35ef9568 0x35ede000 + 111976

                                  27  UIKit                             0x35ee230c 0x35ede000 + 17164

                                  28  UIKit                             0x35ee1c4c 0x35ede000 + 15436

                                  29  GraphicsServices                  0x321e9e70 0x321e5000 + 20080

                                  30  CoreFoundation                    0x316f3a90 0x3167e000 + 481936

                                  31  CoreFoundation                    0x316f5838 0x3167e000 + 489528

                                  32  CoreFoundation                    0x316f6606 0x3167e000 + 493062

                                  33  CoreFoundation                    0x31686ebc 0x3167e000 + 36540

                                  34  CoreFoundation                    0x31686dc4 0x3167e000 + 36292

                                  35  GraphicsServices                  0x321e9418 0x321e5000 + 17432

                                  36  GraphicsServices                  0x321e94c4 0x321e5000 + 17604

                                  37  UIKit                             0x35f0cd62 0x35ede000 + 191842

                                  38  UIKit                             0x35f0a800 0x35ede000 + 182272

                                  39  EchoExtensionTester               0x001819e4 0x1000 + 1575396

                                  40  EchoExtensionTester               0x00813a6c 0x1000 + 8465004

                                   

                                  Thread 1:

                                  0   libsystem_kernel.dylib            0x35afe3ec 0x35aec000 + 74732

                                  1   libsystem_c.dylib                 0x31bf06d8 0x31bbc000 + 214744

                                  2   libsystem_c.dylib                 0x31bf0bbc 0x31bbc000 + 215996

                                   

                                  Thread 2 name:  Dispatch queue: com.apple.libdispatch-manager

                                  Thread 2:

                                  0   libsystem_kernel.dylib            0x35afefbc 0x35aec000 + 77756

                                  1   libdispatch.dylib                 0x31660ed4 0x31660000 + 3796

                                  2   libdispatch.dylib                 0x31661f3a 0x31660000 + 7994

                                  3   libdispatch.dylib                 0x316614ec 0x31660000 + 5356

                                  4   libsystem_c.dylib                 0x31bf058a 0x31bbc000 + 214410

                                  5   libsystem_c.dylib                 0x31bf0bbc 0x31bbc000 + 215996

                                   

                                  Thread 3 name:  WebThread

                                  Thread 3:

                                  0   libsystem_kernel.dylib            0x35afbc00 0x35aec000 + 64512

                                  1   libsystem_kernel.dylib            0x35afb758 0x35aec000 + 63320

                                  2   CoreFoundation                    0x316f42b8 0x3167e000 + 484024

                                  3   CoreFoundation                    0x316f6562 0x3167e000 + 492898

                                  4   CoreFoundation                    0x31686ebc 0x3167e000 + 36540

                                  5   CoreFoundation                    0x31686dc4 0x3167e000 + 36292

                                  6   WebCore                           0x3248e27e 0x32488000 + 25214

                                  7   libsystem_c.dylib                 0x31bef30a 0x31bbc000 + 209674

                                  8   libsystem_c.dylib                 0x31bf0bb4 0x31bbc000 + 215988

                                   

                                  Thread 4:

                                  0   libsystem_kernel.dylib            0x35afdd18 0x35aec000 + 72984

                                  1   libsystem_c.dylib                 0x31c16860 0x31bbc000 + 370784

                                  2   libsystem_c.dylib                 0x31bbdeb2 0x31bbc000 + 7858

                                  3   EchoExtensionTester               0x004aa090 0x1000 + 4886672

                                  4   EchoExtensionTester               0x002a0b54 0x1000 + 2751316

                                  5   EchoExtensionTester               0x004aa2fc 0x1000 + 4887292

                                  6   EchoExtensionTester               0x004aa5e8 0x1000 + 4888040

                                  7   EchoExtensionTester               0x004aa748 0x1000 + 4888392

                                  8   libsystem_c.dylib                 0x31bef30a 0x31bbc000 + 209674

                                  9   libsystem_c.dylib                 0x31bf0bb4 0x31bbc000 + 215988

                                   

                                  Thread 5:

                                  0   libsystem_kernel.dylib            0x35afdd18 0x35aec000 + 72984

                                  1   libsystem_c.dylib                 0x31c16860 0x31bbc000 + 370784

                                  2   libsystem_c.dylib                 0x31bbdeb2 0x31bbc000 + 7858

                                  3   EchoExtensionTester               0x004aa090 0x1000 + 4886672

                                  4   EchoExtensionTester               0x002a0b54 0x1000 + 2751316

                                  5   EchoExtensionTester               0x004aa2fc 0x1000 + 4887292

                                  6   EchoExtensionTester               0x004aa5e8 0x1000 + 4888040

                                  7   EchoExtensionTester               0x004aa748 0x1000 + 4888392

                                  8   libsystem_c.dylib                 0x31bef30a 0x31bbc000 + 209674

                                  9   libsystem_c.dylib                 0x31bf0bb4 0x31bbc000 + 215988

                                   

                                  Thread 6:

                                  0   libsystem_kernel.dylib            0x35afbc74 0x35aec000 + 64628

                                  1   libsystem_kernel.dylib            0x35afbf46 0x35aec000 + 65350

                                  2   libsystem_c.dylib                 0x31c16812 0x31bbc000 + 370706

                                  3   libsystem_c.dylib                 0x31c169fe 0x31bbc000 + 371198

                                  4   EchoExtensionTester               0x004a9f60 0x1000 + 4886368

                                  5   EchoExtensionTester               0x001b8908 0x1000 + 1800456

                                  6   EchoExtensionTester               0x001b893c 0x1000 + 1800508

                                  7   EchoExtensionTester               0x004aa2fc 0x1000 + 4887292

                                  8   EchoExtensionTester               0x004aa5e8 0x1000 + 4888040

                                  9   EchoExtensionTester               0x004aa748 0x1000 + 4888392

                                  10  libsystem_c.dylib                 0x31bef30a 0x31bbc000 + 209674

                                  11  libsystem_c.dylib                 0x31bf0bb4 0x31bbc000 + 215988

                                   

                                  Thread 7:

                                  0   libsystem_kernel.dylib            0x35afdd18 0x35aec000 + 72984

                                  1   libsystem_c.dylib                 0x31c16860 0x31bbc000 + 370784

                                  2   libsystem_c.dylib                 0x31bbde86 0x31bbc000 + 7814

                                  3   EchoExtensionTester               0x004aa044 0x1000 + 4886596

                                  4   EchoExtensionTester               0x0039367c 0x1000 + 3745404

                                  5   EchoExtensionTester               0x004aa2fc 0x1000 + 4887292

                                  6   EchoExtensionTester               0x004aa5e8 0x1000 + 4888040

                                  7   EchoExtensionTester               0x004aa748 0x1000 + 4888392

                                  8   libsystem_c.dylib                 0x31bef30a 0x31bbc000 + 209674

                                  9   libsystem_c.dylib                 0x31bf0bb4 0x31bbc000 + 215988

                                   

                                  Thread 0 crashed with ARM Thread State:

                                      r0: 0x03ebb060    r1: 0x00000000      r2: 0x00000000      r3: 0x00000000

                                      r4: 0x043b19e0    r5: 0x00000002      r6: 0x2fdfc178      r7: 0x2fdfc108

                                      r8: 0x043b19e0    r9: 0x007d47d4     r10: 0x2fdfc1e4     r11: 0x043b19f0

                                      ip: 0x00813aad    sp: 0x2fdfc03c      lr: 0x005f88f4      pc: 0x00813aac

                                    cpsr: 0x68000030

                                   

                                  Binary Images:

                                      0x1000 -   0x8d6fff +EchoExtensionTester armv7  <4c58623df42ff7826b2bf3efab136467> /var/mobile/Applications/90B3B31D-F516-4094-BE3B-88E1324419EC/EchoExtensionTester.app/Ech oExtensionTester

                                  0x2fe00000 - 0x2fe25fff  dyld armv7  <4d3190188cbf32a8a73f32a8b5bb7adf> /usr/lib/dyld

                                  0x30986000 - 0x309b9fff  QuickLook armv7  <29d2d981d1d6358381f5716ee37314b4> /System/Library/Frameworks/QuickLook.framework/QuickLook

                                  0x30ab8000 - 0x30abefff  StoreKit armv7  <0deee3e11c7632aab98ab3c026d41e41> /System/Library/Frameworks/StoreKit.framework/StoreKit

                                  0x30ac5000 - 0x30af3fff  DataAccess armv7  <3a2e67aa1d8834b7a8fc2fbb56654b15> /System/Library/PrivateFrameworks/DataAccess.framework/DataAccess

                                  0x30af4000 - 0x30b9afff  GameKit armv7  <844f6d90111f3e81961a723f557dd2a1> /System/Library/Frameworks/GameKit.framework/GameKit

                                  0x30bbf000 - 0x30c7efff  CFNetwork armv7  <b09e0d53de9f3bc8bde494780f3cdd4f> /System/Library/Frameworks/CFNetwork.framework/CFNetwork

                                  0x30c81000 - 0x30d05fff  AVFoundation armv7  <eeaf5f4f822436a5bd1655f536e69879> /System/Library/Frameworks/AVFoundation.framework/AVFoundation

                                  0x30e07000 - 0x30f07fff  libGLProgrammability.dylib armv7  <c0e6b958279639c098136283c6ad06a8> /System/Library/Frameworks/OpenGLES.framework/libGLProgrammability.dylib

                                  0x30f08000 - 0x30f0bfff  ActorKit armv7  <f7aa6cdd654231988aafcf448978f450> /System/Library/PrivateFrameworks/ActorKit.framework/ActorKit

                                  0x30f0c000 - 0x30f52fff  CoreTelephony armv7  <af7d1e770e5a3ffd8834a57fb5d40557> /System/Library/Frameworks/CoreTelephony.framework/CoreTelephony

                                  0x30f56000 - 0x30f5dfff  AggregateDictionary armv7  <ab9777b39e8e3026ad64dc90323cad7e> /System/Library/PrivateFrameworks/AggregateDictionary.framework/AggregateDictionary

                                  0x30f85000 - 0x31072fff  libiconv.2.dylib armv7  <f4146ce07e3031ea8a81fa5516fd77d0> /usr/lib/libiconv.2.dylib

                                  0x3107a000 - 0x310affff  AddressBook armv7  <3f2071a77bc134cd82065eef90d4082f> /System/Library/Frameworks/AddressBook.framework/AddressBook

                                  0x310b0000 - 0x311d1fff  CoreGraphics armv7  <65f6c8701b563542820a26b0dfc4f6a4> /System/Library/Frameworks/CoreGraphics.framework/CoreGraphics

                                  0x31209000 - 0x31241fff  IOKit armv7  <80ae313ad69d3363935c88e51a11862d> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit

                                  0x31242000 - 0x3129bfff  EventKit armv7  <0d4e597ee229337183e96e921a72e30a> /System/Library/Frameworks/EventKit.framework/EventKit

                                  0x312af000 - 0x3136bfff  MapKit armv7  <806f9ca7eb593d1998587441ce87a396> /System/Library/Frameworks/MapKit.framework/MapKit

                                  0x3136c000 - 0x31466fff  GameKitServices armv7  <a69426414c4634cda77409d5890696ac> /System/Library/PrivateFrameworks/GameKitServices.framework/GameKitServices

                                  0x31469000 - 0x314a6fff  CoreText armv7  <fb6a72faec2330c4b2cd33c2e9c59588> /System/Library/Frameworks/CoreText.framework/CoreText

                                  0x314a7000 - 0x314abfff  libGFXShared.dylib armv7  <a0772a32cd8b3b9194bb0c29807c1c5b> /System/Library/Frameworks/OpenGLES.framework/libGFXShared.dylib

                                  0x314ac000 - 0x314c7fff  FTServices armv7  <e23c3572bf3a36a3a99364d18c484f1e> /System/Library/PrivateFrameworks/FTServices.framework/FTServices

                                  0x314c8000 - 0x31519fff  libsqlite3.dylib armv7  <8a41cc6a6d9332308bc415d27577fd24> /usr/lib/libsqlite3.dylib

                                  0x31624000 - 0x31626fff  libAccessibility.dylib armv7  <d55f1553d14831a2a5435ae27ef75ef4> /usr/lib/libAccessibility.dylib

                                  0x31627000 - 0x3165ffff  libCGFreetype.A.dylib armv7  <416c77100b453e3f838831c4c857f8c7> /System/Library/Frameworks/CoreGraphics.framework/Resources/libCGFreetype.A.dylib

                                  0x31660000 - 0x3166dfff  libdispatch.dylib armv7  <9a0511ad5ebc3db898f1f49ed1a73d34> /usr/lib/system/libdispatch.dylib

                                  0x3167e000 - 0x31763fff  CoreFoundation armv7  <a8444f997111304c9571b3ff974b769c> /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation

                                  0x31797000 - 0x317cefff  Security armv7  <6599f42a910b3b31a0e1d98c883d61cb> /System/Library/Frameworks/Security.framework/Security

                                  0x317cf000 - 0x317effff  PrintKit armv7  <e5a01ca9083a36afacc08611a398e2ad> /System/Library/PrivateFrameworks/PrintKit.framework/PrintKit

                                  0x31851000 - 0x31858fff  libbz2.1.0.dylib armv7  <0a082e1d475432959ba93aa3dbf7fb31> /usr/lib/libbz2.1.0.dylib

                                  0x31ba0000 - 0x31ba8fff  MobileBluetooth armv7  <63f11756c4aa3262b2317ff3b8e2a977> /System/Library/PrivateFrameworks/MobileBluetooth.framework/MobileBluetooth

                                  0x31bbc000 - 0x31c3dfff  libsystem_c.dylib armv7  <17ee3fe220c23b1f898d21ba25b2bcac> /usr/lib/system/libsystem_c.dylib

                                  0x31c5a000 - 0x31d6cfff  MediaPlayer armv7  <da848c0745a637af81d7edd962a09324> /System/Library/Frameworks/MediaPlayer.framework/MediaPlayer

                                  0x31d6d000 - 0x31e0afff  AddressBookUI armv7  <e354aeb3d96e30338e90cc3638ffe81b> /System/Library/Frameworks/AddressBookUI.framework/AddressBookUI

                                  0x31e0b000 - 0x31e3afff  SystemConfiguration armv7  <1d73b8a159363f96bb9c039655c5eae6> /System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration

                                  0x31e42000 - 0x31e4bfff  MobileWiFi armv7  <03d98d5cf6383695aa7d8a88da52f410> /System/Library/PrivateFrameworks/MobileWiFi.framework/MobileWiFi

                                  0x31e4c000 - 0x31e4cfff  libCVMSPluginSupport.dylib armv7  <42d8aa2a31843a6e8bfff745644a7ba5> /System/Library/Frameworks/OpenGLES.framework/libCVMSPluginSupport.dylib

                                  0x31e4d000 - 0x31e4dfff  Accelerate armv7  <7d5ad465049136afaa1f0d89aac600bc> /System/Library/Frameworks/Accelerate.framework/Accelerate

                                  0x31e6b000 - 0x31e6efff  CaptiveNetwork armv7  <fc834fd33a18341ea7506587ad895703> /System/Library/PrivateFrameworks/CaptiveNetwork.framework/CaptiveNetwork

                                  0x31e6f000 - 0x31e81fff  TelephonyUI armv7  <e2c34b9a391e3384875ac552dbca0ad4> /System/Library/PrivateFrameworks/TelephonyUI.framework/TelephonyUI

                                  0x31e82000 - 0x31e97fff  libresolv.9.dylib armv7  <e92cfbb83f7b330db19181e797bb3f7b> /usr/lib/libresolv.9.dylib

                                  0x31e98000 - 0x31ea3fff  libz.1.dylib armv7  <ac706bee36593dc683fd5a96a389d72e> /usr/lib/libz.1.dylib

                                  0x31ec7000 - 0x31ec9fff  SpringBoardUI armv7  <90ba5da3e3e337e0a83e2c2589d951a8> /System/Library/PrivateFrameworks/SpringBoardUI.framework/SpringBoardUI

                                  0x31ed3000 - 0x31ef0fff  libsystem_info.dylib armv7  <48016be86e3f3cd9aeee1c6590e1ac6f> /usr/lib/system/libsystem_info.dylib

                                  0x31ef2000 - 0x31ef4fff  libgcc_s.1.dylib armv7  <a2631ac302f4310dae8367939e16b7c2> /usr/lib/libgcc_s.1.dylib

                                  0x31f0c000 - 0x31f3ffff  AppSupport armv7  <0217468bd9f839229a47910b7816b3d5> /System/Library/PrivateFrameworks/AppSupport.framework/AppSupport

                                  0x31f40000 - 0x31f43fff  IOSurface armv7  <ad50e71624583d06b891344d832f9b08> /System/Library/PrivateFrameworks/IOSurface.framework/IOSurface

                                  0x31f64000 - 0x31f79fff  OpenAL armv7  <162722d7da273d649798b27ae0e4458c> /System/Library/Frameworks/OpenAL.framework/OpenAL

                                  0x31fa8000 - 0x31fb7fff  MobileDeviceLink armv7  <563a09bcdb2f32369b1e22f53f58273a> /System/Library/PrivateFrameworks/MobileDeviceLink.framework/MobileDeviceLink

                                  0x31fb8000 - 0x31ff4fff  libGLImage.dylib armv7  <9d97699e44ee3651ba4ac37e5adec35b> /System/Library/Frameworks/OpenGLES.framework/libGLImage.dylib

                                  0x31ff5000 - 0x3203ffff  libstdc++.6.dylib armv7  <e98c3fd72ba43d02aac24b08f7219eb7> /usr/lib/libstdc++.6.dylib

                                  0x32044000 - 0x3204bfff  libMobileGestalt.dylib armv7  <55f29184efcc3046bb833dd72a4487e1> /usr/lib/libMobileGestalt.dylib

                                  0x320af000 - 0x320d3fff  MediaControl armv7  <1cfc7d79f554357ab59eb69f9efebf07> /System/Library/PrivateFrameworks/MediaControl.framework/MediaControl

                                  0x320d6000 - 0x320dbfff  libcopyfile.dylib armv7  <e32cf2d48a1f3060b372ca7623e4a12b> /usr/lib/system/libcopyfile.dylib

                                  0x320df000 - 0x320e5fff  BluetoothManager armv7  <7861bc6128d93f72877df2f234434a47> /System/Library/PrivateFrameworks/BluetoothManager.framework/BluetoothManager

                                  0x320f2000 - 0x320f7fff  liblaunch.dylib armv7  <f5ccc8234aea3ebd9a88bd37f0fa23ae> /usr/lib/system/liblaunch.dylib

                                  0x32124000 - 0x32127fff  MobileIcons armv7  <08e426f8a707388d8adda670bfed0c2e> /System/Library/PrivateFrameworks/MobileIcons.framework/MobileIcons

                                  0x3216d000 - 0x321a0fff  iCalendar armv7  <34ce1957082f3518b5740ac33cfc92eb> /System/Library/PrivateFrameworks/iCalendar.framework/iCalendar

                                  0x321e5000 - 0x321f1fff  GraphicsServices armv7  <ff78a9636e933f0dbd222f8d26209788> /System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices

                                  0x321f2000 - 0x32231fff  libSystem.B.dylib armv7  <64cf947dd8423eeeb677f81dd3eb2d9d> /usr/lib/libSystem.B.dylib

                                  0x32232000 - 0x3225bfff  ContentIndex armv7  <ecd71782cd833360872b943ecc65d203> /System/Library/PrivateFrameworks/ContentIndex.framework/ContentIndex

                                  0x32270000 - 0x322a5fff  ImageCapture armv7  <2c474beec10f3791ac8a1d37df04600f> /System/Library/PrivateFrameworks/ImageCapture.framework/ImageCapture

                                  0x322a6000 - 0x322dafff  VideoToolbox armv7  <570c63dc3a273a5a8c9072fd5567f5c1> /System/Library/PrivateFrameworks/VideoToolbox.framework/VideoToolbox

                                  0x32301000 - 0x32409fff  CoreData armv7  <9843a401dd1d322383e3e40021cc8b95> /System/Library/Frameworks/CoreData.framework/CoreData

                                  0x3240a000 - 0x3240cfff  Marco armv7  <53203fa831ab34f894f3a3811bf3917c> /System/Library/PrivateFrameworks/Marco.framework/Marco

                                  0x32440000 - 0x32443fff  ArtworkCache armv7  <4863e321afee3ac5a3749e50cd926597> /System/Library/PrivateFrameworks/ArtworkCache.framework/ArtworkCache

                                  0x32444000 - 0x32452fff  OpenGLES armv7  <5a76beaeaa013f0cbf16e5cb154598ab> /System/Library/Frameworks/OpenGLES.framework/OpenGLES

                                  0x32468000 - 0x32487fff  Bom armv7  <b178e3efb4d733c694bd5a55e57a314f> /System/Library/PrivateFrameworks/Bom.framework/Bom

                                  0x32488000 - 0x32a93fff  WebCore armv7  <07941e59d0a33f94802c16c76238fddf> /System/Library/PrivateFrameworks/WebCore.framework/WebCore

                                  0x32a98000 - 0x32a9afff  IOMobileFramebuffer armv7  <683f321680763e519d61541170ba2133> /System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/IOMobileFramebuffer

                                  0x32a9b000 - 0x32adbfff  CoreMedia armv7  <8e0570582ba535bfa74f1f00eef64376> /System/Library/Frameworks/CoreMedia.framework/CoreMedia

                                  0x32ade000 - 0x32ae1fff  MediaRemote armv7  <0804293b2774359189f3a67e2c81558d> /System/Library/PrivateFrameworks/MediaRemote.framework/MediaRemote

                                  0x32ae3000 - 0x32ae8fff  libnotify.dylib armv7  <9d7198e91de9386a9e5ea43608a66a57> /usr/lib/system/libnotify.dylib

                                  0x32be5000 - 0x32ed2fff  libLAPACK.dylib armv7  <b855d60dac01310495453bddfd004f0d> /System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/libLAPACK.dyl ib

                                  0x32f68000 - 0x32f69fff  libremovefile.dylib armv7  <0fa08e1bb47a3d179072a933d1726597> /usr/lib/system/libremovefile.dylib

                                  0x32f6a000 - 0x32fbffff  libvDSP.dylib armv7  <0221caba81a235c5a896a835e2aac047> /System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/libvDSP.dylib

                                  0x32fc0000 - 0x33084fff  libobjc.A.dylib armv7  <a89ef30f6d663254babb6329ce02ca3d> /usr/lib/libobjc.A.dylib

                                  0x33085000 - 0x330b3fff  MIME armv7  <60de1fe0bbb134d788c09f7c34b1caa4> /System/Library/PrivateFrameworks/MIME.framework/MIME

                                  0x330bc000 - 0x3311bfff  libBLAS.dylib armv7  <0b36b2272aa33a8c9aa22d99c89d7189> /System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/libBLAS.dylib

                                  0x33120000 - 0x331cffff  QuartzCore armv7  <ef9632c9781f3101916b65e9faae1579> /System/Library/Frameworks/QuartzCore.framework/QuartzCore

                                  0x331d0000 - 0x331d2fff  Camera armv7  <fd4d53b318ab35ce9bb89db3879120f0> /System/Library/PrivateFrameworks/Camera.framework/Camera

                                  0x331fa000 - 0x331fdfff  ApplePushService armv7  <015c68c15621348db9f6a012499170e1> /System/Library/PrivateFrameworks/ApplePushService.framework/ApplePushService

                                  0x331fe000 - 0x3331dfff  Foundation armv7  <09ff368178c5321c9715b9c8d491d53f> /System/Library/Frameworks/Foundation.framework/Foundation

                                  0x3331e000 - 0x33361fff  ManagedConfiguration armv7  <f790c26852cb3cf298abe56bc9a3940b> /System/Library/PrivateFrameworks/ManagedConfiguration.framework/ManagedConfiguration

                                  0x33391000 - 0x33396fff  libsystem_dnssd.dylib armv7  <f019bc513a6a37f4a79555b3ffb2a777> /usr/lib/system/libsystem_dnssd.dylib

                                  0x33439000 - 0x33446fff  libbsm.0.dylib armv7  <0a1e2bb78d5138419ecad8ba0fe42fdd> /usr/lib/libbsm.0.dylib

                                  0x3346f000 - 0x34ebdfff  TextInput armv7  <f242acc046073c1598195dd26fd8ad6f> /System/Library/PrivateFrameworks/TextInput.framework/TextInput

                                  0x34f49000 - 0x34f4bfff  CrashReporterSupport armv7  <9e7efa009730322f84bbc5d8bf1ded94> /System/Library/PrivateFrameworks/CrashReporterSupport.framework/CrashReporterSupport

                                  0x34f4e000 - 0x34f54fff  IAP armv7  <c0f4c99a1b493e489948f231ad9238e2> /System/Library/PrivateFrameworks/IAP.framework/IAP

                                  0x34f99000 - 0x34fe7fff  GMM armv7  <049361f664eb3f30b0d25cd56ffc1f0f> /System/Library/PrivateFrameworks/GMM.framework/GMM

                                  0x34fe8000 - 0x35031fff  IMCore armv7  <9c1e280e1fa33fa784cad479b9cbd941> /System/Library/PrivateFrameworks/IMCore.framework/IMCore

                                  0x35032000 - 0x35077fff  IMAVCore armv7  <a4dbb6f1203e3f569080707b3a388573> /System/Library/PrivateFrameworks/IMAVCore.framework/IMAVCore

                                  0x3507a000 - 0x35086fff  HomeSharing armv7  <2df6957cdfea31aea12eebf27ca1691c> /System/Library/PrivateFrameworks/HomeSharing.framework/HomeSharing

                                  0x3509e000 - 0x3516ffff  IMGSGX543GLDriver armv7  <406a4fa178c036e78cdc9537d5332c2e> /System/Library/Extensions/IMGSGX543GLDriver.bundle/IMGSGX543GLDriver

                                  0x35170000 - 0x3526ffff  PhotoLibrary armv7  <03a0336e443b3d958419dab3d432b147> /System/Library/PrivateFrameworks/PhotoLibrary.framework/PhotoLibrary

                                  0x35270000 - 0x35276fff  liblockdown.dylib armv7  <14c89b7346433c1f8675f454531f6ca3> /usr/lib/liblockdown.dylib

                                  0x352b1000 - 0x352dbfff  libtidy.A.dylib armv7  <68abd33352613e80a099a46d38704085> /usr/lib/libtidy.A.dylib

                                  0x352ff000 - 0x35303fff  AssetsLibraryServices armv7  <e1cbfe599c96369ca4bdb0dd99d3cd9f> /System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices

                                  0x35304000 - 0x35346fff  CoreAudio armv7  <c972fd5f8e89333ca680b9a33587f896> /System/Library/Frameworks/CoreAudio.framework/CoreAudio

                                  0x35347000 - 0x35351fff  ExternalAccessory armv7  <eebb4bdbbefb37419b884ffa011e1dc5> /System/Library/Frameworks/ExternalAccessory.framework/ExternalAccessory

                                  0x35352000 - 0x3535cfff  AccountSettings armv7  <d083fb384dc7311eb6766b9b2d2dd9c8> /System/Library/PrivateFrameworks/AccountSettings.framework/AccountSettings

                                  0x3536e000 - 0x3538efff  AppleAccount armv7  <4e0ac5cf93b338ab8c5f34ba3c5e2ee4> /System/Library/PrivateFrameworks/AppleAccount.framework/AppleAccount

                                  0x3544b000 - 0x3544bfff  libdnsinfo.dylib armv7  <21415179ffa03f949fa8cc851c6c31c7> /usr/lib/system/libdnsinfo.dylib

                                  0x35645000 - 0x356eefff  libxml2.2.dylib armv7  <5538d3f2c7d83b88b06168488fe6326b> /usr/lib/libxml2.2.dylib

                                  0x356ef000 - 0x35809fff  libicucore.A.dylib armv7  <bada0c2725bb31a483d5adf9aaf1f8df> /usr/lib/libicucore.A.dylib

                                  0x35883000 - 0x3590dfff  Message armv7  <2cce1aa95a493906bb0227197f9e4b96> /System/Library/PrivateFrameworks/Message.framework/Message

                                  0x35911000 - 0x35a65fff  AudioToolbox armv7  <6619c8c13f8d328e923e797fa8d0df23> /System/Library/Frameworks/AudioToolbox.framework/AudioToolbox

                                  0x35a6e000 - 0x35a73fff  MobileKeyBag armv7  <8c35c090bc373cb181fc26b961b8dba5> /System/Library/PrivateFrameworks/MobileKeyBag.framework/MobileKeyBag

                                  0x35a77000 - 0x35ae6fff  ProofReader armv7  <6d843c6aecdd37ae84baa40af8ad7e65> /System/Library/PrivateFrameworks/ProofReader.framework/ProofReader

                                  0x35aec000 - 0x35b03fff  libsystem_kernel.dylib armv7  <c4ebe7eb2e6c3a2d9bd3620a4d6dbc0e> /usr/lib/system/libsystem_kernel.dylib

                                  0x35b04000 - 0x35c50fff  MediaToolbox armv7  <482b13059e8a329fa5d832baede25103> /System/Library/PrivateFrameworks/MediaToolbox.framework/MediaToolbox

                                  0x35c51000 - 0x35c51fff  libsystem_sandbox.dylib armv7  <f47c01d627853b328e088b3fdd08e87d> /usr/lib/system/libsystem_sandbox.dylib

                                  0x35cab000 - 0x35cf2fff  MessageUI armv7  <35a81f5d4eb03467a1447db80337e570> /System/Library/Frameworks/MessageUI.framework/MessageUI

                                  0x35d49000 - 0x35d72fff  MobileCoreServices armv7  <57fef84bdc17301d8bf53ba0fb967fe6> /System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices

                                  0x35d73000 - 0x35d8bfff  iAd armv7  <7f6c5b4499ee383ea75f0cc8dcb5ca35> /System/Library/Frameworks/iAd.framework/iAd

                                  0x35d8c000 - 0x35d9bfff  Notes armv7  <d9c976ca976e3d029f69febd48f17601> /System/Library/PrivateFrameworks/Notes.framework/Notes

                                  0x35d9d000 - 0x35db6fff  libRIP.A.dylib armv7  <4825c3e392983aba947eca06555e4480> /System/Library/Frameworks/CoreGraphics.framework/Resources/libRIP.A.dylib

                                  0x35db7000 - 0x35ea3fff  GLEngine armv7  <f216c91c5fdb38a9ae65dc6651ccbd02> /System/Library/Frameworks/OpenGLES.framework/GLEngine.bundle/GLEngine

                                  0x35ebb000 - 0x35edbfff  MobileSync armv7  <4df400c4559435889eccd88db77a110c> /System/Library/PrivateFrameworks/MobileSync.framework/MobileSync

                                  0x35edc000 - 0x35eddfff  libsystem_blocks.dylib armv7  <ccc041df3de73eafb7a59e74cdb1702b> /usr/lib/system/libsystem_blocks.dylib

                                  0x35ede000 - 0x3626bfff  UIKit armv7  <c271b78464d93cb7bf28c6e49df293ba> /System/Library/Frameworks/UIKit.framework/UIKit

                                  0x3626c000 - 0x3657ffff  GeoServices armv7  <88616f3deada3bb495fc15e3ba58dc83> /System/Library/PrivateFrameworks/GeoServices.framework/GeoServices

                                  0x365bb000 - 0x365cbfff  WebBookmarks armv7  <6956561235333e74b8ff316cb2edc93e> /System/Library/PrivateFrameworks/WebBookmarks.framework/WebBookmarks

                                  0x365dc000 - 0x36622fff  CoreLocation armv7  <249b8af3dc503d11bf3711f0407c66d8> /System/Library/Frameworks/CoreLocation.framework/CoreLocation

                                  0x36629000 - 0x36629fff  vecLib armv7  <0c60cd0a60f43d2791d36cb357d30e3c> /System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/vecLib

                                  0x3663f000 - 0x36640fff  CoreSurface armv7  <7b83cd757da73e6e826693c29296d3fa> /System/Library/PrivateFrameworks/CoreSurface.framework/CoreSurface

                                  0x36641000 - 0x366d6fff  ImageIO armv7  <d520e3241d1130e8ac1375ee0f2c1095> /System/Library/Frameworks/ImageIO.framework/ImageIO

                                  0x366d7000 - 0x3679dfff  MusicLibrary armv7  <71a09022bd8b3b6a90a250199d190f10> /System/Library/PrivateFrameworks/MusicLibrary.framework/MusicLibrary

                                  0x3679e000 - 0x36844fff  Celestial armv7  <407badafc6403692bf099d542d28bf7f> /System/Library/PrivateFrameworks/Celestial.framework/Celestial

                                  0x36847000 - 0x36849fff  MobileInstallation armv7  <94b6d6c5d9883175af26764567528127> /System/Library/PrivateFrameworks/MobileInstallation.framework/MobileInstallation

                                  0x3684e000 - 0x36850fff  MailServices armv7  <74ae0145ef713c6d91fd8f68885b0a61> /System/Library/PrivateFrameworks/MailServices.framework/MailServices

                                  0x36851000 - 0x368b7fff  EventKitUI armv7  <b3b568df80863f2e9374054bab335bf3> /System/Library/Frameworks/EventKitUI.framework/EventKitUI

                                  0x369e7000 - 0x36a98fff  WebKit armv7  <eb9a0d69c64b3127b2bffd71641add3b> /System/Library/PrivateFrameworks/WebKit.framework/WebKit

                                  0x36b4e000 - 0x36c7afff  libmecabra.dylib armv7  <113de5f9858c32b8b158bfdc68042a97> /usr/lib/libmecabra.dylib

                                  0x36c7c000 - 0x36c92fff  EAP8021X armv7  <9fefc0ada30435fbb3b51818c74f6cb8> /System/Library/PrivateFrameworks/EAP8021X.framework/EAP8021X

                                  0x36c93000 - 0x36c99fff  ProtocolBuffer armv7  <f9277ee9b85b3722975ad319a323aca0> /System/Library/PrivateFrameworks/ProtocolBuffer.framework/ProtocolBuffer

                                  0x36cda000 - 0x36cdefff  libcache.dylib armv7  <362fdd2de66f3e189b5d139c9669a9e3> /usr/lib/system/libcache.dylib

                                  0x36cdf000 - 0x36cf1fff  PersistentConnection armv7  <659ea9d5b13d3fefb37acff09016a69c> /System/Library/PrivateFrameworks/PersistentConnection.framework/PersistentConnection

                                  0x36d08000 - 0x36d11fff  ITSync armv7  <ba8b48d061903e4096774344448776d0> /System/Library/PrivateFrameworks/ITSync.framework/ITSync

                                  0x36d13000 - 0x36e17fff  JavaScriptCore armv7  <61a94142e2d23dafa2964190dd46e9e3> /System/Library/PrivateFrameworks/JavaScriptCore.framework/JavaScriptCore

                                  0x36e1b000 - 0x36e24fff  CoreVideo armv7  <ea847e6dba2d36b1826b255c73b39539> /System/Library/Frameworks/CoreVideo.framework/CoreVideo

                                  0x36e25000 - 0x36e28fff  libmacho.dylib armv7  <53908d448e9e32418652a4afee5bc578> /usr/lib/system/libmacho.dylib

                                  0x36e29000 - 0x36e77fff  CoreMotion armv7  <5e6b884d36d93789b40b7f3876130417> /System/Library/Frameworks/CoreMotion.framework/CoreMotion

                                  0x36e7d000 - 0x36e7efff  DataMigration armv7  <42e9e87a4e0735c3837e27d4f2adcf55> /System/Library/PrivateFrameworks/DataMigration.framework/DataMigration

                                  0x36e7f000 - 0x36e85fff  AssetsLibrary armv7  <124dd93095423fcf8029d3c7614dffd4> /System/Library/Frameworks/AssetsLibrary.framework/AssetsLibrary

                                  0x36ee6000 - 0x36ef9fff  libmis.dylib armv7  <529ea6e3a87230ce9f6cf3285c22429c> /usr/lib/libmis.dylib

                                  0x36f16000 - 0x36f17fff  libsystem_network.dylib armv7  <3e0b7d6754cd33669c0680525f03ede1> /usr/lib/system/libsystem_network.dylib

                                  0x36f18000 - 0x36f4bfff  StoreServices armv7  <d526715648f435c3aac4c42953e76d20> /System/Library/PrivateFrameworks/StoreServices.framework/StoreServices

                                  0x36fa9000 - 0x3706afff  RawCamera armv7  <0c52d8b1498c3dbb9aad95f3bcd8261d> /System/Library/CoreServices/RawCamera.bundle/RawCamera

                                  0x370b2000 - 0x370ddfff  IMFoundation armv7  <f1f21bedbf2e3ea38f692abef0005d76> /System/Library/PrivateFrameworks/IMCore.framework/Frameworks/IMFoundation.framework/IMFo undation

                                  0x370e4000 - 0x370e5fff  libdyld.dylib armv7  <7dd4acfe150831e0ae82296587e67e7f> /usr/lib/system/libdyld.dylib

                                  0x370ec000 - 0x370fcfff  DataAccessExpress armv7  <66d9047da79a31daa887e6d84c42ecb2> /System/Library/PrivateFrameworks/DataAccessExpress.framework/DataAccessExpress

                                  0x37144000 - 0x37147fff  CertUI armv7  <9060fe03a4943ef295531feced9a17dd> /System/Library/PrivateFrameworks/CertUI.framework/CertUI

                                  0x37148000 - 0x37154fff  SpringBoardServices armv7  <c68262667ac8397a949ce4e92dfec7db> /System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices

                                  • 14. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                    Joe ... Ward Community Member

                                    I tried building your extension code last night. I got an immediate app crash on accessing the extension code, too.  I can't help you with debugging C (or interpreting crash logs). Hopefully someone with such knowledge can step in.

                                    • 15. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                      DaveGallant Community Member

                                      So what you are saying is the problem is in the objective C code in the .a file? If this is true, it at least gives me someplace to start looking for potential problems.

                                       

                                      The thing is, I tried to reproduce the above steps exactly using the iBattery and iNetworkInfo sample extensions and I get the exact same thing.

                                       

                                       

                                      something else I did was changed the name of ipa file to.zip and open it up to see what was what... there are a TON of empty folders, but this is what the inside of the ipa looks like:

                                      (Maybe you can tell me if something is missing or in the wrong spot?)

                                       

                                      (Also note: I manually added the .swc, .a, and .ane to the build batch file so they would be included in the root of the app folder with the swf.

                                      Volume in drive D is Data

                                       

                                      Directory of D:\EchoExtensionTester.ipa\EchoExtensionTester.app

                                       

                                      10/28/2011  03:18 PM    <DIR>          .

                                      10/28/2011  03:18 PM    <DIR>          ..

                                      10/28/2011  03:15 PM    <DIR>          cs.lproj

                                      10/28/2011  03:15 PM    <DIR>          de.lproj

                                      10/28/2011  03:15 PM    <DIR>          en.lproj

                                      10/28/2011  03:15 PM    <DIR>          es.lproj

                                      10/28/2011  03:15 PM    <DIR>          fr.lproj

                                      10/28/2011  03:15 PM    <DIR>          it.lproj

                                      10/28/2011  03:15 PM    <DIR>          ja.lproj

                                      10/28/2011  03:15 PM    <DIR>          ko.lproj

                                      10/28/2011  03:15 PM    <DIR>          META-INF

                                      10/28/2011  03:15 PM    <DIR>          nl.lproj

                                      10/28/2011  03:15 PM    <DIR>          pl.lproj

                                      10/28/2011  03:15 PM    <DIR>          pt.lproj

                                      10/28/2011  03:15 PM    <DIR>          ru.lproj

                                      10/28/2011  03:15 PM    <DIR>          sv.lproj

                                      10/28/2011  03:15 PM    <DIR>          tr.lproj

                                      10/28/2011  03:15 PM    <DIR>          zh_Hans.lproj

                                      10/28/2011  03:15 PM    <DIR>          zh_Hant.lproj

                                      10/28/2011  03:15 PM    <DIR>          _CodeSignature

                                      10/28/2011  03:15 PM                28 CodeResources

                                      10/27/2011  11:17 AM             6,803 EchoExtension.ane

                                      10/27/2011  11:16 AM             1,973 EchoExtension.swc

                                      10/28/2011  03:15 PM         9,685,088 EchoExtensionTester

                                      10/28/2011  03:14 PM            18,499 EchoExtensionTester.swf

                                      10/24/2011  05:53 PM             7,686 embedded.mobileprovision

                                      10/28/2011  03:15 PM             3,277 Info.plist

                                      10/27/2011  11:10 AM             9,344 libEchoExtension.a

                                      09/23/2011  11:11 PM             1,621 MainWindow-iPad.nib

                                      09/23/2011  11:11 PM             1,620 MainWindow.nib

                                      10/28/2011  03:15 PM               782 ResourceRules.plist

                                       

                                       

                                      Directory of D:\EchoExtensionTester.ipa\EchoExtensionTester.app\META-INF

                                      10/28/2011  03:15 PM    <DIR>          AIR

                                       

                                      Directory of D:\EchoExtensionTester.ipa\EchoExtensionTester.app\META-INF\AIR

                                      10/26/2011  02:43 PM    <DIR>          extensions

                                      10/28/2011  03:15 PM             1,768 application.xml

                                       

                                      Directory of D:\EchoExtensionTester.ipa\EchoExtensionTester.app\META-INF\AIR\extensions

                                      10/26/2011  02:43 PM    <DIR>          com.extensions.EchoExtension

                                       

                                      Directory of D:\EchoExtensionTester.ipa\EchoExtensionTester.app\META-INF\AIR\extensions\com.extensions .EchoExtension

                                      10/26/2011  02:43 PM    <DIR>          META-INF

                                      10/27/2011  11:17 AM             1,262 catalog.xml

                                       

                                      Directory of D:\EchoExtensionTester.ipa\EchoExtensionTester.app\META-INF\AIR\extensions\com.extensions .EchoExtension\META-INF

                                      10/26/2011  02:43 PM    <DIR>          ANE

                                       

                                      Directory of D:\EchoExtensionTester.ipa\EchoExtensionTester.app\META-INF\AIR\extensions\com.extensions .EchoExtension\META-INF\ANE

                                      10/27/2011  11:16 AM    <DIR>          iPhone-ARM

                                      10/26/2011  02:43 PM               428 extension.xml

                                       

                                      Directory of D:\EchoExtensionTester.ipa\EchoExtensionTester.app\META-INF\AIR\extensions\com.extensions .EchoExtension\META-INF\ANE\iPhone-ARM

                                      10/27/2011  11:16 AM             1,296 library.swf

                                      • 16. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                        Saumitra Bhave Community Member

                                        Hi Dave:

                                         

                                        Thinking loudly

                                         

                                        1. I could see that your native code says return argv[0] bet you dont seem to pass anything from AS side. on AS side call should be like _ext.call("echo","Hi There") so that "Hi there" is FREObject that you will get in argv[0]

                                         

                                        2. When you use other extensions do you remove yours? or you try using multiple at once?

                                         

                                        3. There is no use of manipulating .app folder. You can asume it is almost always correct. you cant use the .app folder once you modify it.

                                         

                                        4. Please dont add .a .swc .ane as assets. That is incorrect.

                                        • 17. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                          Joe ... Ward Community Member

                                          Dave, I was able to use the iBattery extension (using the pre-built version, I didn't try building it myself).

                                          • 18. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                            DaveGallant Community Member

                                            Saumitra and Joe:

                                             

                                            Thanks for your help so far, but I am still having problems.

                                             

                                             

                                            Saumtira

                                            1. the entire point is just for a function in the native c side to return whatever was passed into it. And looking back at it, your are right in the fact that I am not actually passing the prompt variable into the echo call. The thing is, the line of code to execute the echo call is never being reached as the program is crashing on the line var ext:EchoExtension = new EchoExtension();

                                             

                                            I will fix that line of code on monday when I am back in to work and see if it makes any difference... I have a few other silly things I am going to try that probably won't make any difference, but it's not like I have any to lose from trying.

                                             

                                             

                                            2. Yes, when I compiled and tested other sample extensions, I removed all traces of all others first... so when I build my app to put on the device, there was ever only just 1 extension packaged with it.

                                             

                                            3. As for manipuating the .app folder - well, I was grasping at straws... I figured it was right as I compaired my files and folder structures to that of the iBattery sample and they are (as far as I can tell) the same in any respect that matters

                                             

                                            4. again, was just grasping at straws... 99% of my tests didn't include the, but I thought I would try it just to see if it made a difference.... it didn't.

                                             

                                             

                                            Joe:

                                             

                                            When I try to install the iBattery ipa that was given with the sample code, I get a message on my phone saying: "iTunes Sync 'iBatteryExample' failed to install... I have had this error befor and it had to do with bad/incorrect provisioning profiles, so I suspect I woudl have to rebuild the app with my own, but it looks like a flex project (?) and I don't know how to compile those (yet...)

                                            • 19. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                              andrea.conti Community Member

                                              Hello,

                                               

                                              I am also struggling with a native extension crashing upon load on iOS. I think I found out what is going wrong in my case, although I have no idea about how to fix it.

                                               

                                              Before concluding we're having the same problem, however, I'd like to confirm a couple of things:

                                               

                                              1) are you getting any errors/warnings in the output of "adt -package -target ipa-ad-hoc" ?

                                               

                                              2) could you please try to build, install and run a non-AOT version of your application (i.e. -target ipa-test-interpreter or -target ipa-debug-interpreter)?

                                               

                                              3) what kind of architecture are you building the iOS static library for? armv6, armv7 or both? (It's one of the first lines under the build settings of the library target in XCode).

                                               

                                              Thanks,

                                              Andrea

                                              • 20. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                DaveGallant Community Member

                                                Hi Andrea

                                                 

                                                Here are the answers to your questions in regards to my project.

                                                 

                                                1. I am not getting any warnings or anykind of errors when building... but I am using the command line tool to build it, not flash... right now, it's set to -package -target ipa-ad-hoc


                                                2. I ran the following tests with some very surprising results!

                                                 

                                                -target ipa-test-interpreter ---- IT WORKED! - however, I am not happy about it being an interpreter mode. The extension is even echoing what I send it... it looks like it is doing exactly what it's supposed to do!

                                                -target ipa-debug-interpreter ---- also worked... but again... interpreter mode...
                                                -target ipa-ad-hoc ---- Black screen. Can not even get to my ui.
                                                -target ipa-app-store ---- Same as adhoc - Black screen.

                                                -target ipa-debug ---- the application starts, but then is ejected and crashes.
                                                -target ipa-debug -connect  ---- prompted me for the ip address of my debugger (which flash was setup to be waiting for a connection)... once I entered the ip address, it connected to flash but then promptly crashed and terminated the flash debugger.

                                                -target ipa-test ---- Same as ipa-debug... the app started and then crashed.

                                                 

                                                 


                                                Here is the crash report for the ipa-debug and ipa-test modes:

                                                 

                                                Incident Identifier: 983D93E6-5AFF-482B-A0D7-A16DDD44354D

                                                CrashReporter Key:   7a4dd56d46eb23a7701ad55245de2bca11c48b32

                                                Hardware Model:      iPad2,2

                                                Process:         EchoExtensionTester [13660]

                                                Path:            /var/mobile/Applications/43145E6B-4A0C-4D48-B36D-0F212539A386/EchoExtensionTester.app/Ech oExtensionTester

                                                Identifier:      EchoExtensionTester

                                                Version:         ??? (???)

                                                Code Type:       ARM (Native)

                                                Parent Process:  launchd [1]

                                                 

                                                Date/Time:       2011-11-02 10:45:27.858 -0300

                                                OS Version:      iPhone OS 4.3.5 (8L1)

                                                Report Version:  104

                                                 

                                                Exception Type:  EXC_BAD_ACCESS (SIGBUS)

                                                Exception Codes: KERN_PROTECTION_FAILURE at 0x00000008

                                                Crashed Thread:  0

                                                 

                                                 

                                                3. My static library architecture is set to "Standard (armv6 armv7)" and "valid architectures" is "armv6 armv7"

                                                I don't know if it will make any difference, C Language Dialect is set to "C99 [-std=c99]" and Compiler for c/c++/objective c is set to "LLVM GCC 4.2"

                                                 

                                                 

                                                 


                                                So it appears that native extensions only work in interepted mode for test and debug - which is alot further along than I was... but is still not acceptable.

                                                • 21. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                  Colin Holgate ACP/MVPs

                                                  Can you be sure that you're not using any external AS3 at all?

                                                   

                                                  The fact that you're set to ARMv6 and ARMv7 seems unusual, as AIR requires ARMv7.

                                                  • 22. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                    DaveGallant Community Member

                                                    Can you be sure that you're not using any external AS3 at all?

                                                     

                                                    I don't think I am... I am not exactly sure what you mean by "external AS3"...

                                                    I am not loading any external files at runtime, and my main project class is in it's own .as file... but it's internal...

                                                    the only thing in the actionscript settings was the .ane file... which was set to RSL from the last series of tests I did last week... I changed it to merged into code and recompiled each of the target types. They all acted the the same way.

                                                     

                                                     

                                                     

                                                     

                                                    As for ARMv6 and ARMv7 - I didn't actually set or change those, it was set by default with xcode... should I change it to ARMv7 only? And if I do that, will I still be able to target iPad1 and iPhone3?

                                                    • 23. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                      andrea.conti Community Member

                                                      In my experience ARMv6 works too in non-AOT builds, whether it's intended or not...

                                                       

                                                      Dave, could you try setting the architecture to armv7 only and building the library with GCC 4.2 (NOT llvm-gcc)? It should be one of the compilers available in the iPhone SDK 4.3 that ships with XCode 4.1.

                                                       

                                                      andrea

                                                      • 24. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                        Colin Holgate ACP/MVPs

                                                        iPad will be ok. iPhone 3GS will too. iPhone 3G cannot work with AIR 3 at all.

                                                        • 25. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                          DaveGallant Community Member

                                                          Andrea:

                                                           

                                                          Ok... I recompiled the .a file first, only changing the compiler type to GCC4.2 only. I then rebuilt using both ad-hoc and testing and it acted the exact same way as before (Black screen/crashed)

                                                           

                                                          I then changed Architectures to "Optimized (armv7)" and "valid architectures to "armv7" (removed the armv6) and in GCC4.2 preprocessing, changed teh "preprocessor Macros/Release" from "Any Architecture" to "armv7"

                                                           

                                                          I then did a build for ad-hoc and I got the same black screen as before... I didn't test all the other configs as ad-hoc and appstore are the only ones I am really concerned with at the moment. I mean, great if it works in a debug-interpreter mode for developing, but if I can't release it to the clients, it doesn't really matter in the end.

                                                           

                                                          Any other ideas? Is this the same problem that you are having?

                                                           


                                                          Coline: Thank you for that info... I was informed by the powers that be that was are targeting the iPhone 3GS and higher, sot he regular iPhone 3G is not a concern.

                                                          • 26. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                            andrea.conti Community Member

                                                            Dave, I'm sorry but it looks like it's a different problem.

                                                             

                                                            In my case compiling with plain GCC did solve the crashes.

                                                             

                                                            Perhaps you could try to narrow down the exact place of the crash on the native side by inserting NSLog(@"...") calls in the methods (the output is visible in the device console in the XCode organizer); this should at least tell you if your native code has had a chance to run before the crash or not.

                                                             

                                                            andrea

                                                            • 27. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                              DaveGallant Community Member

                                                              I tried to debug and step through the code and I found something interesting when I connected the app to the flash debugger.

                                                               

                                                              When I fire it up on the device, it actually RUNS the application constructor... but as soon as it steps out of it, the application crashes.
                                                              If I try to initialize the extension in the constructor, the application crashes as soon as it tries

                                                               

                                                              I moved all my extension code to a button click event, but it still crashes after the constructor runs.

                                                               

                                                              here is the code of my main app:

                                                              package  {

                                                                 

                                                                  import flash.display.MovieClip;

                                                                  import flash.text.TextField;

                                                                  import fl.controls.Button;

                                                                  import flash.desktop.NativeApplication;

                                                                  import flash.events.MouseEvent

                                                                  import com.extensions.EchoExtension.EchoExtension;   

                                                                 

                                                                  public class clsMain extends MovieClip {

                                                                     

                                                                      private var txtInput:TextField;

                                                                      private var txtEcho:TextField;

                                                                     

                                                                      private var btnClear:Button;

                                                                      private var btnRunTime:Button;

                                                                      private var btnEcho:Button;

                                                                     

                                                                      public function clsMain()

                                                                      {

                                                                          // constructor code

                                                                          txtInput = new TextField;

                                                                          txtInput.x = 20;

                                                                          txtInput.y = 20;

                                                                          txtInput.width = 900;

                                                                          txtInput.height = 20;

                                                                          txtInput.type = "input";

                                                                          txtInput.needsSoftKeyboard = true;

                                                                          txtInput.border = true;

                                                                          this.addChild(txtInput);

                                                                         

                                                                          txtEcho = new TextField;

                                                                          txtEcho.type = "dynamic";

                                                                          txtEcho.x = 20;

                                                                          txtEcho.y = 50;

                                                                          txtEcho.width = 900;

                                                                          txtEcho.height = 400;

                                                                          txtEcho.border = true;

                                                                          this.addChild(txtEcho);

                                                                         

                                                                          btnClear = new Button();

                                                                          btnClear.label = "Clear";

                                                                          btnClear.x = 20;

                                                                          btnClear.y = 500;

                                                                          addChild(btnClear);

                                                                         

                                                                          btnRunTime = new Button();

                                                                          btnRunTime.label = "RunTime";

                                                                          btnRunTime.x = 140;

                                                                          btnRunTime.y = 500;

                                                                          this.addChild(btnRunTime);

                                                                         

                                                                          btnEcho = new Button();

                                                                          btnEcho.label = "Echo";

                                                                          btnEcho.x = 400;

                                                                          btnEcho.y = 500;

                                                                          this.addChild(btnEcho);

                                                               

                                                                          btnEcho.addEventListener(MouseEvent.CLICK, btnEcho_Click);

                                                                          btnClear.addEventListener(MouseEvent.CLICK, btnClear_Click);

                                                                          btnRunTime.addEventListener(MouseEvent.CLICK, btnRunTime_Click);

                                                                      }

                                                                     

                                                               

                                                                      // clear the echo text field

                                                                      private function btnClear_Click(e:MouseEvent):void

                                                                      {

                                                                          txtEcho.text = "";

                                                                      }

                                                                     

                                                                      // just for testing, put the current version of air runtime into our text field so we can make sure we are running air 3.0

                                                                      private function btnRunTime_Click(e:MouseEvent):void

                                                                      {

                                                                          txtEcho.text += "Runtime version = " + NativeApplication.nativeApplication.runtimeVersion +"\n" ;

                                                                      }

                                                                     

                                                                      // call the extension, passing it whatever is in the input text field and have it return it and place it in our echo text field

                                                                      private function btnEcho_Click(e:MouseEvent):void

                                                                      {           

                                                                          // create our extension variable.

                                                                          private var ext:EchoExtension;

                                                                          try

                                                                          {

                                                                              ext = new EchoExtension();

                                                                          } catch (err:Error) {

                                                                              txtEcho.text += "Error: " + err.message +"\n" ;

                                                                          }           

                                                                          try

                                                                          {

                                                                              txtEcho.text += ext.echo(txtInput.text)+"\n" ;

                                                                          } catch (err:Error) {

                                                                              txtEcho.text += "Error: " + err.message +"\n" ;

                                                                          }

                                                                         

                                                                          ext = null;

                                                                         

                                                                      }

                                                                     

                                                                  }

                                                                 

                                                              }

                                                               

                                                               

                                                               

                                                              Now, if I build the app using -target ipa-debug-interpreter and step through, it all works... however, when I try to set INTO the line "ext = new EchoExtension();" or "txtEcho.text += ext.echo(txtInput.text)+"\n" ;" it doesn't, it just steps over... but it still works.

                                                               

                                                              I also added NSLog to start of every method in my xcode source, but it doesn't seem to make any difference. It doesn't output trace statements to the flash console (which I didn't think it would...)

                                                               

                                                              So now I am left with the question... why does building with -target ipa-debug-interpreter/-target ipa-test-interpreter work but -target ipa-debug or anything else not work?

                                                              • 28. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                                andrea.conti Community Member

                                                                The output from NSLog is visible in the device console (it's in the xcode 'organizer' window, near the 'logs' item where you go to download crash stack traces), not in the flash debugger console.

                                                                 

                                                                It's quite puzzling that your application crashes even before trying to load the extension...

                                                                 

                                                                Interpreted and compiled builds seem to behave  differently wrt bugs in native extensions. While experimenting, I managed to accidentally set a bogus number of functions (greater than actual) in the context initializer; this had no apparent ill effect in interpreted builds, but caused compiled builds to crash without fail.

                                                                 

                                                                andrea

                                                                • 29. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                                  MikeHuntington Community Member

                                                                  I'm having this same issue also. The app crashing right when ExtensionContext.createExtensionContext is called

                                                                  • 30. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                                    Saumitra Bhave Community Member

                                                                    Hi Can you check if the SWC of the native extension is linked as external?

                                                                     

                                                                    Following image can help locate and change the SWC link type.

                                                                     

                                                                    Screen shot 2011-11-05 at 1.51.10 AM.png

                                                                     

                                                                    The issue that many people face here (i.e. extension works in fast/interpreter mode and doesnt when packaged as standard mode) happens only when the SWC of the NE is not externally linked.

                                                                     

                                                                    I hope this helps.

                                                                     

                                                                    Regards,

                                                                    Saumitra Bhave

                                                                    AIR iOS

                                                                    • 31. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                                      OlaLofberg Community Member

                                                                      Hello,

                                                                       

                                                                      It seems like I've been down your road for about a week ago too. So I thought I provide some tips and also see if they can lead to

                                                                      som clarity of my current problem. (I'm also quite new on the mac/ios/extensions development, but with the complete developing chain included,

                                                                      it's one of the hardest things I've done so far). I guess that what you get when you using new technologies (like extensions) that no one had the time to test

                                                                      or tutorialize properly.

                                                                       

                                                                      Some things then:

                                                                       

                                                                      - I made a test-app in the imac just to test my library. That way I can test the lib with a much shorter cycle, with xcode debugging (NSLog an such).

                                                                        Since all FREObjects won't work this way I had to make a sub-lib that is used by the "FRE-lib" and test that sub-lib instead.

                                                                       

                                                                      - I had to use FlexBuilder4.6 (beta) to be able to compile natives (or start the flex debugger) when using ane files. But apart from the debugger I'm using

                                                                        command line mxmlc and adt so far.

                                                                       

                                                                      - The Ipad has to be on the same subnet as my dev-computer, at least to my knowledge, just to minimize problems with firewalls and such.

                                                                       

                                                                      - At some point I had to use the "http://ns.adobe.com/air/application/3.1" namespace in the app-descriptor xml file (and the extensions.xml) with the latest air sdk       (3.1.0.4720, thats what my adt reports)

                                                                       

                                                                      - I benefited greatly on comparison to the public iBattery and Vibration projects/tutorials.

                                                                       

                                                                      - I still have to figure out how to use resources (like icons) in the native library since the .a file doesn't seem to be able to pack such files. I guess I have to pack in      a resource bundle with adt, but I'm not sure.

                                                                       

                                                                      - I have only tested interpreted code, and had it working.

                                                                       

                                                                      - I have not been able to build .a files with LLVM3 or LLVM GCC 4.2. I get another format of the .a file, and cannot get any native results with them. I had to use the     plain GCC 4.2 setting for any succes. It seems like the GCC4.2 .a files starts with a 48 byte header before the "!<arch>" continues. I have not yet figured

                                                                          out what is the difference of the files or if the start of the file matters.

                                                                       

                                                                      - Finally:  I upgraded the dev-ipad to IOS5 and then I also had to go to xcode 4.2, and now I can't use the GCC4.2 anymore.

                                                                       

                                                                      I get "Unsupported compiler 'GCC 4.2' selected for architecture 'armv7'". Can anyone point me in the right direction for this?

                                                                       

                                                                      /Ola

                                                                      • 32. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                                        DaveGallant Community Member

                                                                        well, I'll be damned! That was my problem.... actually, my problem was 2 things.


                                                                        the first thing I was doing wrong was that I was not adding the SWC's to the project, but the ANE's directly.

                                                                         

                                                                        The second thing I was doing wrong was that I was not individually setting each to Link Type:External

                                                                         

                                                                        Once I replaced the ANE's with SWC's in the action script settings (I am still including the ANE files with the the -extdir FOLDER in ADT command line builder) and set each to external, I was then able to do an ad-hoc build with ADT and it fired up.

                                                                         

                                                                        Thank you everyone that replied in this thread. I hope that other people having the same issue will find this and help them too.

                                                                         

                                                                        Cheers everyone.

                                                                        • 33. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                                          andrea.conti Community Member

                                                                          @Dave: glad to know you solved your problem! Out of curiosity, were you able to use a native library compiled with llvm-gcc/clang or you just kept using gcc-4.2 ?

                                                                           

                                                                          @OlaLofberg:

                                                                           

                                                                          The problem I encountered is not with the library headers, but with the compiled objects themselves. I dug around a bit with otool -r and it seems that unlike plain GCC, the LLVM backend for ARMv7 emits a kind of relocation (type 9, HALF_DIF) which the linker in the AOT compiler cannot handle.

                                                                          Therefore, when the native library is compiled with llvm-gcc or clang, the adt -package invocation produces a number of  "ld warning: unexpected srelocation type 9" messages and the packaged application crashes on extension initialization.

                                                                           

                                                                          Given that the generation of half-word relocations for ARMv7 in LLVM cannot be turned off, and that all of the iOS native libraries in the example extensions I could find online appear to have been compiled with gcc-4.2, I'd like to know if I'm doing something wrong or if compilers using the LLVM backend are in fact not currently supported in AIR.

                                                                           

                                                                          The iPhone 5.0 SDK that comes with XCode 4.2 only has clang and llvm-gcc. Until these issues are sorted out you have to uninstall it and go back to  the 4.3 SDK (which means XCode 4.0 on Snow Leopard or 4.1 on Lion).

                                                                           

                                                                          andrea

                                                                          • 34. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                                            DaveGallant Community Member

                                                                            My alert view extension was set to GCC 4.2... I did try setting it back to LLVM GCC 4.2 and rebuild the .a file, then the ane, then the project without any errors... I put the device on the iPad and it ran without any problems.

                                                                             

                                                                            As for xcode 4.2 - I tried to update my 4.1 but the it doesn't seem to want to take... I hate macs... sheesh...

                                                                             

                                                                             

                                                                             

                                                                             

                                                                            The only problem I am having now is when I try to run 2 extensions in the same project.... one works, and the other gives me Error #3500: The extension context does not have a method with the name
                                                                            If I add a third extension, only 1 will work and the other two will give me Error #3500: The extension context does not have a method with the name when I try to call functions in them

                                                                             

                                                                            I don't know why.

                                                                            • 35. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                                              OlaLofberg Community Member

                                                                              @OlaLofberg:

                                                                               

                                                                              The problem I encountered is not with the library headers, but with the compiled objects themselves. I dug around a bit with otool -r and it seems that unlike plain GCC, the LLVM backend for ARMv7 emits a kind of relocation (type 9, HALF_DIF) which the linker in the AOT compiler cannot handle.

                                                                              Therefore, when the native library is compiled with llvm-gcc or clang, the adt -package invocation produces a number of  "ld warning: unexpected srelocation type 9" messages and the packaged application crashes on extension initialization.

                                                                               

                                                                              Given that the generation of half-word relocations for ARMv7 in LLVM cannot be turned off, and that all of the iOS native libraries in the example extensions I could find online appear to have been compiled with gcc-4.2, I'd like to know if I'm doing something wrong or if compilers using the LLVM backend are in fact not currently supported in AIR.

                                                                               

                                                                              The iPhone 5.0 SDK that comes with XCode 4.2 only has clang and llvm-gcc. Until these issues are sorted out you have to uninstall it and go back to  the 4.3 SDK (which means XCode 4.0 on Snow Leopard or 4.1 on Lion).

                                                                               

                                                                              andrea

                                                                              Hello, thanks for the reply.

                                                                               

                                                                              Yes, I recognize the "srelocation type 9".

                                                                               

                                                                              @DaveGallant:

                                                                              Are you really sure you managed to get an extension running with the LLVM GCC? No old libs or something? I know I always

                                                                              have to check the build dates and often foced to do build clean before building again.

                                                                              If you did, I guess there's still hope for me too.

                                                                               

                                                                              Or else, I can't get an adobe flex extension running on IOS5.

                                                                              (Since IOS5 needs xcode 4.2 and there's no GCC there and it's only GCC that can produce .a files that can be used

                                                                              by adt)  phew.   crap..

                                                                              • 36. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                                                andrea.conti Community Member

                                                                                Libraries built with older XCodes will work perfectly on iOS 5.

                                                                                 

                                                                                You only need to use the 5.0 SDK if you're using XCode to interactively debug an application on a device with iOS 5.

                                                                                • 37. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                                                  OlaLofberg Community Member

                                                                                  andrea.conti wrote:

                                                                                   

                                                                                  Libraries built with older XCodes will work perfectly on iOS 5.

                                                                                   

                                                                                  You only need to use the 5.0 SDK if you're using XCode to interactively debug an application on a device with iOS 5.

                                                                                   

                                                                                  Ok, thanks. I get it.

                                                                                   

                                                                                  But you can't use any library that has or uses a (sub)library which contain a "srelocation type 9" in flex native extensions then?

                                                                                   

                                                                                  If so:

                                                                                  Is this an issue for adobe adt?  Should one report it as a bug/feature somewhere maybe? Where?

                                                                                   

                                                                                  /Ola

                                                                                  • 38. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                                                    andrea.conti Community Member

                                                                                     

                                                                                    But you can't use any library that has or uses a (sub)library which contain a "srelocation type 9" in flex native extensions then?

                                                                                     

                                                                                    If so:

                                                                                    Is this an issue for adobe adt?  Should one report it as a bug/feature somewhere maybe? Where?

                                                                                     

                                                                                    /Ola

                                                                                     

                                                                                    I can't tell for sure. My (and apparently yours) experience would support that idea; however Dave seems to have managed to compile a working library with llvm-gcc without any problems.

                                                                                    That said, there is almost certainly an issue with the toolchain in AIR for iOS not being able to process valid compiled objects, probably because the version of llvm it's based on is quite old and is missing support for some recent features.

                                                                                     

                                                                                    This was also reported a couple of weeks ago in the 4.6 prerelease forum  (which seemed to me a better place to discuss a possible technical problem also affecting a beta release), but I got no answer.

                                                                                     

                                                                                    15 minutes of rummaging through the support section of the sites gave me no indication that Adobe actually has the equivalent of a public issue tracker, so I gave up.

                                                                                     

                                                                                    andrea

                                                                                    • 39. Re: Can someone tell me what I am doing wrong when creating a native extension for iPad? (Very detailed)
                                                                                      DaveGallant Community Member

                                                                                      I was using xcode 4.1 to compile my extension... if I get some time soon (as I am working on something else at the moment) I will try to take some screen shots of my settings and verify that it is indeed using llvm-gcc

                                                                                      1 2 Previous Next