Symbol(s) not found for architecture armv7 - Flash Builder for Windows / iOS Native Extension - actionscript-3

I'm attempting to run the example project for this Adobe Native Extension 'SongPickerANE' from Flash Builder on Windows onto an iOS device. I've run it successfully on the same device (and iOS Simulator) from Flash Builder on my Mac with AIR SDK 3.4, but it failed to run with 3.4 on Windows, as it couldn't get access to the required iOS SDK (6.1).
So, I've updated my AIR SDK on my windows machine, first to 3.5, and now to the current version 3.9, which seemed to sort out the iOS SDK issues I was having, but both failed to run with the following error:
java.lang.Exception:
Undefined symbols for architecture armv7:
"_objc_setProperty_nonatomic", referenced from:
-[SongPickerHelper setPickedItem:] in libcom.newpixel.air.nativeextensions.SongPicker.a(SongPickerHelper.o)
ld: symbol(s) not found for architecture armv7
Compilation failed while executing : ld64
From what I remember of it in the dim, distant past of my iOS development, this is some sort of XCode linking / Build Settings / Phases error? So to fix it, will I have to edit and recompile the ANE, or is there anything I can set in the Flash Builder project which uses the ANE to fix it?
If it requires recompiling the ANE, any tips / advice on where to start would be appreciated, as I've so far managed to avoid having anything to do with them, and I do find them slightly terrifying.
Many thanks in advance.

Related

AIR Native Extension issue

I built an AIR native extension with following setup:
Visual studio 2005 for building my dll
Flash CS6 IDE with AIR SDK 3.2 to create SWC from my AS3 source
The namespace version of my ANE is 33.1
ADT (AIR SDK 33.1)
I tested the ANE with FlashDevelop 5.3.3.1 and the ANE works as expected on a machine that I use for development. However, when I test the same ANE in FlashDevelop on a different machine, the AIR can't find a necessary method in the native side implementation (Error code #3500). I am using the same version of FlashDevelop with same AIR SDK (33.1) in both machines.
It seems that for some reason AIR could not load the dll in second machine (but does so in my development machine), and I am not sure why. Any help would be highly appreciated.
Thank you.
You are probably missing some of the dependency dlls, most likely part of the vc++ redistributable package or potentially .net if you are using any of that functionality.
Try to install the VC++ redist on your test machine:
https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0

Build wp8 app using ionic

I am creating a hybrid app using ionic framework.I have successfully created build for android and ios. But when I am creating app for wp8.I got error:
Building project: D:/window/platforms/wp8/window.sln
Configuration : debug
Platform : any cpu
Building the projects in this solution one at a time. To enable parallel build,
please add the "/m" switch.
D:\window\platforms\wp8\window.csproj(211,5): error MSB4019: The imported projec
t "C:\Program Files (x86)\MSBuild\Microsoft\WindowsPhone\v8.0\Microsoft.WindowsP
hone.v8.0.Overrides.targets" was not found. Confirm that the path in the <Import
> declaration is correct, and that the file exists on disk.
ERROR: Error code 1 for command: C:\Program Files (x86)\MSBuild\14.0\bin\msbuild
with args: D:/window/platforms/wp8/window.sln,/clp:NoSummary;NoItemAndPropertyL
ist;Verbosity=minimal,/nologo,/p:Configuration=debug,/p:Platform=any cpu
Error: cmd: Command failed with exit code 2
Please help
I think WP8 is not supported, only Windows 10. Look here:
"We will not be supporting WP8.
We may support W10 with V1, but we will definitely support W10 with V2."
and
For many, this is probably not the Windows Phone 8 update you were hoping for, but we just couldn’t get Ionic apps to perform well enough on that platform to officially support it. With all the changes and updates in the Windows/Edge ecosystem over the last few months, it made sense to just wait and see how it all played out.
https://forum.ionicframework.com/t/does-ionic-supports-windows-phone-8/29233/22
https://channel9.msdn.com/Blogs/One-Dev-Minute/Ionic-apps-on-Windows-10
http://blog.ionic.io/announcing-ionic-1-2/

How to disable simulator build in Xcode 7

I am using third-party libraries(.a) that do not support simulator. When I build I seem to be getting link errors in I386 code. How can I disable building for the 386 architecture?
Set Build Settings -> Architectures -> Supported Platforms to "iphoneos" for the project (the default is "iOS", which includes both real hardware and the simulator).
You might have to limit the supported architectures too to match those shipped from the 3rd party.
I had encountered this problem when I was using a library that was not written to support running on a simulator, It resulted in a lot of link errors stating that symbols were not recognized for i386 architecture. I discovered that if I selected an attached ios device instead of the simulator, the linker errors went away.

I'm getting build errors when using MvxEventToCommand within a WP8 project

I'm using the MvvmCross framework to create a windows phone 8 project.
In my WP8 project within the xaml I have the following:
<i:Interaction.Triggers >
<i:EventTrigger EventName="Tap">
<Commands:MvxEventToCommand Command="{Binding OnItemTappedCommand}" />
</i:EventTrigger >
</i:Interaction.Triggers>
My namespaces are as follows:
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
and
xmlns:Commands="clr-namespace:Cirrious.MvvmCross.WindowsPhone.Commands;assembly=Cirrious.MvvmCross.WindowsPhone"
When I attempt to build I get the error:
Cannot resolve dependency to assembly 'System.Windows.Interactivity, Version=3.8.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.
Looking in ILSpy I can see that Cirrious.MvvmCross.WindowsPhone.dll references this dll but I only have version 3.9.5.0 available in my assembly references list within my project.
I've tried adding an assembly redirect in my app.config but I think that's more for runtime resolution then for build errors.
What's the best way to resolve this issue?
Thanks
-- EDIT --
I've managed to resolve this issue by finding a WP7.1 version of the System.WindowsInteractive.dll which is version 3.8.5.0. My project is definitely targeting the Windows 8.0 phone OS.
Could this be a problem with the Nuget packaging of MVVMCross?
Just to answer this question since I came across this problem today...
I had a fresh install of Windows 8.1 and the Windows Phone 8 SDK. My sln would build but when MvvmCross resolved the plugins on start-up it would crash with a ReflectionLoadTypeException - the LoaderExceptions property contained a single entry - it was unable to find System.Windows.Interactivity, despite being referenced from the extensions list in the reference manager for the project.
The solution was to install the Windows Phone 7 SDK and grab the Windows Phone 7 version from C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\Windows Phone\v7.1\Libraries\System.Windows.Interactivity.dll.

How to publish an app with Air 3.0?

I have overlaid Air 3.0 over the flex sdk. I have targeted swf version 13 and included 3.0 in the header of my xml file, is there anything else i need to do to get my app published with air 3.0.
Also is there a way to check what version of air the app has been published with once it has been published?
I am using flash builder 4.5 and osx.
You can get the AIR version at runtime using NativeApplication.nativeApplication.runtimeVersion
Edit:
Also remember that there are different SDKs for Windows and for OSX. The Windows SDK does not work on OSX and vice-versa. Attempting to do so results in a runtime error.
OS X doesn't really matter.
Your application descriptor has changed in format since AIR2.0 The easiest way to check this is create a new AIR 3 project and check the app descriptor xml for that application, and compare it to yours. You will easily find out the differences.
The AIR runtime version (as lukevanin said) can be read from
NativeApplication.nativeApplication.runtimeVersion
Then you can publish in the same way as before (export release build -> select certificates, etc)