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?
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...
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.?
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.
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.
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.
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?
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 ?
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.
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
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
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,
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.
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.
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
North America
Europe, Middle East and Africa
Asia Pacific