Skip to main content
Inspiring
December 17, 2014
Question

Error creating arm64 compatible ANEs

  • December 17, 2014
  • 12 replies
  • 16765 views

I'm trying to create ANEs with arm64 support with no success so far.

My native libraries are compiled for both armv7 and arm64 since lipo -info confirms so, however ADT still outputs:

"Error: Apple App Store allows only universal applications. This ANE must have a universal iOS binary. Please change build settings in Xcode project to "Standard Architecture" to create universal library."

Do I need to change something in my ADT commandline? I tried several ANEs and had problems with all of them. Could anyone provide further information or tips?

This topic has been closed for replies.

12 replies

Participating Frequently
August 11, 2015

PROBLEM SOLVED!

I tried everything in XCode from changing the architectures to changing everything else in the build configuration. All pretty much failed miserably. I even tried matching other ANE frameworks line by line but i was still getting "Error: Apple App Store allows only universal applications. *_*.a is not a universal binary. Please change build settings in Xcode project to Standard Architecture to create universal library/framework.

I was using Air SDK 18 which i thought should work fine after reading the comments of everybody trying Air SDK 16 & 17.

Finally I changed my Air SDK from Air 18.0.0.(some lower number) to Air 18.0.0.199 and it worked! So i guess, don't bother changing a bunch of settings in XCode the problem just might be the current version of the Air SDK you are using.

Hope this helps!

_flashman_
Inspiring
January 21, 2016

Thank you Xpius Sr. Developer

I was having the same problem. Using SDK 4.14.1 + AIR19 it wasn't working.

I tried SDK 4.13 + AIR 16 Beta and it worked

Ollie Edge
Inspiring
April 27, 2015

Just wanted to clear things up, if anyone else is still having problems with this. You don't have to do anything other than compiling for all architectures, which is a setting that is enabled when built in release mode by default I believe, but you can enable it in debug mode as well by doing changing this setting:

Hope that clears things up for people.

Inspiring
February 25, 2015

I finally had to rewrite the full iOS code and use last frameworks methods to get it working.

BTW, there was an updated of FP CC 2014 fixing the problem Flash Professional CC February 2015 Update – Available now | Adobe Flash Professional Team Blog "

  • Support for AIR 16/Flash Player 16 – This update will add the ability to publish 64 bit AIR apps for iOS 8.x in addition to support for Flash Player 16

"

Inspiring
February 9, 2015

I was having the non-universal message when building up my ane but I fixed it by setting the ios Target to 6.1 and setting manually the architectures to armv7 armv7s and arm64 (using xCode 6.1 and air sdk 16 build 272) . Now I can compile the ANE but when I tried to test it on Flash Pro I am getting this error:

I have tried downloading last AIR SDK 17 but not luck, any ideas? Btw I have confirmed with lipo -info that the library is fat

jadams602
Inspiring
February 9, 2015

@Delcasda

Did you try _falcon0's suggestions above about clearing your cache files for Flash IDE? Sounds like you are experiencing what they are describing.

Inspiring
February 11, 2015

I have cleaned the cache, created a new project and even tried the ANE using Flex on Flash Builder and still getting the same error

Lorenzo Nuvoletta
Inspiring
February 1, 2015

If you are having this issue, this is how you can solve:

wesa17224201
Participant
February 1, 2015

I have tried that before, and again just now, and it doesn't change anything. I still get the same error

wesa17224201
Participant
January 31, 2015

I am also having this issue. I am using AIR SDK 16.0.0.272. my build worked fine with AIR SDK 4.

this is the result of my adt command

"Error: Apple App Store allows only universal applications. "lib-ane.a" is not a universal binary. Please change build settings in Xcode project to "Standard Architecture" to create universal library/framework."


I have ensured that my static .a ios native extension lib is compiled with armv7 and arm64 support using lipo -info : "Architectures in the fat file: lib-ane.a are: armv7 arm64"


and I have tried downloading a static library xcode project from https://github.com/freshplanet/ANE-Crashlytics- but that too, when built for armv7 and arm64, still gives the error about universal applications and changing your build settings.

I think that the error message is misleading because clearly my binary is built for 32 and 64 bit, but I am at a loss for what the reason is.

@superduperjmas, I'm a little confused by your findings - what is this ane workspace you create and how does coping the bin/adt and lib/adt.jar files there have any effect on the adt command that your run? are you saying that you don't run adt from

"/Applications/Adobe Flash Builder 4.7/eclipse/plugins/com.adobe.flash.compiler_4.7.0.349722/AIRSDK/bin/adt"

but instead from some other directory? can you tell me exactly what your build folder structure looks like and what your adt command is?

