I sent an app yesterday for review, with no problem. I then realized that I had a very little fix to do (changing the max zoom level of a map from 19 to 18, nothing else), so I removed the binary from iTunes Connect, and tried to resubmit.
Now I'm having this warning :
I don't understand why, as my architectures are :
architectures : armv7
valid architectures : armv6, armv7, armv7s, arm64
The app runs fine in the simulator. If I try to use the standard architectures (armv7, arm64) as recommended in the warning, then the app won't build and I get :
Undefined symbols for architecture x86_64
ld: symbol(s) not found for architecture x86_64
I'm using the lib route-me, and I set the same architecture settings.
Use "Standard architectures" like this:
Architecture: "Standard architectures" arm7, arm64
Valid Architectures: "arm64" , armv7...
Build Active Architecture Only - NO (specially... if your connected device is not arm64 compatible)
like this:
Additionally, unplugging iphones and ipads from the mac has been known to help, especially if they are 32-bit versions.
After confirming the correct architectures, make sure your device is NOT connected to your computer when ARCHIVING the final build to submit to the App Store.
The reason this warning appears is because the DEVICE you have connected is probably not arm64 compatible.
As Tony wrote, it's important to have in both lines those settings.
Since my (and obviously your) project was created yet before arm64 was added to standard, it is not reflected in "Valid Architectures" even if it is shown as Standard.
What I did:
I went to Project (vs. Target) configuration
Typed "arm64" in the Valid Architectures (it's automatically reflected in targets and schemas
After clean/build I even get some warnings about improper conversion of float to CGFloat, etc., so the settings obviously applied.
The validation warning disappeared too!
Unplug your physical device from Mac. In XCode on device list choose iOS Device and create Archive again. It worked for me.
Today I solve that problem with the following steps:
Building Settings:
Architectures: Standard architectures(arm7,arm64) - $(ARCH_STANDARD)
Valid Architectures: armv7 armv7s arm64
Clean and build your app with the iPhone connected
Disconnect your iPhone and check the top bar if is in "iOS Device"
Archive
Validate and Submit
Just Create a New Project using latest xCode version and find the Build settings. The new project created using latest version have 64 support by default.
Okay this was insane.
I tried every single answer. But it worked only when I placed arm64 before armv7 and armv7s in Valid Architectures.
P.S. : xcode version : 7.2
I solved the problem by changing,
Architectures: arm7,arm64
Valid architecture: arm7,arm64
Build active architecture only : Yes
I submitted success by config as the image:
(Archived with real device)
Got rid of every warning. Went through everything over and over. Found the one word answer here above.
"Build Active Architecture Only - NO (specially... if your connected device is not arm64 compatible)"
My iPad is not 64 bit. Put in NO for Build Active Architecture and my submission worked!
Change your iOS development target to at least 5.1.1 or alternatively delete the standard architectures setting and re-apply it. You might have seen a warning that arm64 is not compatible with your build target. On the overview page, check both the build and target "deployment target" settings. In my case, the target was 6.0, but the project was 5.0.
Also, check "Valid Architectures" in both your target and your project. I had the right settings on the project but not on the target. After this, it worked for me.
Switch between project/target on the overview page in the top left corner of the box.
Please check Build Active Architecture option. Set it to NO.
It works for me.
Related
After migrating my framework to Xcode 10 beta (10L176w) I started to get warnings like:
Mapping architecture arm64 to x86_64. Ensure that this target's Architectures and Valid Architectures build settings are configured correctly for the iOS Simulator platform.
... and:
Mapping architecture armv7 to i386. Ensure that this target's Architectures and Valid Architectures build settings are configured correctly for the iOS Simulator platform.
Despite these warnings the build and the unit tests all pass Ok. I'm using Swift 4.2.
Still, what are these warnings about?
Go to Build Settings and do as shown below
I was able to silence these warnings by changing my Valid Architectures setting to $(ARCHS_STANDARD) which matches my Architectures setting as well.
Oddly, this displayed as armv7 arm64 (in comparison to the default setting of armv7 armv7s arm64), but setting it to that value manually still caused the warnings. Not sure what the significance of that is, but I haven't noticed any problems in my testing yet.
You likely have the VALID_ARCHS ("Valid Architectures") build setting overridden, either for the target or for its project. This is a build setting that should get its value automatically based on which run destination you're building for. When you figure out where this override is coming from (the build setting will display in bold when overridden), select it and hit the delete key to restore it to the default value.
For the TARGET which report warnings, Change the "Valid Architecture" setting to:
$(VALID_ARCHS)
x86_64
Similar to other answers, I was able to remove the warning by changing $(VALID_ARCHS) (Valid Architectures) to $(ARCHS_STANDARD). From there, I cleared all Derived Data and restarted Xcode 10.0. This made the warning go away completely. Deleting everything from Valid Architectures just made a different warning appear ("No valid architectures found").
I am also facing the same problem. For resolution, I have just changed the build system from Standard to Legacy and that resolved the issue.
The solution is simpler: in Valid Architectures just replace arm64 with x86_64.
Had similar issue and the following three warnings in my project:
My Valid Archtectures originally were
Replacing:
armv7 with i386,
armv7s with i386,
and, arm64 with x86_64
(as mentioned in the Warnings) was my solution.
The result in the Valid Architecture setting was:
After the replacements my three warnings above disappeared.
More profound info about the Architectures can be found here:
https://docs.elementscompiler.com/Platforms/Cocoa/CpuArchitectures/
I think the formulation of this warning in Xcode is a bit confusion.
If you are facing problem in Flutter:
Delete the
Podfile,
Podfile.lock,
Pods folder,
Runner.xcworkspace, Flutter.framework.
Run flutter clean.
Run flutter build ios.
I was seeing this warning when I tried to compile code for both iOS and Mac OS.
I was able to get around it by first doing what Hassan Taleb suggested in his answer: clear out the architectures so that only valid iPhone architectures are in there. And then finally, to maintain being able to build for Mac OS, wave your mouse over the Valid Architectures so that a plus button appears. Click that and then you can add separate settings for different platforms as needed, including different CPU architectures. For macOS SDK, I can set my Valid Architectures to just x86_64 if I want.
I found the easiest way to resolve this was to open the project in my text editor, then find and delete all VALID_ARCHS lines.
I have seen the same warning as I building my framework.
After a while noticed these valid architecture values vary depending on the type of devices regardless the values in build settings.
Real devices-> arm64
Simulator devices ->x86-64
Go to Target > Build Settings > Architectures >Excluded Architectures
(x84_64) .. It is used to Run a Real device And Use (arm64) to Run a Simulator For (Any SDK).
If selected Excluded Architectures > Debug and Release
To solve this problem virtually and radically, you have to choose ( Any IOS Simulator SDK) instead of (Any SDK) and set value (arm64) In this case, you can make a build and a run together without having to change the values each time.
if your [build Settings] is armv7 armv7s arm64, please delete armv7s. the warning will be cancelled.
Urban Airship provides an iOS 8+ framework called AirshipKit.framework. Linking and embedding this framework works fine in both the simulator and device. However, when I go to archive the binary and validate it, iTunes Connect says the app contains code for unsupported architectures i386 and x86_64. How can I get Xcode to remove support for these architectures from the archived app?
Under Build Settings I have:
Architectures: Standard architectures (armv7, armv7s)
Build Active Architecture Only: Yes for debug, No for release
Supported Platforms: iOS
Valid Architectures: arm64 armv7 armv7s
You could use lipo to extract the arm code to a new file and submit that one, but it sounds like something is very wrong - you shouldn't need to do anything like this to submit, it might be a bug in Xcode. Which version are you using? Did any other settings in the build get changed (the text would be bold if the build setting is modified from the default)?
There is a new version of the Urban Airship SDK, 5.0.3
Are you still seeing this issue when building with the new Framework version?
I struggled with the same problem for a couple of days until I realized my own idiocy. My app is set to support 7.0+ and yet I still had the Airship.framework, which as the UA (Urban Airship) documentation strictly recommends, was only to be used for 8.0 +
I removed the framework and the validation came back success!
So if your app is inclusive of 7.0 or lower, then all you need is the libUAirship-5+ library. As #aschuman suggested, there is a new one available (libUAirship-5.0.3.a)
I'm getting this error whenever I build in XCode 6 beta 4. It seems to be making my app insanely slow.
Warning: Error creating LLDB target at path
'/***/***/***/***.app'- using an empty LLDB target which
can cause slow memory reads from remote devices.
What exactly does this mean and how do I fix it?
Thanks in advance!
Did you use Architectures=$(ARCHS_STANDARD_32_BIT) and run your app on a 64 bit device? (iPhone 5S or iPhone 5S simulator)
Apple seems to be stricter with apps which don't support 64bit. So if there is no specific reason, I think it's better to include arm64 in your build architecture
NOTE ABOUT 64-BIT ARCHITECTURE
An app extension target must include the arm64 architecture in its Architectures build settings or it will be rejected by the App Store. Xcode includes this architecture with its “Standard architectures” setting when you create a new app extension target.
If your containing app target links to an embedded framework, the app must also include the arm64 architecture or it will be rejected by the App Store.
For more information about 64-bit development, see 64-Bit Transition Guide for Cocoa Touch or 64-Bit Transition Guide for Cocoa, depending on your target platform.
Source: https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/ExtensionCreation.html#//apple_ref/doc/uid/TP40014214-CH5-SW1
This warning is solved by changing Build Settings :
Select Project -> Build Settings
Change 'Architectures' to 'Standard architectures (armv7, arm64) - $(ARCHS_STANDARD)'
This will prompt an alert stating iOS 5.1.1 and above are supported. Click 'Change Deployment Target to 5.1.1'
Repeat steps for Target (if not changed automatically)
Also, this is preferred build setting since Apple is forcing developers to build apps on 64 but architecture. Apple document Link
Double Check Build Settings => Valid Architectures for both Project and Target.
Mine used to say: arm64 armv7 i386 (The one causing the error was i386)
I replaced it to : arm64 armv7
I hope that helps.
In Xcode 6.4 , Swift 1.2. I had to edit both the Project and Target to the correct arm verisons (arm64, armv7 and armv7s). Take a look:
My "Architectures" included arm64 but I had to add arm64 to "Valid Architectures" in the target.
In my case I had to change Build Active Architecture Only to YES for the Debug configuration.
I am using Xcode 4.5.2 and have a project which cannot be compiled for an iPhone running iOS 6.0.1 though other projects compile fine with the same settings as shown in the picture below.
Any ideas on how to solve this?
You're probably using some third party lib that doesn't yet support armv7s architecture. You can just remove armv7s from your settings. Your app will still be able to run on iPhone 5 although it might not be taking full advantage of the new architecture.
If on XCODE 12 just goto Build Settings search for VALID_ARCHS. Under the User-Defined section select Valid Architectures and click Delete.
Set valid architecture for iOs simulator to armv7 and armv7s.( simulators are 32 bit ).
for device set to arm64 (64 bit all new ios device).
It's been a while since I've had to adjust project build settings. After upgrading to a recent SDK I'm having trouble building my ad hoc distribution configuration.
Build generates this warning and error:
warning: iPhone apps should include an armv6 architecture (current
ARCHS = "armv7")
iPhone/iPod Touch: application executable is missing a required
architecture. At least one of the following architecture(s) must be
present: armv6 (-19033)
However in my project I thought I had things set correctly:
Architectures is: Standard (armv6 armv7)
Base SDK: Latest iOS (currently set to iOS 4.2)
Valid Architectures: armv6 armv7
I have cleaned all targets.
I appreciate any tips.
If using Xcode 4.2 or higher, try the following:
Click your Project name (in the left column), followed by the Target:
Click the 'Build Settings' tab (in the right column):
Click the 'Release' or 'Distribution' row under 'Architectures', and choose 'Other...':
Double click the highlighted row named '$(ARCHS_STANDARD_32_BIT)' in the popover that appears, and replace it by typing 'armv6'. Then add a new row with the plus button in the bottom left of the popover, and type 'armv7', then click Done:
Update: you should add armv7s to target the iPhone 5 as well. (And drop armv6 if building with Xcode 4.5 or higher, which no longer supports armv6.)
That's it. You should now be able to build/archive without generating errors.
If it still doesn't work, see this answer from justinxreese, which suggests adding entries for armv6 and armv7 under "Required Device Capabilities" in your info.plist file.
If you uncheck "Build Active Architecture Only", then it will build all the valid architectures.
Update: This is no longer applicable as of Xcode 4 - follow Nick's instructions for Xcode 4 and later.
I had this problem even after following the accepted answer and found the following to work:
In your Info.plist, add an entry for Required Device Capabilities. This should be an array and will have two entries.
Item 0 : armv6
Item 1 : armv7
It will look like this:
In addition to Nick's answer about Xcode 4.2, you may also need to review your info.plist file. It seems as if new projects started in Xcode 4.2 by default specify 'armv7' in the 'Required Device Capabilities'. You'll need to remove this if wanting to support devices that run armv6 (e.g. the iPhone 3G).
Delete armv7 from the 'Required device capabilities' in yourProjectName-Info.plist
An ios 6 update
Changes in Xcode 4.5.x for ios 6
Xcode 4.5.x (and later) does not support generating armv6 binaries.
Now includes iPhone 5/armv7s support.
The minimum supported deployment target with Xcode 4.5.x or later is iOS 4.3.
I had this problem too. I just set my deployment target to 4.3 and left only armv7 architecture and it worked. At point almost everyone has 5, so 4.3 is fine.
for me it not work with every answer. but I try TARGETS > Architectures > Debug and add a new row with the plus button, and type 'armv6'(with out '), then click Done.
and finally CMD+B and then right click at PrjectName.app(in Products folder) > Open in Finder > Compress "PROJECT_NAME.APP" (in Debug-iphoneos) > Upload to AppStore
it's my screen setting.
if you have include project please config it all.
Hope your help.
After trying a mixture of these answers, I finally stumbled across making it work. Im so pissed off at Apple right now. Just another hour they made me waste. Here is my config.
I tried all the answers above ,none resolved my question. So I create a new project and diff the build settings one by one. Only "Alternate Permissions Files" is different.
The project build failed has a value armv7. Delete it then clean->build->archive . Succeed!
Hope can solve you question
Wow, I update/submit apps about every 6 months. Every time I do this I have to learn the "new" way to do it...
Same problems as described above when running iOS 5.1, and Xcode 4.3.2
Thanks for the posts! I spent a while updating all of the project settings to armv6, armv7, but no joy. When I set "build active architecture only" to No I got a build error about putting both objects in the same directory.
Fortunately, I noticed you guys were modifying the target build settings instead. This is what finally worked (armv6, armv7, and setting "build active architecture only" to No under the Target build Settings). As a disclaimer, I had already set all of the architectures to armv6, armv7 in the project settings too.
Anyway, thanks for the help,
Brent
I had to be sure to change these settings in both the Target and Project settings on xCode 4.3.2 after doing that and setting it to build for both armv6 and armv7 everywhere I was able to submit my app.
For safe measure I also exited xCode between making the changes and doing a clean, build, archive cycle.
Quite a painful problem for me too. Just spent about an hour trying to build and re-build - no joy. In the end I had to do this:
Upgrade the base SDK to the latest ( in my case iOS 5 )
Restart xCode
Clean & Build
It worked!
I guess it's a bunch of jargon about arm6 , arm7 as it looked like my project was valid for both, at least the settings seemed to say so ) , my guess is this is a cynical way to bamboozle us with the technicalities, which we don't understand, so we just take the easy option and target the latest iOS ( good for Apple with more people being up-to-date ) ....
Here is Apple's documentation:
Technical Q&A QA1760
It says there are two things that you must get right:
Add armv6 to the Architecture build settings
Set Build Active Architecture Only to No.
If this still doesn't help you, double check that you are really changing the architecture build settings for the right build configuration – I wasted half an hour fiddling with the wrong one and wondering why it didn't work...
Select Edit Scheme... in the Product menu, click the "Archive" scheme in the left list and check the Build Configuration. Change the value if it was not what you expected.
Note; I had to perform these steps for both my base project, and the embedded PhoneGap .xcodeproj file in my application.
Yes, I embed PhoneGap; they update far to frequently, and I've got less than two months to know that a feature is depreciated.
Try changing your deployment target to something higher than an armv6 processor. The settings for xCode are referencing the operating system level, for instance: iOS version#{3.1, 3.2, 4.0, 4.1, 4.2, 4.3, 5.0, 5.1}
(i)You can set this in the build settings tab or the summary tab. Start at the top left of the window in the Project Navigator, with all the files listed in it. Click the top-most one which has a blue icon.
(ii)If you are planning on using the programmable shader line circuitry, which is accessed and controlled through openGL ES 2.0 API, then you should set your "Deployment Version" to about 4.3, which I believe is only available on devices such as the 3GS or newer. xCode is reporting that iOS 4.2.5 or higher is needed run armv7 code. And once again, this processor, I believe, started with the 3GS.* iOS 4.3 seems to be the choice for me, for now.
http://theiphonewiki.com/wiki/index.php?title=Armv7
http://en.wikipedia.org/wiki/List_of_iOS_devices
If xCode keep complaining about armv7, make sure you disconnect any connect device (especially iPhone 5!!) and try again. Took me hours to find out that little piece of information.
Using Xcode 4.2 on Snow Leopard, I used the following settings to build an app that worked on both armv6 (Iphone 3G and lower) AND armv7 (everything newer than 3G including 3GS).
architectures: armv6 and armv7 (removed $(ARCHS_STANDARD_32_BIT))
build active architecture only: no required device capabilities:
armv6
do not put armv7 in required device capabilities if you want the app to run on 3G and lower as well.