Related
I have a simple iOS App with 4 Viewcontrollers and few ressources. The Resources include a video (30mb) and images (10mb). I was expecting an app size of max. 50MB but when I archive it goes up to 107MB.
I have read that when I use Swift libraries or pods Xcode includes Swift core into my app. My question is now what should I do? 107MB is unacceptable. Even 50MB is really big but I was fine with. Is there a way to reduce the size and keep the Swift pods included? At this stage I can't even upload it.
UPDATE
Thanks to #GoRoS I have inspected and found out that libswiftCore.dylib 43MB & libswiftFoundation.dylib 5MB are the files that really increase the size. Still its strange. I have the Swift libraries at two different locations in my IPA.
IPA
iphoneos (contains Swift libs)
payload
Frameworks (contains obj-c libs and Swift)
SaifDeen, I would recommend to inspect your IPA file by yourself and you will discover why your app is that big ;)
For that just remember that an IPA is a simple ZIP file:
unzip -lv /path/to/your/app.ipa
Check this reference
Update:
Disabling bitcode will decrease your IPA size. However, as far as I know, even though you have bitcode enabled once your app is in the store Apple makes some optimizations to the app before the user downloads it. The result of that should be a smaller file size.
I was having a similar issue with my app and the only way that I was able to see the final size of the app is not when archiving, is once the app is on Apple servers. The best way to test this is archiving and upload it to iTunes Connect and then installing it with TestFlight.
In my case, at first was around 90 MB and then when installing with TestFlight was only 39 MB.
Hope this helps
bitcode and swift libraries DID NOT have anything to do with my issue.... i basically simply clicked and dragged a folder into my xcode project, which automatically added everything in that folder as 'targets'.
However, these files did not come up when searching through my target dependencies within xcode.... but they DID INDEED show up when unzipping the .ipa as #GoRoS had suggested previously in this thread.
This was a dumb mistake that i probably should have caught sooner.... but that also means someone else will make the same mistake too : )
screen shots...
i clicked and dragged this folder (ios_alpha) from finder into xcode...
and then everything inside that folder was set as a target membership like this....
hope this helps someone!
glhf!
I've got an issue with how PhoneGap:Build is currently building iOS applications: splash screens are duplicated, greatly increasing the compiled file size of my applications.
Previously they had an issue wherein they were copying the wrong icon into the Android XHDPI icon folder for Android builds, and I was able to write a script that automated fixing this bug post-build since they seemed to show no interest in fixing the bug (almost a year now since the original bug report & while it seems it might be fixed presently, they haven't commented lately).
I know that I can rename an IPA to a ZIP, unzip it, and browse its contents. I could automate the following steps easily:
Rename
Unzip
Find & remove originals for splash screen images via config.xml file
Re-zip (& rename?)
...But I'm not sure where I'd have to go from there. I've found a few threads that discuss using Xcode to run different utilities, perform signing, etc; but they all seem to assume you've got an xcode project locally, which I don't. (I use PhoneGap & PhoneGap:Build specifically to avoid those headaches.)
I'll have access to all of the same key files that are uploaded to PhoneGap:Build for the original signing process, and I know all of the necessary passwords. I have Xcode installed (just not a local xcode project)...
Is it possible to re-assemble a "fixed" zip into a signed IPA for dev/release distribution using command line utilities & without creating a local Xcode project? If so, how?
Yes, this is possible.
You can export an IPA, unzip it, delete the duplicate file (assuming your code doesn't reference it), then re-sign the app and zip the IPA back up.
You'll find examples on how to use the commandline tool "codesign" to resign a .app directory on stackoverflow!
Packaging operation failed - this message now showing while i try to make .ipa file for Ad Hoc distribution in Organizer
I checked certificates, checked project directories (after reading this)
Xcode dont showing any errors or something similar. Log Navigator show no errors (only old warnings).
So here is question: anyone else encountered a similar problem? And if answer is positive any suggestion to solve problem?
P.S.: in Xcode 4.2.1 all perfectly works
Occasionally this is caused during automatic resigning during packaging with a different distribution certificate. This can occur when you start a new project and you're building both dev and release builds with your Team Provisioning profile, then you create a distribution (ad hoc or otherwise) certificate for this specific bundle ID and attempt to sign the archive with that new certificate.
The fix is to dig inside your build settings for the code signing identity and set the build release identity to the same distribution certificate that you're attempting to sign your archive with, either your ad hoc or app store certificate. You can leave debug builds as your team cert.
In the below example, the problem has been fixed. Use the build settings search box to look for the code signing identity. "Release" is probably set to "iOS Team Provisioning Profile" when it should be set to "iPhone Developer: Your Name" which is the same certificate you're trying to sign your archive with.
I had same problem in my project (in xcode 4.3.2) And as per all ans I checked for any png file starting with "._*" and also checked folder and its subfolder are different name.
Also checked code signing identity as per requirement. But Not Succeeded to solve this problem.
After hole days effort finally I got reason for "Packaging operation failed" error in my project.
In my case,I have classed "About_us.h" and "About_us.m" and by mistake I import header file like #import "About Us.h" (white space in middle). So when I loaded app on Device it will successfully loaded but when I try to create ipa using archive its give me error and return me Estimated App Store Size just 143 kb.
Finally while I change header like #import "About_Us.h" and try to make ipa I got real size in proper MB.
Hope this will help someone.
I get the same problem.
PNG files starting by ._ are not visible, even if you display hidden files in Finder (defaults write com.apple.finder AppleShowAllFiles 1 in Terminal)
But if I browse my SVN folder using Versions app, I can see there are PNG files starting by ._
For each of these files, I opened it with Preview app, duplicated and re-saved with the same name, then I removed all the ._ files because they are no longer needed.
Now I can create an archive and distribute it through an IPA file.
I hope this will help you!
I had this issue after copying my project on a flash drive with FAT filesystem. Suddenly there appeared a lot of "._" files. One of such files was in Settings.bundle.
I removed these files running
find . -name "._*" -exec rm -rf {} \;
Issue for me was that release Product Name was set twice under Build Settings:
ProductName
ProductName
instead of just ProductName. Interestingly, the newline caused issues for packaging, but nothing else.
In case some file has space in file name which will stop the rm process. use this command instead.
find . -name \._*.* | xargs -I{} rm -v {}
Same issues for me. No folder within a folder, no ._ files, no warnings or errors etc. Archives fine, but when I try to package with the organizer to adhoc it fails and says it is 9kb.
I've managed to fix my issue. Here's how I did it. I went to terminal, typed in
defaults write com.apple.finder AppleShowAllFiles TRUE
Then I checked all the folders with images in them. I found that some of my images had ? infront of the name even though it looks ok in the finder, it showed in the terminal.
So I just renamed it and was able to submit the app.
Note: Check the estimated size of the app in the organizer. If it's way off, it's messed up.
I had a file that contained ^ in the terminal that was the problem.
When looked at in Finder there was no visual clue that it was not labeled correctly. However when I tried to rename it, it failed.
I had the same issue in conjunction with a custom directory-icon. Those are stored as a hidden file (named Icon?) inside the affected folder.
It's probably safe to assume that there is a bunch of desktop/fs-features and conventions which can lead to packaging problems.
I had an issue with my icons or atleast that's what I think. I had to delete the icons and delete the references in my info.plist file. Then after that magically, a option while selecting to distribute the app in the Xcode Organizer came up saying Don't Re-Sign, and after I did that BOOM! It worked! Good Luck for Future Visitors!
I had the same problem in a cordova project, but I could not find any png files starting with '._'. With some luck I found out that the problem for me was that there was some font folder with an icon in the www (blue) folder (www folder is the folder containing the webapp and will be bundled when building). After removing (moved the fonts a level higher) the message 'packaging operation failed' was gone and exporting the archive for Ad Hoc distribution worked again.
In my case I had two issues:
1. the bundle ID was slightly different between the one in the Info.plist and the one used in the iTunesConnect
2. the distribution certificate used for archive creation was not the same that I used to resign the app before validation/submission.
In all cases XCode was opaque. But using Application Loader (you can run it from "XCode menu --> Developer tools") and providing it with the ipa file, the messages were clear enough to help me debugging the issue. So I'm going to radar this to apple: give the user clear messages in XCode exactly as you do with Application Loader! in the meantime, I recommend to use Application Loader when the "package" issue is not clear enough.
I solve it just copying the project folder into the desktop, which (i think) shortened the project file path.
my problem was that I entered a Product Name containing the tilde character: "~xxx~"
it was a temporary build I thought I would highlight it but in the end you cannot use any character in the product name.
Hope this helps.
I installed Xcode 4.3.1 to compile an app for iOS4.2 but I couldn't solve the "Packaging operation failed" problem (I've tried some of the solutions mention above). Later I installed XCode4.4.1 and I was able to compiled for iOS 4.2 without (almost any) problems
I have trouble uploading my application to app store. When I try to archive my project for validation i get an error:
warning: iPhone/iPod Touch: BMELogo.png: icon dimensions (0 x 0) don't
meet the size requirements. The icon file must be 57x57 pixels, in
.png format (-19014) Unable to validate your application. - (null)
I have checked and re-checked my icon for both size and type. My icon is 57x57 and a PNG.
Do any of you know what to do?
in advance thanks :)
This is a weird error, but it could be similar to what happens when apps on the phone don't match what you see in the simulator. Here's a few things to try:
As Damo mentioned, this is most likely a capitalization issue. Make sure that the filename as specified in the plist matches the case of what's on disk. Devices (and the app store) are case-sensitive, but your Mac is not. If it works in the simulator but not on device, you probably have a capitalization problem.
You might need to Clean (from the Build menu) the project and rebuild. Sometimes XCode just gets confused, especially if you've been moving or renaming images. Quitting & restarting XCode might help, too.
Nuke the site from orbit -- manually delete all of the project's output files. Sometimes XCode keeps old versions of image files around packaged somewhere hidden that cleaning doesn't get rid of.
Start over from scratch. Choose a different name, one where you're sure there's no legacy object file lingering about.
Also, you might want to make sure that you are using the latest version of the Application Loader, you can download the latest by logging into iTunes Connect and clicking on Manage Your Applications, the download is at the bottom of the page.
After you download the installer, close down Xcode, then run the Application Loader installer, then relaunch Xcode, load your project, do a clean on the project, and then archive and try the validation.
I had this error too. You need to reinstall Application Loader which you can get from here https://itunesconnect.apple.com/apploader/ApplicationLoader_2.5.1.dmg
After installing Xcode 4.3 I can't validate and distribute application using Organizer.
While building, signing and validating in Xcode is OK, the validation in Organizer fails with the message in the title of this question.
First, Xcode 4.3 can download provisioning profiles automatically (there's an option in Organizer), but it downloads only development profiles and ignores distribution profiles as if there are none. OK, I downloaded and installed it manually and it appears in Organizer. Then I set proper Code Signing Identity both for project and for target and use Distribution profile that matches Distribution certificate in my keychain. Then I do Archive (build-sign-verify) and no errors, in the log I see green checkmarks for CodeSign and for Verify steps. Looks good and the archive appears in Organizer.
And that's where all goes wrong, I just select Validate, choose the new version I just prepared in iTunes Connect, choose correct code signing identity, same as was used for Archiving (actually, there are no other choices in my case), it asks for iTunes login/password as usual, and then says
Codesign operation failed
Check that the identity you selected is valid
Ahhh!!! Why!? It had no problems while archiving it, then same code signing doesn't work when trying to submit to AppStore. Well, not even submit, but validate before actually sending it. So this issue is local to my machine. The very same signing and validation that is successful during build, fails in Organizer...
I tried everything, re-installed Xcode, removed/revoked and re-issued all certificates, removed duplicated private and public keys from keychain, put all certificates in one "login" keychain, issued new profiles, installed Application Loader 2.5.1, and so on... still no luck.
Could it be that I have some left-over from previous Xcode installs? Or that I have to update some tools to make Organizer work properly?
Meanwhile, if anyone knows another way to upload binary to AppStore, please share. I couldn't figure out how to do that using Application Loader, when it asks me to choose a bundle to upload, all I have is xcode archive created by Xcode in Archive step. How do I get my hands on iap or whatever file the Application Loader wants from me?
I've discovered that Xcode 4.3.1 has a serious issue validating apps with resources within a directory tree within an application bundle.
Apps can pass validation within the Xcode "Build for Archive" process - it only fails when the validation is run via Organizer.
After spending hours trying to trace down the usual code signing entitlement issues, I eventually noticed the following line in the system console when the export fails:
3/10/12 2:32:48.450 PM [0x0-0x261261].com.apple.dt.Xcode: /Users/chris/Library/Developer/Xcode/Archives/2012-03-10/Coverage 3-10-12 2.32 PM.xcarchive/Products/Applications/Coverage.app/Tiles/T-Mobile-roam/4: Is a directory
I spent a day trying to isolate this bug, and I've finally nailed it.
The code signer in XCode 4.3.1 when validating for the App Store or saving for AdHoc distribution chokes whenever there is a subdirectory in your bundle that has the same name as its parent directory.
For example:
test/test/file.x -- FAIL
test/test2/file.x -- WORKS
This seems to be new in Xcode 4.3.1, and hopefully will be fixed soon.
Notes: This thread seems related: https://devforums.apple.com/message/630800
I was the original poster on the Apple Dev Forums...
https://devforums.apple.com/message/621193
I've also attempted to bring this to the attention of the AddThis developers:
https://www.addthis.com/forum/viewtopic.php?f=19&t=38292
As mentioned in the other posts, the only way I've found to prevent the code signing failure is to remove the ATResources.bundle file from the project.
Of course, this bundle contains many of the necessary images for AddThis, among other things, but the error no longer occurs.
I'm hoping this helps someone else discover the correct way to solve this issue.
The problem is AddThis or explicitly the ATResources.bundle in the AddThis folder.
So you have two options:
The first one is using an older version of Xcode to Archive.
The second one is relocate all the images inside the
ATResources.bundle into a folder, and copy the content of the
Localizable.strings into your own Localizable.strings
Then open the FBDialog.m file and search for "close.png", remove that
line of code and replace it with:
UIImage* closeImage = [UIImage imageNamed:#"close.png"];
Now you're ready to Archive.
Finally consider to file a bug report in https://bugreport.apple.com/
In my case, it was a damaged custom framework.
I have so many subdirectories on my bundle that have the same name as their parents, so I was not able to validate and submit. The only solution I found is to download xcode 4.2.1 from Apple developer center and install it side by side with xcode 4.3.2. Then I used it to validate and submit.
I'm developing on Sencha 2. The key here is to launch the System Console from Apps/Utilities and look at the error log when distributing. That's the easiest way to see the offending directory. In Sencha2 its in the /sdk/src/device/device. Good stuff: Still happening in xcode 4.3.2
Just confirming that the problem was indeed nested folders with the same name in my app.
In my particular case this was the issue:
problem: images/packs/1/1/img.png
solution: images/packs/pack_1/1/img.png
Smooth sailing after that. This happened in Xcode 4.3.3
found the solution, it really works for me. hope this will help you guys.
if the issue is because of Addthis, try following
noted that the inside ATResources.bundle you have a folder named ATResources.
ATResources contains exactly the copy items (ADDTHIS.db,en.lproj,images) which is present in ATResources.bundle. so we can simply delete the ATResources folder from ATResources.bundle.
for deleting,, select the files from ATResources.bundle and right click , show in finder -> and remove ATResources folder.
the major issue is because subdirectory in your bundle that has the same name as its parent directory.
:)
I had same problem in my project (in xcode 4.3.2) and as per all answers I checked for any .png file starting with ._* and also checked folder and its subfolder are different name.
Also checked code signing identity as per requirement, but did not succeed to solve this problem.
After whole days effort finally I got reason for "Packaging operation failed" error in my project.
In my case, I have classed About_us.h and About_us.m and by mistake I import header file like #import "About Us.h" (white space in middle). So when I loaded app on Device it will successfully loaded but when I try to create ipa using archive its give me error and return me Estimated App Store Size just 143 kb.
Finally while I change header like #import "About_Us.h" and try to make ipa I got real size in proper MB.
Hope this will help someone.
I experienced this issue on Xcode 5.0.2 (5A3005) with 2 completely separate folders that happened to be named the same thing.
Most other cases in this thread focus on the parent/sibling relationship, but I think it's any two folders with the same name will cause this failure.
I had same problem as you do, and radven response inspired me:
did you see that ATResources directory contains nothing more than just copy of its parent?
ADDTHIS.db
en.lproj/*
images/*
ATResources/ADDTHIS.db
ATResources/en.lproj/*
ATResources/images/*
As a quick-and-dirty fix I removed the redundant subdirectory. Application builds and seems to work fine, and Xcode is able to sign.
Let me know if I missed any consequence of this fix?
Gee, I spent like an hour on this problem.
I just removed AddThis from my project. Do it and it would work.
restarting xcode made the buttons work for me. they were greyed out before, in case anyone here is having the same problem
Techi50 alluded to this but to be clear - under Xcode 4.3.5 there is a serious bug where code signing will fail if you have subdirectories with the same name as the parent directory. In the Sencha Touch 2 SDK tree, for example, there is
/sdk/src/device/device
argh... hours of trying to code sign with no luck... rename to:
/sdk/src/device/device_epic_fail
(since I don't need those libraries anyway)
and I can code sign.
And one big bug hunt is over. Apple... fix please...
Updating the AddThis SDK from 0.1.7 to 0.1.9 fixed this problem for me (using XCode 4.3.1).
I've determined another cause of this error, which occurred for me in Xcode 4.6.2 (4H1003). I had a subproject building an executable. This executable is a helper tool which is copied into my app's bundle when it builds.
The app has a min deployment target of OS X 10.7 and builds for 64-bit Intel as a result.
The helper tool, however, was set to a deployment target of 10.6, and was building for 32-bit/64-bit Intel.
Changing the helper tool to also build for 10.7 and 64-bit Intel only fixed the error. I can reliably recreate the error by changing the helper tool back to 32-bit/64-bit Intel; this is not a 'erm, zap your PRAM' fix.
As #radven and #tomek-cejner mentioned sometimes some extra directories could cause problems. Maybe if named improperly? for me the offenders were different.
Gruntfile.js, karma-e2e.conf.js, karma.conf.js, and the entire node_modules directory.
see: How to build IPA for distribution with TestFlight with XCode 5?