thanks

Participating Frequently
January 30, 2015

The issue has been resolved for myself as well but it had nothing to do with XCode at all.

Prior to AIR 16 compiling an ane required only bin/adt and lib/adt.jar. Since 3.8 I have been creating my anes by copying those 2 folder and files to a "ane workspace". Now with AIR16 adt.jar has a new dependency in the lib folder (I haven't yet looked for which one(s)) and if that dependency is not present the same error is thrown regardless of the library.a state.

I always had the feeling that AIR16 had a underlining change that prevented me from compiling and I was correct in that assumption.

wesa17224201
Participant
February 1, 2015

I have also downloaded this project (freshplanet/ANE-DeviceId · GitHub) directly as-is, updated the build.config with my flex sdk and android sdk paths, and run the ant build script. I still get the same message

Error: Apple App Store allows only universal applications. "libAirDeviceId.a" is not a universal binary. Please change build settings in Xcode project to "Standard Architecture" to create universal library/framework.


I have tried running the adt command on my windows PC with the various iOS ane's, and I also get the same message. This has to be a problem with the flex SDK currently provided as it will not function for me on any project or any machine.


What version do you all have? I am using 16.0.0.272


wesa17224201
Participant
February 1, 2015

Well, I have got past this error and have been able to once again build my ANE files. I have also been able to deploy to an iPhone 6+.

The problem was with the current release build of adobe's air SDK. 16.0.0.272 does not work. I had to download the beta version 16.0.0.283 from Download Adobe AIR 16 Beta - Adobe Labs - once installing this and running the adt command from there it started working, with all my projects.

I hope this issue is resolved with the next release of the air SDK.

Inspiring
January 27, 2015

Just a note regarding a different explanation, as I've had the same issue just now after building 2 ANE's for 64-bit fine.

If building with Flash CS IDE, make sure to clean the cache. Its likely you've been using the same (non-64bit) ANE in the past. Flash CS IDE loves to cache - in my case it apparently cached the library ".a" file. No matter the new ".a" was contained in a differently named ANE, which itself was in a different location, the IDE was still trying to use the old ".a" file from the cache.

So while lipo -info said "armv7 arm64" and the ANE built without issues, on the IDE level it refused to build because the ".a" was not "universal".

Clear out the Temp in your Documents and Settings/Local Settings/Temp/ if on Windows.

Participating Frequently
January 19, 2015

Growing desperate. Can any of the person able to compile an universal ane share an empty project with the community so we can investigate further. The complete silence of Adobe staff on the subject means they have no clue what's going on. In all cases the .a library is universal but some can compile their ane, some can't. I did post my files which is a simple Alert ane working perfectly under AIR 15 and unable to compile under AIR 16. Can anyone give it a try and see if they can compile it?

At this point an empty project (an XCode project with no functionality) compile and generates ane under AIR 15 then integrate and runs perfectly under an AIR 15 ios project. Exact same project compiled as universal and checked under lipo (both architectures present) with swc build under AIR 16 and swf version forced to 27 does not compile under AIR 16 with the same stubborn error (not an universal library) on my 2 (recent) macs and PCs as well.

There's either a missing step that has to be performed under AIR 16 and not under any other versions or what AIR 16 calls an universal library is not a typical universal library generated by XCode and something else has to be done with that library in order for AIR 16 to recognize it. Either way the error thrown is misleading and is wasting the time of too many developer.

jadams602
Inspiring
January 19, 2015

freshplanet recently updated most of their iOS ANEs to support 64-bit which you can grab on github:

Freshplanet · GitHub

I actually follow freshplanet's build style as well, using an ant build.xml to completely build all XCode and AS3 code and combine into ANE all from a single ant build script.

I had zero issues making my 64-bit ANEs using AIR 16 and this ant build style.

Participating Frequently
January 19, 2015

Thx, for the most part they only posted an updated ane, no updated .a or build script so I still have nothing to compare to. My anes are built the same way, I tried manually too and using ANEPacker, always coming out with same result. Thx anyway.

Inspiring
December 25, 2014

I have the same problem, I've rebuild my .a file with xcode with enabled arm64, but adt error is the same -  "Please change build settings in Xcode project to "Standard archinecture". ASC 1. Now i'll try with asc 2.

Inspiring
December 25, 2014

Looks like asc 2 ignores architecture error. ASC 2 compile my .ane successfully, but my air project shows error anyway. I've check source .a file with LIPO command and see that arm64 was disabled.

I find error in my xcode project. When i've fix it - all works fine with flex compiler.

Inspiring
December 25, 2014

So your source native library was actually not compiled for arm64?