I have added my iphone as device and associate it with provisioning. Then I download the newest provisioning and install it (I have successed added ipad as test device before).
Now, in the "Organizer", I can see the iphone device but when I connect iphone device I can not find the iphone device to run my app. My software version is 4.2.1, is it the version not the latest that lead to this problem? Or what is the possible reason?
Yes, the software version of the iPhone matters. It has to be within the range of the minimum deployment target outlined in your project. So:
If you pull up your "project" settings (click on the top most folder at the root of the list of all of the source files tree structure in the project navigator panel on the left, then in the main panel click on your project name underneath "PROJECT" and the select the "Info" tab, there's something there that says "iOS Deployment Target". If that iOS version is greater than the iOS version of your device, you won't see the device listed in Xcode's schemes (where you select devices v simulators). By the way, it's ok if your app's "base SDK" is a higher number (just make sure you don't use any iOS 5-only method, or if you do, make sure your program programmatically tests for the existence/support of those methods), just make sure the deployment target is low enough for your device. Anyway, if you change the "iOS Deployment Target", your device should show up. (Also, by the way, if you altered your target's minimum deployment (i.e. if you ever changed it so it no longer defaults to the project's minimum "iOS Deployment Target"), you might have to tweak that setting, too.)
Also, if your iOS version is 4.2.1, I wonder if you're dealing with an iPhone 3G (the model before the 3GS). I say that because 4.2.1 is the maximum iOS version on that old hardware. Anyway, if this is the case, you should understand that the iPhone 3G and early iPod touches use the ARMV6 processor, rather than the ARMV7 processor. So even if you change the "iOS Deployment Target" to iOS 4.0, for example, you'll see your iPhone 3G show up on the list of devices for which you can build, but it won't work (and it won't give you any meaningful error message). This is only a concern if you're dealing with the 3G or earlier. To support those older devices (if this is a concern), in addition to the "iOS Deployment Target" setting discussed above, you also have to go to the "Build Settings" tab, find the "Architectures" entry, and make sure you add "armv6" as another option (click on the value next to "Architectures" (it might say something like "Standard (armv7) - $(ARCHS_STANDARD_32_BIT)", click on "Other...", and when you get the dialog box, click on "+" and add "armv6" (without quotes) as an acceptable value.
Once you do this, you may want to click on the button about "Validate Settings", because there's a cpu related fix that it suggests. Don't know if you need it, but I let it fix my project.
Finally, you will want to go back to your Project Navigator panel on the left (where you see all of your source files), find your app's plist (easiest to just type "plist" in the search box in the bottom left corner underneath the files), and go to the "Required device capabilities". Expand that list and if you see armv7 there, just get rid of the armv7 entry.
Points 2-4 are only required if you need to support older hardware, but this is unnecessarily complicated and unintuitive. Hopefully this helps.
Related
Evening,
Going crazy about this, getting the following message straight after upload.
I've checked the icons, the icon file names in the info.plist, launch images, image compression etc
Any ideas what i've missed?
Dear developer,
We have discovered one or more issues with your recent delivery for "APP X". To process your delivery, the following issues must be corrected:
Invalid Image - For iOS applications, icons included in the binary submission must be in the PNG format.
If your application supports the iPhone device family, you must include a square icon of exactly 57x57 pixels.
If your application supports the iPad device family, you must include a square icon of exactly 72x72 pixels.
For Mac OS X applications, icons included in the binary submission must be in the ICNS format and must include a square 512x512#2x image.
Once these issues have been corrected, go to the Version Details page and click "Ready to Upload Binary." Continue through the submission process until the app status is "Waiting for Upload." You can then deliver the corrected binary.
Regards,
The App Store team
Any help would be great!
Thanks
Check the complexity/file size of your images. It sounds strange, but I've experienced this problem myself today.
Our 1024x1024 large app icon that had previously been fine was suddenly rejected. The icons we're using are quite simple (black and white company logo), so I added a little complexity to bring up the file size, and then the icon was accepted.
As the only difference was file size (dimensions, DPI, RGB format hadn't changed), I assume Apple is now checking for a minimum size for this icon, and it wouldn't surprise me if the same was being applied to the in-app icons.
I've seen images go corrupt sometimes, it is worth removing all of your app icons and adding them back to your project from the original source.
Also check your target's Info plist under the "Icon files" and "Icon files (iOS 5)" sections. Make sure they contain the correct filenames
Set Architecture to "Standard (armv7, armv7s)", Base SDK to "Latest iOS (iOS 6.1)" and Deployment Target to "4.3", or more recent.
Binaries are now rejected if using armv6, SDK 5.1 and target below 4.3.
At time of writing Xcode version is 4.6.3.
Open up your .ipa file and look for any extra images that may have been included. The .ipa is just a zip file, so from the terminal, unzip it, eg:
unzip /path/to/myapp.ipa
You can also check your project in Xcode. Select the project in the navigation pane, select the app target in the content pane, then go to the "build phases" tab and look at the "copy bundle resources" section. Browse through it to find your "rogue" image.
I just ran into the same error message earlier today and in my case it turned out that when your icon is completely in grayscale (has no colored pixels), it will automatically get rejected. Unfortunately the message gives zero indication that this might be an issue. Once I adjusted the color balance slightly towards red, I got to the next stage in review.
I ran into the same thing when I had submitted my "big icon" (1024x1024). That was a little less mysterious, as they at least mentioned "RGB" color requirements. Of course in normal language that still doesn't mean that grayscale is verboten, but there you go.
It was today exactly the same issue.
I tried to make the app with support iOS target 3.1.3 and support 6.1 using SDK 5.1 and 6.1 together. It was my usual success way.
So, my solution: to use the standard way with target iOS 4.3 without SDK 5.1.
Now it's in order. Well, sometimes it is not the problem with icons, but the using old SDK.
I uploaded a binary on into iTunes Connect, it was validated and accepted to publish to the App Store. I received an email from Apple, saying that my application is an invalid binary:
Dear developer,
We have discovered one or more issues with your recent delivery for
"Project name". To process your delivery, the following issues must be
corrected:
iPhone 5 Optimization Requirement - Your binary is not optimized for iPhone 5. As of May 1, all new iPhone apps and app updates
submitted must support the 4-inch display on iPhone 5. All apps must
include a launch image of the appropriate size. Learn more about
iPhone 5 support by reviewing the iOS Human Interface Guidelines.
Though you are not required to fix the following issues, we wanted to
make you aware of them:
Non-PIE Binary - The executable 'xyz.app' is not a Position Independent Executable. Please ensure that your build settings are
configured to create PIE executables. Once the required corrections
have been made, go to the Version Details page and click "Ready to
Upload Binary." Continue through the submission process until the app
status is "Waiting for Upload." You can then deliver the corrected
binary.
I have changed the Don't Create Position Independent Executables option in Target > Build Settings to YES, but I still receive the same message above.
There is now a document from Apple explaining the issue and how to solve it: QA1788: Building a Position Independent Executable,
Steps for building your application as PIE
In Xcode, select your target in the "Targets" section, then click the "Build Settings" tab to view its settings.
For iOS apps, set iOS Deployment Target to iOS 4.3 or later. For Mac apps, set OS X Deployment Target to OS X 10.7 or later.
Verify that Generate Position-Dependent Code is set at to NO.
Verify that Don't Create Position Independent Executables is set to NO.
We're getting the same message on all of our app updates this week.
You will need to set "Don't Create Position Independent Executables" to "NO" and "Generate Position-Dependent Code" to "NO", which is the default.
The key is that you will need to set "iOS Deployment Target" to 4.3 or later, or the PIE settings will be ignored.
You can test the app binary with this command and it will show "PIE" at the end of the line for a PIE exe.
otool -vh MyAppExe
as mentioned here by Vincent, to have a PIE-Binary:
follow Apple Q&A QA1788
set deployment target to 4.3 as minimum OS version (this is a requirement for PIE-Binary)
(the missing bit): make sure you don't have a 3rd party library that would not be compatible with PIE-binary, otherwise the all project will not build for PIE-Binary.
check with: otool -hv /path/to/MyApp.app/MyApp
This said, Apple does not force you "YET" to have a PIE-Binary app. So the question is "will they force to do so ? and when ?"
_oho
more info: http://blog.hoachuck.biz/blog/2013/06/28/non-pie-binary-app-on-ios-could-lead-to-security-issue/
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.
I got a warning that my project needs to include the armv6 binary.. but I don't really know how to do that. Have been googling for an answer, but non of the suggestions seems to fit?
Is armv6 something I need to download to support in my app, or does Xcode have it, I just need to include it in my project settings?
Also, my app should support OS back till 3.1.
I have added i386 behind armv6 and armv7 in the Debug section, but I dunno if that fixes the problem. Does this seem right to you people with more experience?
Follow my step
In your picture you choose level change it to "Combined"
Click at Standard (armv7) $(ARCHS_STANDARD_32_BIT)
Choose "Other"
CLick at "$(ARCHS_STANDARD_32_BIT)" and the Click "-" to delete it
Click "+" to add new item
Type "armv6"
Click "+" again
Type "armv7"
Click anywhere to finish
I hope this help
I just have the same problem and I try to do this and it work for me
I could run my code on an old 1st generation iPhone using the string armv6 armv7 instead of $(ARCHS_STANDARD_32_BIT) in architectures and setting "Build Active Architecture Only" to YES.
In Project Settings, select "Standard" for the architecture (not "Optimized"). This should allow you to select "armv6" for the Active Architecture. This means it should also work on older devices (barring any other deprecations) once it's on the app store.
Change your base SDK to iOS Device 4.x or below so you can see your armv6 architecture.
I just had this same problem. I loaded up a number of older XCode projects and they would compile and run fine with the simulator however as soon as you tried to run or debug on the device (which in my case in a iTouch v2) it would simply say it was running, then say the application exited. No errors, no logs.
Thanks to someone on the iOS Developer forums for putting me on the right track. At some point over the last couple of XCode releases (not counting the XCode releases for OSX Lion as I have access only to OSX Snow Leopard) Apple changed how projects were set up even older ones that were loaded.
The standard architecture used to include both arm6 and arm7 however, and at least with XCode 4.2 standard now only includes Arm 7 $(ARCHS_STANDARD_32_BIT) and apparently resets an old project's settings as well. Which went un-noticed to me as I used the simulator.
I tried changing the configuration string to "arm6 arm7" and this did not work. However the error that was returned contained the solution (at least for me an hopefully others still having this problem.)
In XCode 4.2 if you wish to build down to older hardware such as v1 and v2 devices simply change the project setting for Architectures to $(VALID_ARCHS) which defaults to the old standard of Arm6 and Arm7.
You may as mentioned previously be required to set the Build Active Architecture Only to "Yes" for the debug option (this however is not confirmed by me to be required).
I hope this helps anyone else still having this issue and I apologize for bumping this thread.
That's because you use the new iOS 5 SDK. Apple drop the armv6 architecture from the standard architectures.
You can have more information on this thread I've started before.
I download a sample of UICatalog and run it.When I compile it ,it shows the failed message:There is no SDK with the name or path "iphoneos4.0".I find the "Base SDK" of UICatalog's Targets is iphone Device 4.0(missing).How can I solve this question and run it.
Thank you!
Select the root level of the project, in "Groups & Files". It's blue. Then hit command-I to get its Info.
Pick "Build" from the segmented controller at the top of the info window. In the first section of that panel you'll see Base SDK as one of the first few lines of options. Select the latest version of the SDK you find in there, and close the window to save your options.
Build-and-run the project, and you should be good to go.
EDIT, because I see from the comments that people are finding this answer who have a slightly different question than the OP's, so here's one other thing to try. It could also be you have "iOS Device" selected as your build target. If so, and if what you really want is for it to launch into the simulator, select "Simulator" instead.
After loading the project into XCode..
Under Groups and Files
right click on UICatalog<-(or your demo project name) and select Get Info
in Base SDK select IOS Simulator 4.1
Close and save info pane
expand Targets exposing UICatalog<-(or demo project name)
right click on UICatalog and select Get Info
in Base SDK select IOS Simulator 4.1
Combo box in UICatalog project pane (upper left corner) should switch to "Device - 4.1 | Debug" instead of "No Base SDK"
if you Build and Run at this point you might get another error. If so, open the UICatalog combo and switch from Device to Simulator
The "official link" mentioned above states…
"Note: Targets can override build settings defined at the Project level. "
..but should probably read "will" instead of "can"
Ok, I've solved it.
In Groups & Files go to Targets and select your target.
Press Ctrl+I (or open the info in some other way)
Set the Base SDK of your target
(The Base SDK should also be set at the project)
Steve nailed it. This is an Xcode bug. I loaded the NavBar sample and Xcode didn't even offer the simulator as an option, and it complained about the missing SDK even though it was set correctly in the project and wasn't set at all on the target.
Do what Steve said:
"The only way I could resolve it (in fact, the only way I could get the option of running in the simulator at all) was to change from debug to release and back. The dropdown still shows Base SDK Missing but if you click it, the simulator options are there and it builds."
My problem was that in the sample code another xcodeproj was embedded. So I looked after that file with Finder, opened it with Xcode and than the same as Dan said: Project -> Edit Project Settings -> Under "Architectures" set Base SDK to "iPhone Simulator x.x" (the latest one you have installed)
I had the same issue with another Apple sample app. The only way I could resolve it (in fact, the only way I could get the option of running in the simulator at all) was to change from debug to release and back. The dropdown still shows Base SDK Missing but if you click it, the simulator options are there and it builds.
I think that's a bug.
Many answers here, none seem to be complete enough about this, and it's all a mess. But they are all helpful. Here, I just want to compile all helpful pieces in one answer. Thanks to Larry (who have almost everything compiled into steps already), Steve, Dan Ray, dkk, geowar and lqf.
This picture from apple is a little decieving and outdated (talking about iOS SDK 4.0 and we're currently at 4.1) but it does show where you should change the project settings. Just select iPhone Simulator 4.0 if it was previously on iPhone Device 4.0.
Other than that, they say "Targets can override build settings defined at the Project level". So, yeah, also go ahead, open Targets and set all of their Base SDK back to default by pressing delete on it. If they were bolded, they'll become regular indicating a default value, which should be iPhone Simulator 4.0 if you did the first step right.
Just realize there are many places where Base SDK can be wrong:
Under Project Info
Under Target Info
Under different configurations for both Project and Target
And that under Target it should be set to default, which is value from Project.
There's still something about the overview combo sometimes having and sometimes not having more than 1 option such as "Device" and "Simulator" that I just couldn't understand yet, but this is another potential configuration place for Base SDK being wrong.
You have to make sure that you change to the "iPhone Simulator" under the project settings in the appropriate configuration (i.e. if you are building a debug build you have to change to the simulator under the debug configuration).
For some reason I was getting this error when I did change the simulator but realized that I was doing a debug build but changed to the simulator under the release configuration and not the debug configuration.
dkk's answer is what made things work for me. I had to change the Base SDK on the target and not just the project. Perhaps you have to do both.
I got a similar error after upgrading my iPhone to iOS4.2.1(8C148a). The situation is as following.
I was using Xcode 3.2.4, but it does not support iOS4.2.1. So I downloaded Xcode_3.2.5_and_ios-sdk_4.2_final.dmg which is 3.78GB requiring 9.53GB to install. Then I ran my ap with Xcode 3.2.5. That is where I got the above error message.
Now it is ok. I solve this based on Geowar's answer:
For the official answer:
http://developer.apple.com/library/ios/#qa/qa2010/qa1701.html
Please be noted that if you have done as Geowar said and the message is still there. Try to close Xcode 3.2.5 and restart it. That is how it works for me.
Another thing is that if you have just upgraded to iOS4.2.1 like me. When you try to load the a/p from Xcode 3.2.5 the first time. Xcode 3.2.5 may still give you "No provision iOS device connected". Please try to go to organizer and click on your iPhone under DEVICES on the left bar. Wait for a while to let Xcode in sync with your iPhone with iOS4.2.1. Then it will work. At least it work for me.
Jesse
Ok, so I struggled through this too. Based on some of the answers above and from the apple development forum, I was able to figure out what worked for me.
In XCODE, if you notice that the pull down at the top left of the window says "BASE SDK MISSING", you are going to get this error "There is no SDK with the name or path “iphoneos4.0”". To fix the problem:
double click on Group & Files in the upper part of the left pane of xcode. This will open a window
go to the Build tab of the new window
click on the row that says "BaseSDK" and select "Latest iOS (currently set to iOS 3.2)
The Configurations pull down near the top should now say "All Configurations". If not, set it.
close the window.
Now if you try to build, you will get a different error, something like: Code Sign error: The identity 'iPhone Developer: x Xxxxx' doesn't match any identity in any profile ...
So, now what you need to do in xcode is to click on the pull down in the upper left corner (the pull down that had the original BASE SDK MISSING indication, but probably has something different now), and make sure that both "Simulator" and "Debug" are checked as options in the pull-down.
now you should be good to go.
I just went Project -> Edit Project Settings -> Build -> then change the Base SDK to iPhone 4 simulator or I'm assuming whichever SDK you want to use.
I never had to specify the build for a given target, although my program was created on a mac that was already configured to use the iPhone 4.0 simulator.. so perhaps the targets were set for the simulator SDK and the project itself wasn't? Either way... just glad it works.
I was having the same problem and what I did to solve it was:
Go to Menu Project
Go to Set Active SdK
Select the option SIMULATOR instead of DEVICE
Build and Run and the ERROR has gonne!
I hope it works for you guys... =)
I just had a situation where I changed the Base SDK to 4.2 on my project after updating to Xcode 3.2.5, but I kept on getting the "There is no SDK..." error. I finally opened the project file (MyProject.xcodeproj/project.pbxproj) in a text editor and looked around. There was no mention of 4.0 anywhere, only 4.2. BUT when I then saved that file, it all started working in Xcode. Perhaps some permission on the file or something else. Have no idea really, but it worked.
I got this error when one of my configurations still referenced an old (iOS) SDK. Note that the error shouldn't have come up when I tried to build a totally different configuration (with correct Base SDK setting), so this smells like an XCode bug to me.
People suggesting that you don't set the base SDK in at target-level have probably never created projects which contain targets for different platforms all in one project file (in my case Mac and iOS targets, so setting the base SDK once in the project file is nonsense advice).