Skip navigation
Yao.He
Currently Being Moderated

updated AIR 3.4 SDK beta version to release version, package IPA failed

Aug 22, 2012 12:43 AM

Tags: #ane #air3.4

my project contains an ANE , and it works fine with previous version , today i updated sdk version to AIR3.4 sdk release , but failed to package IPA  with errors below:

 

ld: warning: -ios_version_min not specificed, assuming 4.0

Undefined symbols for architecture armv7:

  "_null", referenced from:

      _g_com_adobe_air_fre_fmap in extensionglue.o

     (maybe you meant: _sqlite3_bind_null, __ZN7avmplus20BitmapDataJPEGWriter14j

peg_null_charEP18jpeg_common_structPc , __ZN7CString16s_nullTerminatorE , __ZN7a

vmplus7AvmCore24decrementAtomRegion_nullEPii , _null_name , __ZN7avmplus20Bitmap

DataJPEGWriter9jpeg_nullEP18jpeg_common_struct , _sqlite3_result_null , __ZN7USt

ring16s_nullTerminatorE )

ld: symbol(s) not found for architecture armv7

Compilation failed while executing : ld64

 

is it a bug? or i do someting wrong?

 
Replies
  • Currently Being Moderated
    Aug 22, 2012 2:31 AM   in reply to Yao.He

    I have what may be a related problem, which is that I can't tell the app descriptor files to include my ANE anymore, meaning that it isn't included in the packaged IPA. I used to be able to specify my ANE in the <extension> node of the app descriptor file, but now, when I add the <extension> node and Publish from Flash Professional, the <extension> node is removed from the app descriptor file...

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 22, 2012 8:39 PM   in reply to Yao.He

    Same problem here. Worked with AIR SDK 3.3, but not 3.4.

     

    Undefined symbols for architecture armv7:

      "_null", referenced from:

          _g_com_adobe_air_fre_fmap in extensionglue.o

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 23, 2012 1:39 AM   in reply to Kyle 5+1

    Hi Yao/Kyle,

     

    Can you try recompiling your native library for architecture armv7? If that doesn't work out, can you please share the sources you are using to package your app at neh@adobe.com , as well as the command.?

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 23, 2012 1:18 AM   in reply to BorisHansen

    Hi Boris,

     

    If you see in the Flash Professional ActionScript Settings, under the library path tab, you will see a native extensions button. You can provide the path to the ANE there, and the tag and the ANE will be included in your packaged IPA.

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 24, 2012 2:18 AM   in reply to neh@adobe

    Hi Neh,

    Thanks for replying.

    The issue was gone. I don't know why, maybe a rebooting fixed it.

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 24, 2012 1:47 PM   in reply to Yao.He

    Hello I'm facing the same problem even after reboot. Still need some help on how to solve it. Do I really need to recompile all ane's in order to use them with air 3.4??

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 26, 2012 9:49 PM   in reply to Andrius123

    Hi Andrius,

     

    If your app gets compiled with AIR 3.3 release version, there should be no need to recompile the ANEs to use with AIR 3.4.

     

    With AIR SDK with iOS 5.1 support, using armv7 architecture is mandatory. Previously, compiling your native libraries with only armv6 used to work, but now, armv7 must also be supported.

    So, only the native extensions using armv6 architecture will be affected.

     

    If your app gets packaged with AIR 3.3, there must be some other issue. Can you share your OS, Flash Builder details and your project at: neh@adobe.com.

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 31, 2012 4:45 PM   in reply to neh@adobe

    I'm having the same problem with this ANE: https://github.com/freshplanet/ANE-Facebook which works like a charm on 3.3 but not at all in 3.4 with the same error as stated before, Tried recompiling the library with ONLY support for arm7 but it didn't work at all, I'm using mac, it happens with FB 4.6 and 4.7 Beta with any project I create.

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 2, 2012 10:32 PM   in reply to Xyrer

    Hi,

     

    We were able to figure out the issue and it will be fixed in the next release.

    For now, a possible workaround is to always use the finalizer function in the ANE. So, the following steps will need to be followed:

     

    1) In the ANE native code, a new function, with the signature of FREFinalizer() needs to be written. Refer to http://help.adobe.com/en_US/air/extensions/WSb464b1207c184b14-53a8419b 129382b5758-8000.html for the prototype. It could contain minimal code or simply a return statement also. eg.

    void minimalFinalizerFunction(void * extData)

    {

    return;

    }

     

    2) In the extension.xml, include this line, after the <initializer> tag:

    <finalizer>minimalFinalizerFunction</finalizer>

     

    3) Re-package your ANE using the new .a and extension.xml.

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 4, 2012 4:35 PM   in reply to neh@adobe

    Thanks a lot, that worked very nice

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 20, 2012 9:22 AM   in reply to neh@adobe

    I was really hoping that would work for me to.

     

    I'm using:

    AIR 3.4 to compile the ANE and the IPA.

    FB 4.7 beta to write the Actionscript Library

    Xcode to compile the native library - I added the signature minimalFinalizerFunction() then rebuilt the framework and used the 'release' version

     

    The ANE seems to compile without error using this command:

    adt -package -target ane KiipNativeExtension.ane extension.xml -swc KiipNativeExtension.swc -platform iPhone-ARM -C ios . -platform default -C default .

     

    -- here's my extension.xml --

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

        <id>com.slaphostgames.extensions.KiipNativeExtension</id>

        <versionNumber>0.0.1</versionNumber>

        <platforms>

            <platform name="iPhone-ARM">

                <applicationDeployment>

                    <nativeLibrary>libKIIPANE.a</nativeLibrary>

                    <initializer>ExtInitializer</initializer>

                    <finalizer>minimalFinalizerFunction</finalizer>

                </applicationDeployment>

            </platform>

            <platform name="default">

                <applicationDeployment/>

            </platform>

    </platforms>

    </extension>

     

     

     

    Then I republish the swf in Flash Pro CS6 (I do this by testing the movie and it pops open ADL but gives runtime errors that the ExtensionContext function is not available - I think that is expected behavior because it's in the simulator)

     

    Then finally I run this command to compile the IPA:

    adt -package -target ipa-test-interpreter -storetype pkcs12 -keystore Certificates.p12 -storepass passwd -provisioning-profile Distribution_Ad_Hoc.mobileprovision TestKiip.ipa TestKiip-app.xml TestKiip.swf -extdir . -platformsdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platfor m/Developer/SDKs/iPhoneOS6.0.sdk/

     

    -- here's my -app.xml

    <?xml version="1.0" encoding="utf-8" standalone="yes"?>

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

        <id>com.slaphostgames.TestKiip</id>

        <versionNumber>1.0</versionNumber>

        <filename>TestKiip</filename>

        <description></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>TestKiip</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></copyright>

        <initialWindow>

            <content>TestKiip.swf</content>

            <systemChrome>standard</systemChrome>

            <transparent>false</transparent>

            <visible>true</visible>

            <fullScreen>false</fullScreen>

            <autoOrients>false</autoOrients>

            <aspectRatio>portrait</aspectRatio>

            <renderMode>auto</renderMode>

        </initialWindow>

        <customUpdateUI>false</customUpdateUI>

        <allowBrowserInvocation>false</allowBrowserInvocation>

        <icon></icon>

        <iPhone>

            <requestedDisplayResolution>standard</requestedDisplayResolution>

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

            <!--

    <Entitlements>

              <![CDATA[<key>keychain-access-groups</key><array><string>...</st ring></array>]]>

    </Entitlements>

    -->

        </iPhone>

        <extensions>

            <extensionID>com.slaphostgames.extensions.KiipNativeExtension</extens ionID>

        </extensions>

    </application>

     

     

     

     

    I get this error:

    ld: warning: -ios_version_min not specificed, assuming 4.0

    ld: duplicate symbol _OBJC_CLASS_$_FIXCATEGORYBUGKP_ASIHTTPRequest in /var/folders/2g/4jk4pqbs28v13vh9scbj1cq40000gn/T/a8ede4b9-22d3-4d0f-8 faf-2eafcacffd42/libcom.slaphostgames.extensions.KiipNativeExtension.a (KP_ASIHTTPRequest+OAuth.o) and /var/folders/2g/4jk4pqbs28v13vh9scbj1cq40000gn/T/a8ede4b9-22d3-4d0f-8 faf-2eafcacffd42/libcom.slaphostgames.extensions.KiipNativeExtension.a (KP_ASIHTTPRequest+OAuth.o) for architecture armv7

    Compilation failed while executing : ld64

     

    Any thoughts?

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 20, 2012 9:36 AM   in reply to jdhicks

    The above ld error hints that there might be a problem in the native library you created in Xcode.

    Could you please just try to link the native library you created in a sample native app in Xcode.

     

    Also would it be possible for you to share the native library with sources at dsingh@adobe.com ?

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 20, 2012 10:34 AM   in reply to Damanjit Singh

    Thank you, I put everything into a GitHub repo. I hope this gives you the insight you need. Thanks!

     

    https://github.com/jeremyhicks/KiipNativeExtension

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 20, 2012 12:39 PM   in reply to jdhicks

    Seems that in your KIIPANE.xcodeproj, you have added libKiip.a as a dependency multiple times, which result in adding files in libKiip.a to libKIIPANE.a multiple times, thus the duplicate symbol errors.

    You might need to correct your KIIPANE.xcodeproj to link libKiip.a only once.

    Let me know if this corrects your problem.

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 20, 2012 2:09 PM   in reply to Damanjit Singh

    Maybe I don't fully understand where to change the setting.

     

    In the Build Settings for the project I removed from 'Other Linker Flags' the -lKiip flag

     

    (updated GitHub to show the change)

     

    I got the same error:

     

    ld: warning: -ios_version_min not specificed, assuming 4.0

    ld: duplicate symbol _OBJC_CLASS_$_FIXCATEGORYBUGKP_ASIHTTPRequest in /var/folders/2g/4jk4pqbs28v13vh9scbj1cq40000gn/T/84fe9ab0-7a7f-469a-b 80b-96cdbf0e6e09/libcom.slaphostgames.extensions.KiipNativeExtension.a (KP_ASIHTTPRequest+OAuth.o) and /var/folders/2g/4jk4pqbs28v13vh9scbj1cq40000gn/T/84fe9ab0-7a7f-469a-b 80b-96cdbf0e6e09/libcom.slaphostgames.extensions.KiipNativeExtension.a (KP_ASIHTTPRequest+OAuth.o) for architecture armv7

    Compilation failed while executing : ld64

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 21, 2012 12:35 AM   in reply to jdhicks

    Apart from removing this linker flag, you need to remove the multiple link entries as well.

    Go to "Build Phases" -> "Link Binary with Libraries".

    In your project, you have mentioned libKiip.a 3 (three) times there. You need to mention libKiip.a just once there.

    I am sure this should fix your problem.

     

    Thanks,

    Daman

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 22, 2012 12:54 AM   in reply to Damanjit Singh

    Sadly, no.

     

    I made sure the only "Link Binary with Libraries" was the 'libKiip.a' for the iphoneos.

     

    I clicked 'Build for Archive' to get the release version of my libKIIPANE.a, then I copied it to the ios build path and recompiled the ANE, tested the Flash Movie (targeted for AIR 3.4.0.2540 for iOS), get the runtime error but a new .swf is created.

     

    Then I attempt to package the ipa with the same command as before. It's the exact same error (the paths are different)

     

    I also tried to compile with AIR 3.2 and that output a lot more errors.

     

    Thanks,

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 26, 2012 9:45 PM   in reply to neh@adobe

    Try using the AIR 3.5 beta, at: http://labs.adobe.com/technologies/flashplatformruntimes/air3-5/

    Now, you can use an ANE without a finalizer as well.

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 26, 2012 11:14 PM   in reply to neh@adobe

    Thanks, I'm really excited about it.

     

    I used the 3.5 sdk to package the ANE then republished the .swf file and executed the adt packager but I still get the same result:

     

    ld: warning: -ios_version_min not specificed, assuming 4.0

    ld: duplicate symbol OBJCCLASS_$_KPWebPageLoader in /var/folders/0j/dc0gtbkd2_v6ccp12mf1pbr00000gn/T/8d95228f-9117-4850-b 28c-9bd4a6389ee7/libcom.slaphostgames.extensions.KiipNativeExtension.a (KPWebPageLoader.o) and /Users/jeremy/Projects/ane/KiipNativeExtension/KIIPXCode/KIIP/Kiip-v1 .0.18/iphoneos/libKiip.a(KPWebPageLoader.o) for architecture armv7

    Compilation failed while executing : ld64

     

     

    My project is updated on github if you like to see. I tried different variations of the 'Other Linker Flags' and 'Link Binary with Libraries' options. They all lead to the same output. If there is no reference to -lKiip then the output is a list of undefined symbols. But including one reference to -lKiip either in the Xcode project or in the iosoptions.xml when I package the .ane will produce the above output.

     

    I didn't alter anything with the finalizer, that seems unrelated.

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 27, 2012 11:34 PM   in reply to jdhicks

    Hi jdhicks,

     

    I went through your project, and there are some corrections you will need to make in your iosoptions.xml file.

     

    1) Remove the extraneous lines:

    <option>-L /Users/jeremy/Projects/ane/KiipNativeExtension/KIIPXCode/KIIP/Kiip-v1.0.18/iphoneos</option>

    <option>-lKiip</option>

    2) Correct the line: <option>-libxml2</option> to:

    <option>-lxml2</option>

    You are getting the undefined symbols error due to this mistake.

     

    Basically, the only linker option you need to include in your iosoptions.xml file is:

    <option>-lxml2</option>

     

    The other libraries, including libz.a are automatically linked to by the runtime.

     

    Hope this helps.

    Neha

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 28, 2012 1:27 AM   in reply to neh@adobe

    YES! Thank you!

     

    Everything compiled great! I have other issues but that's with the actual KIIP library.

     

    I do still get the warning:

    ld: warning: -ios_version_min not specificed, assuming 4.0

     

    but it doesn't seem to get in the way.

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 28, 2012 1:58 AM   in reply to jdhicks

    This warning can be removed using the ios_version_min tag in your iosoptions.xml file. You can specify the minimum iOS SDK version your app supports, eg. for 4.3, you may use:

     

    <option>-ios_version_min=4.3</option>

     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points