iOS Settings Bundle strangely disappeared - objective-c

I'm working on some iOS app that involves connecting to a server and has an in-build Settings.Bundle which stored the hostname to that server.
This app has been prepared by someone else and is over a year old by now. The settings bundle and connection always worked perfectly fine, regardless of how they work. It worked this afternoon still when tested. Yet after lunch I came back and nothing worked anymore and I'm clueless on what the problem might be.
Before lunch I had some issues with an app with the same bundle identifier so I had this app's Bundle Identifier changed in the info.plist that I have been using to keep those matters in check.
Also I had been trying to create an .ipa-file for testing purposes. So I was busy with archiving the app. The app has an extern lib (zxing) to scan QR-codes for easy login functions. And my problems there were how to get the archiving file from the generic xcode archive to a genuine ios app archive. I succeeded by following this guide (http://pulkitsinghal.blogspot.nl/2012/03/wrong-archive-ios-app-archive-vs.html).
Which involved changing the 'Skip Install' setting to YES in the Target>Build Settings of my Zxing lib.
All done and well. Except, now I ran my app on my simulator and I couldn't connect to the server anymore. The hostname appeared to be (null), which was described in my Settings.Bundle.
I haven't touched the programming which created that settings item. So how could it have been disappearing on me?
Could it be that by changing the bundle identifier of the build settings in my mainproject and the zxing lib? Could it be something else?
Any thoughts on how my previous changes might have impacted the disappearance of the Settings.bundle?
(I could provide code of any kind ofc. but atm I wouldn't know what to post)
A possible solution could be reverting things back to an earlier revision of course, but I don't know what made it disappear in the first place. Or what could make it disappear. And wouldn't want to lose a few day's worth of work.

Related

On macOS I am having an issue. Running 10.14.2 in all my non-sandboxed projects, in any NSOpenPanel, the right click commands do not work. Any Idea?

While developing a Cocoa sandboxed application, I discovered that if I switched it to non sandboxed, in all the Open Panels of the application, the right click commands (Duplicate, move to trash etc.) do not work any more. I am certain they did work no more than two weeks ago, but I have reverted the project to old commits and the misbehaviour is still there. I tried everything, until I realised that this misbehaviour now appears in all my projects, if I switch them to non-sandboxed. This makes me think it may be some kind of bug introduced in 10.14.2 or something similar. I hope somebody else has experienced the same issue so that we can understand better what is going on. Thanks
P.S. I am using the latest Xcode 10.1 (10B61) and tried on several machines. It is the same misbehaviour.
The OS might be confused by having some contradicting leftover knowledge about sandboxed and non-sandboxed versions of the app with the same version / bundle ID / signature.
Some things to try:
Test the app on a fresh user account.
Delete the app sandbox container from your Home Folder > Library > Containers.
Temporarily change app bundle ID to something new to see if it’s still affected.

Invalid Binary Or Invalid Swift Support

After I send my app for approval to the app store I get the message 'Invalid Binary' in the iTunes Connect. Then I get the following message in an email from Apple:
Invalid Swift Support - The bundle contains an invalid implementation of Swift. The app may have been built or signed with non-compliant or pre-release tools. Visit developer.apple.com for more information.
My app is just a simple game application. No external programs are called. I have researched this message and went through and checked the following:
xcode is up to date - checked in app store
EMBEDDED_CONTENT_CONTAINS_SWIFT to YES or NO
send with the xcode app, not the application loader
did NOT build with the command line
(Xcode menu -> Preferences -> Locations tab - verified that the Command Line Tools matches Xcode version.
"Clean"ed the app, rebuilt and rearchived and then resent, same message
The app validates through the organizer fine
viewing the contents of the archive shows a SwiftSupport folder
I am only using one developer account and have never logged into any other developer account
I cannot find anything online that would help solve this problem.
I am running OS X Yosemite 10.10.1.
xcode version is 6.1.1 version 6A2008a - built, cleaned and sent with this version
I have also pressed the Option key and "Cleaned Build Folder" and resent, same message
I cannot find any other reason for this online or in any forums. Any help is greatly appreciated. Thank you for your time.
SOLUTION I FIND
Edit:
(1)
One you contact Apple and you wait long time … for reset iTunes connect because this problem coming in Apple . (Apple ask to send log of this problem)
(2)
An other solution, your create an other project application on iTunes connect and upload your work, this solution work fine, is the solution for me .
(3)
An other solution, you create a new project on Xcode, copy and paste your project in this other project.... (create new provisioning profile etc..) And upload your work in the same project application on Itunes Connect.
(4)
Step (2) + step (3), create a new project in Xcode and Itunes Connect.
(5)
Create a new project with the same name bundle identifier, it works perfectly !
See: Technical Q&A QA1881 Embedding Content with Swift in Objective-C.
It seems that you only need to set EMBEDDED_CONTENT_CONTAINS_SWIFT to YES "If you are building an app that does not use Swift but embeds content such as a framework that does".
What language is your app written in? If Swift yo do not need EMBEDDED_CONTENT_CONTAINS_SWIFT.
I ran into this problem the other day. Took some doing, but I finally figured out the problem ( for me at least). Everything I read online said the problem had to do with this setting:
EMBEDDED_CONTENT_CONTAINS_SWIFT
When this started failing, I had this set to NO. So I tried setting it to YES, and it still failed for the same reason. The GUI wouldn't let me remove this setting, I could only change it between YES and NO.
For what it's worth, my code has no EMBEDDED code, it's all just straight up SWIFT.
Anyway, so I decided to uninstall XCode and redownload it, hoping that would help.
While XCode was downloading, I fired up Beyond Compare, and compared my current project, with a backup from last week, to see what could have changed.
Beyond Compare found that a file deep inside the Projectname.xcodeproj file, changed ... a file called project.pbxproj file.
Inside this, was that line:
EMBEDDED_CONTENT_CONTAINS_SWIFT = NO;
This appeared in the current version of my project (that was failing). Interestingly enough, this line didn't exist at ALL in the old backup version from a week ago. I know that I didn't set this flag. There must have been something in Xcode that did it under the covers.
Anyway with that knowledge, Xcode finished downloading, and I reinstalled. Started it up, opened my project, and magically, Xcode REMOVED that line from the .pbxproj file, and now my project uploaded to itunesConnect sucessfully.
BottomLine: There's a bug in xcode that it may decide to add this line to your project for no reason, making your project invalid.
Solution: Editing the pbxproj file yourself and removing that line might work ... but reinstalling XCode seemed to clear up any confusion it had, and it removed it for me.
If you are submitting an app that has an AppleWatch extension, you can get this error if you try and submit the app using the Application Loader utility and a zip file. I got the error:
The bundle contains an invalid implementation of Swift. and
The bundle contains an invalid implementation of WatchKit.
I went through pretty much every solution for the first of the errors - but it was submitting via Xcode that fixed it.
well xcode 6.1 is a bit old and contains old swift. xcode 6.4 is the newest public one IIRC
"Check your code signing. I had this error when in automatic signing. I Put my dev profile for dev and production profile for release version and error is gone."
Link for the Quote
Sometimes this happens inadvertently.
To be safe, all components of your app should be built with the same version of Xcode and the Swift compiler to ensure that they work together.
I think you need to do a pod clean and install. I reckon one of your swift pods was created on a old version of Xcode, you updated Xcode and then tried to do a submission to the app store.
Read the apple swift blog about binary compatibility and frameworks
You will also want to specify that your embedded content contains swift in the build settings:
EMBEDDED_CONTENT_CONTAINS_SWIFT
Enable this setting to indicate that content embedded in a target's product contains Swift code, so that the standard Swift libraries can be included in the product.

Strange application behavior when building a project with the latest xcode/OSX version

I have an OSX application written in Objective-C/Cocoa using xcode. The application is quite finished, tested and sold on the App Store.
I haven't worked on this application for some time and recently, I rebuilt it using xcode 4.3.3 on my OSX 10.7.4 and I noticed that while it builds just fine, there are some very strange visual glitches when running the application that were never seen before and occasionally, I get EXC_BAD_ACCESS when closing the application. All these seem to be related to the PDFKit framework I am using. I am unable to debug these problems since the glitches are just visual (nothing I can check in code) and EXC_BAD_ACCESS exception comes from internally allocated objects not related to my code.
The code itself haven't changed, I tried previous revisions of the code and they all exhibit the same strange behavior now. I tried running an old binary I have of the application (compiled couple of months ago) and it works just fine. Then I tried building it with previous versions of xcode, down to 4.2.1 (which I know was ok when I submitted the app to the app store) and the problems still occur.
Then I suspected this may be something specific to my environment so I built the project on different machine also with xcode 4.3.2 and OSX 10.7.4. Same results, the problems are still there.
So now I suspect that it has something to do with the OSX 10.7.4 update since this is the last thing that was changed between now and when I was able to produce a good build of the application. I am pretty puzzled to what to do next and how to identify the cause of this problem. I have an old binary that is working fine and I have a newly compiled binary of the same code revision that has problems.
Is there any useful information I can get from the difference of these binaries? What can I do to determine the cause of these problems? What can I try next?
Thanks!
NOTE (update): I stated it above but I want to make sure it is clear. This is a Mac OSX Cocoa application, not iOS.
just reset your simulator then try.
I hope you check the ARC information
go to your project Target set build settings --> Search Paths-->Always Search User Paths Set Yes.
And check your all class variables different from one another.
Xcode--> preferences-->Documentation check installed core Libraries (or) install it
like that
Xcode--> preferences-->Components check required component installed or not
check these things in your project.
Are you sure your customers are not having the same problem? Since you have tested the application on a different machine you probably do not have corrupt libraries installed (unless you did not install from scratch but used some migration tool?), so that is probably not the problem.
Most logical explanation to me would be that your customers also have this problem but they haven't reported it yet. In that case, you probably have a memory problem and there are techniques to attack that.
In any case, eliminate all the parameters that you can eliminate to simplify the problem. Deconstruct the application until the problem does not occur anymore or reconstruct the application in a different project until the problem occurs again.
It sounds like a nasty one, but you'll get there in the end, with patience and perseverance :)
First of all, you need check and verify the build log for suspicious compiler warnings.
For EXC_BAD_ACCESS, XCode analysis will give useful information.
You could try 10.6 or 10.5 (need manual installation) SDK. Or restrict the deployment target to 10.5 or 10.6.
I will answer my own question (since none of the above answers really answer it) so anyone with a similar problem might have a hint. I was not able to understand why exactly this happens but I'm pretty sure this is not a problem with my code but rather some glitch on Apple's side. And there is a workaround.
First, I compiled Apple's sample "PDF Annotation Editor" project on my Lion 10.7.4 and while the functionality is obviously different from my project, it also exhibited similar glitches with the PDFView display that my project does when compiled with 10.7.4
Then I proceeded to building a fresh clean system on new hard disk. Intalled Snow Leopard and upgraded to 10.6.8 and ONLY installed xcode. Compiled my project (the source code always stays exactly the same) and everything works fine. No problems seen in the compiled project.
Updated my OSX to Lion 10.7.4 and xcode 4.3.3, same source code. The problem is there after I compile it. I am pretty sure that if I tried 10.7.3 first, I would not see the problem as I remember it only starts with 10.7.4 but Apple doesn't provide any reasonable way to update to 10.7.3 first or downgrade to it after 10.7.4 is installed (shame on them, not very developer friendly!).
So, the problem appears in 10.7.4.
Then I installed the pre-release version of 10.7.5. This was the only thing that was changed, same source, same xcode. To my surprise, the compiled code works flawlessly now and the problems seen with 10.7.4 are now gone!
So my workaround - wait for 10.7.5 release before working on the project further. Hopefully Apple won't screw it in the future with Mountain Lion. I don't think I am going to try and debug it further or submit a ticket to Apple, going to be a tough case to explain.
Thanks for the responses.

How do i prevent Xcode from overwriting iTunes binary?

I have a really annoying problem. My app is published in the AppStore.
Everytime i run the app from Xcode, the iTunes binary just gets overwritten... and next time i need to test something with the production version of the app, i need to re-download it.
Is there any way to solve this?
Thanks in advance!
You need to change your bundle identifier. Here's how I set it up in my projects
Select your Project
Select your target
Navigate to the Info tab
Change the bundle identifier to a custom build setting e.g. I have it as ${BUNDLE_IDENTIFIER}
Now click on Project - (you may wish to keep at target level your choice)
Navigate to the Build Settings tab
Scroll all the way to the bottom to see User-Defined
Click Add Build Setting
(1) Select Add User-Defined Setting
(2) Add Key as the name you chose earlier
Set a different bundle identifier for each scheme
Bonus
You can use the same trick for icons so you can easily tell apart your builds on one device
Changing the bundle identifier, as Paul.s suggested, works — but it means your Release and Debug builds will diverge. Technically they will be different apps that use different containers. There can be good reasons to do this, but it has it's risks too: it's a bit more complicated, and you usually have to work a little harder to make sure you test that the development version properly handles data from the production version. You'll want to make sure any ad hoc builds you send to testers use the production bundle identifier.
Another way to approach the problem is to streamline installing the old version. If you Archive your production builds, then you can install them without downloading them again through the App Store. Just open-up a previously exported IPA and sync.

Xcode 4.2 not running my app after rebuilding MacBook (Snow Leopard)

I recently had the MacBook I'm using to develop an app (for work) rebuilt. Xcode failed to launch and there were a number of issues when running 'verify permissions' on the disk. I copied the project to a USB stick and prepared to have the machine re-imaged. Now I have it back, I've re-installed Xcode, copied my project over and it opens - great. I started some alterations to the storyboard and tried to run it in the simulator, at which point it seems to crash and returns me to the Xcode window, debugger running.
I've tried to step through the 'problems' but I can't find anything wrong. This was a working, simple project (based entirely on a storyboard approach, very little code yet as I've been building an interface that was acceptable) and the storyboard still opens fine, all the segue's seem intact etc. It just won't run. I've tried it on another MacBook (running Lion) and it also failed, complaining about 'NSBundle' and 'MainStoryboard' (I'm sorry, that machine is at home and I don't have the exact message) - yet for all intents and purposes looked fine.
The build settings etc all verify and it builds with no issues. The app is stored in a different location on the disk to where it was originally, so perhaps some of that information is stored somewhere and needs to be reset? I've tried this: XCode 4.2 MainStoryBoard Not Found with no change.
Short of me scrapping this and starting afresh, is there anything I can do/try to salvage it? It's not a huge amount of work (probably a day or so, mainly adding text/images to the views) but I'd like to try and save it, hopefully understand a bit more of what's happened? Short of thinking the drive was corrupted and also corrupted the project somehow before I made the backup I'm at a loss.
Any pointers appreciated!
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'MainStoryboard' in bundle NSBundle </Users/appdev/Library/Application Support/iPhone Simulator/5.0/Applications/82547437-7BE3-4960-B755-84E0A999A881/testApp.app> (loaded)'
*** First throw call stack:
(0x13be052 0x154fd0a 0x439352 0x151c9 0x15461 0x147c0 0x23743 0x241f8 0x17aa9 0x12a8fa9 0x13921c5 0x12f7022 0x12f590a 0x12f4db4 0x12f4ccb 0x142a7 0x15a9b 0x208d 0x1ff5)
terminate called throwing an exception(lldb)
The storyboard file doesn't seem to be getting put into your application bundle. Select it in the project navigator in the left-hand panel, and check that there is stick against the target in the file inspector in the right-hand panel.
Also, it sounds like you are not using version control. Use version control! If you had been using version control, you wouldn't have had to worry about moving the files from computer to computer, you could roll back to a working version, and you could easily see what the differences are between the old working version and the new broken version.
check the following settings in the xcode: and make sure to clean before building the app and running.
http://postimage.org/image/nk91mrlt9/
http://postimage.org/image/i3kd4zbqv/