Having gone through all the steps of submitting my app to the iStore by the book (and other manuals around), I get a 'not so funny' response after uploading my binary:
'The binary you uploaded was invalid. Fat binaries require a MinimumOSVersion of at least 3.0'
Now, I set the device deplyment to be 2.2.1 and the Base SDK the same. My build SDK is 3.0 and I'm pretty sure I do not use anything which is in 3.0 but not in the 2.2.1 API (I built and ran on both and tested).
It might be nothing, or not - I do use XML parsing and some XML files in my application, again, I'm not even sure that it is connected ot the problem.
If you have any experience with that or have a clue it's be great,
Check the Info.plist of the binary that is produced. The file should have the following setting somewhere in it:
MinimumOSVersion XYZ
...where XYZ is the Deployment Target OS version you are trying to build for.
I have noticed in my own binaries that this line does not exist for binaries built for the iPhone Simulator. Given that, my suspicion is that you are trying to upload a binary built for the simulator instead of the device. Try changing the Active SDK to "iPhone Device 2.2.1" and submitting that binary to the App Store.
I had a similar issue and it was due to me zipping the file up (or trying to upload it) from a PC. I used 'compress' on the mac and uploaded using firefox for mac os and it worked fine.
This window becomes visible upon clicking on the root project name in the Xcode directory /groups tree, where you can change the:
! Deployment Target OS 8.1 and SDK declarations
Also, under the General tab is the Asset Catalog where the Icon migration and Launch screen file conversion takes place.
Related
I have updated a currently submitted Titanium app and added a watch extension using swift.
Everything works fine if I build and test on sim and build directly to device. I only get an issue when I submit the app to the Apple app store (via XCode Organizer).
The binary submits, passing validation but I get am email from iTunes Connect as follows:
Dear developer,
We have discovered one or more issues with your recent delivery for "xxxxxxxxxxx". To process your delivery, the following issues must be corrected:
Invalid Swift Support - The SwiftSupport folder is missing. Rebuild your app using the current public (GM) version of Xcode and resubmit it.
Once these issues have been corrected, you can then redeliver the corrected binary.
It seems as though it may be related to a build setting: Embedded Content Contains Swift Code.
It looks like this needs to be set to Yes if the Titanium project contains embedded Swift.
As of now I am stuck as I cannot submit the app. Is this a Ti problem or is there another step I should follow?
XCode: 7.3, SDK: 5.2.2.GA - Project created and built using only the Ti CLI.
First you should check your .ipa file by
unzip yourapp.ipa
If the only Payload exists, the Apple reject your app.
You should create SwiftSupport/iphoneos directory and put the appropriate
swift library files.
You can know which libraries are necessary by checking Payload/yourapp.app/Framesworks. But this library files can not be used as SwiftSupport/iphoneos.
You must copy the appropriate libraries from your mac's /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos directory. The file names are same as the above Payload/yourapp.app/Frameworks but the contents are different.
After you get the Payload and SwiftSupport directory, do package these directories by
$ zip -r yournewapp.ipa Payload SwiftSupport
(Remark: remove all .DS_Store files if exist)
Then Apple accespt yournewapp.ipa.
For future reference: I had to Archive the Titanium project through Xcode because one of my third-party libraries requested to execute a script in the Build phases.
Received the same message from Apple and fortunately fixed it just changing the Embedded Content Contains Swift Code to No.
You should choose "Save for iOS App Store Deployment" option at the time of exporting ipa file.
This issue has now be resolved, there is a new version of the Titanium SDK, 6.0.1.GA that specifically has a fix in for this issue. I have now created, submitted and have a Titanium app with associated watch app now published in the app store.
I am trying to simulate an upgrade from version 2.0 to 2.1. I have version 2.0 hosted in testflight, so I did install it in my device. Then I tried running the app from xcode. However what happened is that the app did not get overlapped, instead it created two apps with the same name. How can I make it such that when I run the app from xcode it overlays the old version?
I've made sure that the bundle identifier is the same.
Well the info you can get while updating can be found # this link here.
when user updates an app, Documents folder is stored as is, including
NSUserDefaults (but, sometimes user download app via iTunes and
replace the whole application, crying 'OMG! update killed all my
levels progress!'); Application bundle is erased and replaced by new
one (anyway, it is readonly for user); Re-deployment of new build
version will be enough;
You can't access the appstore inside the simulator because: # link here
It's a simulator not an emulator. Even if there was an App Store in
the Simulator, none of the apps in the store would work since they are
compiled for ARM CPUs while the Simulator runs x86 code.
Another stack overflow # link here states:
Build and install your old version, generate some data, and then
install the new version on top of it.
For testing before submitting to the Appstore I generally download
from the AppStore again the old version, and then install with Xcode
the newer version - for your next update... ;-)
And another stack overflow (that I lost the link for) states:
No, the simulator runs i386 binaries and iPhone appstore apps are ARM
binaries apps.
iOS apps are compiled to machine code, Android apps are run in a
Virtual Machine using byte code and are translated to machine code at
the time they are run.
So no, I don't believe you can run it in the simulator, how ever you can have older projects saved on the iPhone and test both out. And the apple documentation is # this link here.
Read this: https://developer.apple.com/library/ios/technotes/tn2285/_index.html
You cannot simulate update in XCode (neither in simulator or connected device). You have to create IPA file and simulate update process via iTunes.
I have an app that I built using iOS 5.1 compatibility.
I haven't been able to follow paths like building it using archiving - I have been using a remote mac and some issues keep restricting me from doing that.
So I prepared an .ipa file by doing this:
- Payload folder
- copy myapp.app package to Payload
- Zipped Payload
Now I got this Payload onto my itunes on another pc (because the mac is remote so no way to get onto ipod touch from there)
My ipod touch shows iOS version 4.2.1 which it says latest. No further upgrade available.
The model is mb528zp. The free space on ipod is 700 MB, which is more than what's needed.
I can see myapp under itunes library app section.
When I try syncing myapp from under the device->apps, it does seem to sync up - but at the end it is not synced.
What do I do?
It sounds like your deployment target is set to the wrong iOS version. Try setting your project iOS Deployment Target to 4.2 or below and it should work (click the project in the Project Navigator, then click the name of your project, not the target, and you should see the Info tab selected with the option there)
When we gave our app for ad-hoc testing, our tester reported that the app could not be installed because iTunes gave the error "resources have been modified". Please note that the app installed fine previously with the same procedures which we implement for deploying apps during ad-hoc. The only difference is that the device used for testing has its OS upgraded from 4.0 to 4.1 and now we are unable to install the app.
There are no issues with the zipped application file sent, no Thumbs.db file is present to corrupt the .app folder and all the distribution profiles are in place.
Also, we found out that the base SDK for building this app is 3.0, which installs fine in iOS 3.1.3 and 4.0 but gives issues with 4.1
One other app which has been written with base SDK 3.1.3 deploys correctly in iOS 4.1 though.
Please suggest some workarounds for this deployment issue
This is because someone has modified the files in the .app folder. If people go into the .app folder Thumbs.db will be created automatically, or they may have modified/changed something else.
Try rebuilding the file and zip it into a folder called "Payload.zip" then change this name to "yourAppName.ipa". This will stop people from being able to modify the files in the .app folder.
I just updated to iPhone SDK 4 and am trying to debug on my device with 3.1.3 installed. Before the update, I compiled with Base and Active SDK set to 3.1.3 and all was well. After the update, I'm limited to SDKs 4.0 and 3.2--setting the base to 4.0 and iPhone OS Deployment Target to iPhone OS 3.1.3, I'm able to build and install on my 3.1.3 device, but receive the following error:
Error from Debugger: mi_cmd_stack_list_frames: Not enough frames in stack
I'm not using anything specific to the newer SDK, as I haven't touched a bit of code, just updated the SDK/XCode. So what am I doing incorrectly? The application runs as expected on an iOS4-installed device. Are there changes to pre-existing API's that need to be weakly linked perhaps? Thanks for all help.
Have you tried removing the app completely from your dev device, doing a build -> clean all targets, and then build again to your device?
I found this answer on macforums. If it's correct, then you probably have a memory corruption problem in your app that is confusing the debugger. Perhaps over-releasing something somewhere.
This probably isn't related to the SDK you are compiling with. It's possible you had this problem in your app all along but it just didn't show up until things moved around with the new Xcode, SDK, etc.
EDIT - I just ran into this problem myself trying to update an older app of mine to 4.0. It would run fine in the simulator and would install and run on the device except it wouldn't run in the debugger on the device. Anyway, I finally decided it was the .xcodeproj file that was corrupt or bad in some way and created a new project, copied over my source files to the new project and now it all works again. It's a pain but it only took about 20 mins to duplicate all my settings and I spent a couple hours trying to get the debugger to work.
Myself (and probably many others) are concerned about "will I still be able to compile/install apps for v3.1.3 of the iPhone OS?"
And what version of xCode does it become IMPOSSIBLE to ever write v3.1.3 apps again?
(Without installing a second copy of an older version of xCode.)
I've read the mile-long document that Apple wrote on the subject... but it sure would be simpler to understand if they just LISTED the various versions of each... instead of writing long paragraphs.
If you have:
Mac OS version 10.x.x x
xCode version x.x.x
SDK version(s) x.x.x
you can produce apps for iPhone OS x.x.x through x.x.x?