Where is my application binary in Xcode to submit? - ios

I've built an app for the App Store (ex-iTunes store). However, I can't figure out how to submit the app.
Where is the actual binary that I need to submit to the App Store? What folder does it get built in?

You could use XCode and on the left expand "Products". Highlight your .app and then go up top where it says "Action" drop that down and select "Reveal in Finder"

Look at a path something like this:
"/Users/{user}/Library/Developer/Xcode/DerivedData/{appname-somehash}/Build/Products/Debug-iphoneos/{app-name}.app"
You can run "find" to locate it.

By default, you'll see a build directory inside the directory containing your project.
In that build directory:
<Project Name>.build` contains all the object files created during compilation
and a series of folders with the following naming scheme:
<build setting>-<platform>
You're likely looking for something like "Release-iphoneos". In that folder you should find the .app package to submit.

Related

Getting error after changing project folder name in XCode

When I created my project, I called it "Project1". Then, later I've changed it to "Project2" from the Xcode. I changed all "Project1" to "Project2", but now, when I compile my project, it looks for files in Project2/Project1/myFile.swift and I get the next error:
<unknown>:0: error: no such file or directory: '/Users/myusername/Copy/Projects/Project2/Project1/myFile.swift'
I need to make that it will look at
/Users/myusername/Copy/Projects/Project2/myFile.swift
without Project1 in the path.
How can I solve this problem? Also, I changed from Xcode Identity and Type section Location of my project.
Today I had the same problem when I renamed the folder containing the Xcode project and some parent folders of it.
In my case there where a .swift file shown with it's name in red in the list of files of Xcode (Navigator area). I think that this means that Xcode was not capable to find that file.
I selected that file (actually it's not a real file but a representation of it).
Then, in the File Inspector (Utility area), I clicked on the Folder icon and chose the file on Finder.
This worked for me.
Renaming projects in xcode in one of the most annoying things in iOS development. I assume you want to rename your app. I faced this problem once and figured out a simple, clean way to do it.
Go back to the point where everything worked.
Open project in xcode and click on the project icon in the project structure( first file)
Go to the info tab
Search for Bundle Name. Most probably it will automatically be set to $(PRODUCT_NAME) which is a shell variable that will set your app name the same as the project name.
Set it to whatever you want your app name to be
Done
Note : If you use custom URL Schemes this might produce an error when redirecting.
ALWAYS use git or some other SVN in your projects. This will come in handy in this kind of situations
Change you folder name in you finder "Project1" to "Project2"
Remove "myFile.swift" file from project (copy on Desktop)
Restart Xcode. Copy "myFile.swift" in project select "Copy file to folder" hope this will help.

Xcode and iOS9's "Asset packs must be in /OnDemandResources" error

I updated to iOS 9 GM and Xcode 7 GM and am in the process of submitting an update to my game.
However, the validation process now comes up with an "Asset packs must be in /OnDemandResources." error.
Here's the log
2015-09-14 18:50:52 +0000 [MT] Failed to generate distribution items
with error: Error Domain=IDEFoundationErrorDomain Code=1 "Unexpected
asset pack at
/Applications/churningseas.app/AssetPacks/Dropbox.assetpack. Asset
packs must be in /OnDemandResources."
UserInfo={NSLocalizedDescription=Unexpected asset pack at
/Applications/churningseas.app/AssetPacks/Dropbox.assetpack. Asset
packs must be in /OnDemandResources.}
2015-09-14 18:50:52 +0000 [MT]
Presenting: Error Domain=IDEFoundationErrorDomain Code=1 "Unexpected
asset pack at
/Applications/churningseas.app/AssetPacks/Dropbox.assetpack. Asset
packs must be in /OnDemandResources."
UserInfo={NSLocalizedDescription=Unexpected asset pack at
/Applications/churningseas.app/AssetPacks/Dropbox.assetpack. Asset
packs must be in /OnDemandResources.}
And here is my Xcode directory, showing the Assetpacks are currently under Ressources (I went a little crazy with blurring, sorry about that):
I guess this is due to Apple's new "app thinning" system, which I'm not particularly wanting to use right now for a small update.
Is there a way to disable on-demand resources? If not, how to fix this (do I simply need to move my "Assetpacks" folder to another one called "OnDemandResources")? I so, where? I'm a little nervous to mess up my file structure...
Also, I did already look at the assets section of the build setting, and "Enable on-demand resources" was already set to "no"
any help is appreciated. Thanks a lot!
This seems to have become an issue since iOS 9 introduced on demand resources. The terms "AssetPacks" or "assetpack" inside folder references cause an error when attempting to validate an archive.
Because this seems to effect Codea-exported projects under version 2.3.1 and earlier. Here is a fix specifically for a Codea exported project:
Find the file named libversion in the root of your exported project. It will contain a version number, most likely 2.3.1. Change it to 2.3.2
Delete libcodea.a and libtools.a from your Libs/ folder
Delete the "AssetPacks" folder reference from the "Resources" group in your exported Xcode project — if Xcode asks you to move the files to trash say NO.
In Finder: rename the "AssetPacks" folder to "Assets"
In Finder: Rename every "SomePack.assetpack" folder within it to "SomePack.assets"
Drag the root level "Assets" folder back into Xcode, tell Xcode to add this as a "Folder Reference" (not a "Group")
There's a more in-depth discussion here https://bitbucket.org/TwoLivesLeft/core/issues/366/trying-to-export-xcode-file-so-i-can#comment-22075482
It took me a while to figure this out but I seem to have gotten something that works. Once you archive your build, if you go to XCode's preferences and click on the tab Location, you will find the location of the archive saved files. If you then click the link just under the Archives section, it will bring you to a folder (which you open) that contains the archives in it. Navigate to the date on which you archived the build and then (using get info to determine time) locate your build. Right click on it and then click "Show Package Contents". Then click on Products. Make a new folder called "OnDemandResources". Click on Applications and right click on the file and open the package contents. Depending on the previous locations of your assets they will be somewhere there, but for me they were in a handy folder titled Assets. Once you have found the folder containing your assets you need to copy it and delete it. Inside the OnDemandResources folder we created earlier, make a new folder called what ever your package bundle identifier is (com.------.-----) and add to the end of it: .New.assetpack . Then paste your AssetPacks (or Assets) file inside. Now you to create a new text edit file, set it to plain text, and then type: bplist00“TTags_CFBundleIdentifier°SNew_?com.Identifier.Identifier.asset-pack-00000008CM2Z9
')-o
This is what it says for mine, I don't know if it will work for you, but I don't see why not.
This method worked for me and now I have a working .ipa file. I hope it works for you!

Where are the binaries located?

I have an xcode project for livecode iOS external. When I build and run, it says successful but where I can locate the dylib and lcext files? I saw binaries folder but looks like it is not updated.
If you hold down the "control" key while clicking on your target product, you'll be able to show it's location in the Finder.
Like this:
I know this sounds odd but are you getting any errors after Xcode says it was successful? If so then you need to check the .ios file includes all your frameworks. There is a shell script that re-links the external.

Xcode has started making archives, not apps. How do I change it back?

Im' writing an phone app in Xcode 4.2. At some point in the last few days, I changed something - I don't know what, and there's nothing obvious in the git history - and although I can still run it on my device and in the simulator, when I archive the build it makes an archive instead of an app. I can't share these archives as IPA files; if I try I get told "No packager exists for this type of archive".
What did I do? How do I change it back so I can produce IPAs again?
I did the following to make it work for me:
for the three20 static library, I used cocoapods to include the files within the main project.. it just got rid of all the trouble three20 was giving me (and they are lots..) btw i tried replacing three20 with Nimbus.. but Nimbus was lacking on some of the features that my project was using three20 for.. so Nimbus wasn't helpful.
set skip install to yes under build settings for all other sub projects/static libraries and switched the copy headers from public to project under build phases
most importantly: under the sub libraries.. under build phases i ensured that copy files destination was changed from Absolute path to products directory.
and that was it!
hint: to get an idea of the offending files that's causing your archive to create an archive file rather than an ipa do this:
Select the archive and click the Distribute button.
Select the 'Save Built Products' option.
Hit Next and Save.
Browse the created directory in Finder.
The 'libraries' subdirectory will identify the libraries that you need to set the Skip Install to Yes.
in some cases usr/local/include will identify the culprit header files you need to move from Public to Project or the files that you have to change from absolute path to products directory. but that directory (ie usr/local/include) varies depending on your sublibrary directory structure
Make sure for any intermediate targets you select "Skip Install" for its build settings.
Click ont the build dropdown in the top-right of your Xcode window and select "edit scheme" and see if anything is wrong there.
If you can't see anything, try selecting "manage schemes" then delete your old schemes and press "autocreate schemes now" to make a new one.
You only want one scheme, for your app build (or one for each target if there are multiple targets). If there are other schemes (e.g. for embedded sub projects used to create static libraries used by your project) delete them.
Also, as jrtc27 says, if you have got any sub-projects that produce static libs, you need to mark them as "skip install" in the build settings. There's another question here that relates specifically to that issue and has a more detailed explanation of how to fix it:

What is the definition of a single bundle application in XCode?

I get this error when I try to validate my iPad app archive that I have build with XCode 4:
“TVGuidePlusHD” does not contain a single–bundle application or
contains multiple products. Please select another archive, or adjust
your scheme to create a single–bundle application.
I know about the "Skip install" setting, but still it fails for me.
The contents of the archive are these:
So is the problem the tvguide.db file? This is my .sql document which is compiled automatically to a sqlite db file and actually is supposed to be copied to the application bundle only.
I'll answer my own question.
After making sure that the tvguide.db file is not inside the "Applications" folder, then the archive is considered a single-bundle application and is validated correctly.

Resources