Which target do I build for App Store submission including Watch extension? - ios

I have a universal iOS app which runs on all iOS 9 capable iPhone and iPads. The app also has a Watch extension. When I come to submit the first version to the App Store, which target do I build, archive and submit? Do I have to archive the Watch extension target, or will the Watch extension be included if I build, archive and submit the iOS app target? Or does it not matter?

Apple documentation states the following:
Adding a Watch app target to your Xcode project creates two new
executables and updates your project’s build dependencies.
Furthermore, regarding building of the app:
Building your iOS app builds all three executables (the iOS app,
Watch app, and WatchKit extension) and packages them together inside
the iOS app’s bundle.
(emphasis mine)

The iOS app target. Extension and watch app would be bundled within the original package, automatically.

Related

Archive distribution problem for watch extension app

We've been developing and testing a Watchkit Extension app (iOS 12.1 and WatchOS 5.1) for the past few months and successfully testing it on a simulator and local, connected devices (iPhoneX + Watch 4) using xCode 10.1.
This past week we built an archive for posting to App Store Connect. We got stuck in the Archive Organizer after archiving for release. The "Validate Content" button was disabled, the Version is blank, the Identifier is blank, and the Type is "Generic Xcode Archive". Unfortunately, all we can do is export the .app files from the Archive Organizer; we can't push the archive to App Store Connect.
We made sure the build scheme was set to Release and we archived to a Generic iOS and WatchOS device. We also set Skip Install for the three targets (iOS app, Watch app, Watch extension) to No as we assumed none of those are static libraries. We even tried every permutation of Skip Install settings. We looked at the issue in the following link and we have no Header steps in the Build Phases of any targets:
https://developer.apple.com/library/archive/technotes/tn2215/_index.html#//apple_ref/doc/uid/DTS40011221-CH1-PROJ
We have two frameworks we included in the project using carthage. We thought maybe these were causing issues, but we rolled back to a branch before we added them and still have the same problem.
We made sure the build in the Scheme is set to a single target and cleared out the Derived Data folder. Still no dice.
I’m not 100% sure from your question, but are you trying to push an archive of the watch app to the App Store?
If so, that’s not how you submit the app. The Watch app is embedded in the “regular” iOS app, and to distribute it you need to archive and submit that app as usual.
If I’ve misunderstood, feel free to ignore this!
I had the exact same problem. When I changed Skip install on the watch app and watch app extension to YES, it suddenly worked. No idea why.

Is it possible to submit the ios app with upgarde version from 7.1 to 8( and above ) to itunes

I'm developing an iOS app. A certain app has been released in the App Store with the Deployment Target iOS7.
I am introducing some new feature to my app which support IOS8. So want to change my App Deployment Target to IOS8.
So i have to change baseSDK or not? or what type of changes i have to make in my app.
i want to know will it be able to release to the App Store?
Here's a link from where i get some idea but still not clear .
1) Base SDK refers to the newest version of iOS that is capable of running your app. To check which base SDK you are building your app against, simply open your project file in Xcode and check the setting under Build Settings -> Architecture(...)
2) Deployment Target refers to the oldest version of iOS that is capable of running your project. To change your deployment target, open up your project file in Xcode and check the setting under Build Settings -> Deployment(...)
3) The base SDK is what you build your app against (i.e. include and library files and frameworks). It doesn't affect the deployment target, except that base SDK >= Deployment Target.
4) So you just need to change your app Deployment Target and then change your app Version and Build and then upload the app on app store.
Change the minimum deployment target(as you mentioned iOS 8 to current version),
Update app version(as you mentioned 8.0) & Change build
version too(else you will get message something like from build already exist while uploading).
Finally generate IPA file for App Distribution. Move .ipa file to iTunes using App Loader or Xcode(via selecting upload to app store option).
In iTunes select option to add version which is shown in left side.Now fill meta data of an app. Once your build reviewed were done successfully. You can able to see in Build selection in iTunes.

Apple Watch App Extension won't run on the simulator anymore

I'm creating my first Apple Watch app and upon first adding the Watch and Watch extension targets I was able to start building my interface and running on the simulator. Since then I've needed to update my iOS app while still working on the Watch app. So I used this advice to "disable" my watch app so I could submit a build for the new iOS version:
Prevent deploying (disable) WatchKit App with iOS iPhone App in Xcode
Simply, by removing the watch and extension in target dependencies and embedded watch content in Build Phases did the trick. Now I'm picking back up the work I put down but can't seem to get it to run on the simulator. I add back the target dependencies and the embedded watch content but I get the error: Error Launching 'App Name Extension' Invalid Bundle - No Apple Watch Binary
Can anyone explain what that means and why I am getting this error?
For anyone who comes across this problem seeking an answer. I found that I had been changing my version and build number to accommodate my current iPhone version and build number. This was creating that error, so to fix it I left the watch app and extension app version/build as default 1.0 and 1.

Not uploading a watch kit app

Ive made an iPhone app and started playing around with a watch kit app with it in the same project. However, I only want to upload the iPhone app now not the watch kit app. How do I only upload the watch kit app? I have this problem Embedded binary is not signed with the same certificate as the parent app: but I don't want to upload my watch kit app. Help
Removing watchOS Target
You should just remove the Watch Extension.
Solution:
Go to Build Phases in iOS target, which is located in your Project file, then from Target Dependencies, remove WatchKit Extension target.
Also in the same page, you should go to Embed App Extensions and remove the WatchKit extension.
Then, clean, build and run your project as usual. You should be done.
Re-adding watchOS Target
The only step is to add the extension to Target Dependencies.
NOTE: However, if you are working with watchOS 1, after adding the extension to Target Dependencies, you should add it to the Embed App Extensions too. Just select the *.appex file containing WatchKit extension data there.
Conclusion
1- To remove watchOS Target, remove it from both Target Dependencies and Embed App Extensions.
2- To re-add watchOS Target,
A) In watchOS 2, add it to Target Dependencies.
B) In watchOS 1, also add the *.appex file to Embed App Extensions as well as adding the extension to Target Dependencies.

WatchKit apps/extensions and iOS backwards compatibility

I have an iOS app with its Deployment Target set to iOS 6.1 version, and the Base SDK to latest iOS. I've added both the Watchkit app and WatchKit extension targets to the project, but I need to understand how will this affect a future submission to the App Store:
1) Are two executable files generated? One for the iOS app + WatchKit extension, and another for the WatchKit app? Or is all packaged in an unique executable file?
2) Will it be automatically handled the iOS version of the device that is installing the app? I mean: will the user download and install the update from the App Store, and then she will be requested to only install the iOS app if her version is 8.1- and requested to install both the iOS app and the WatchKit app if she has iOS 8.2+ and a paired Apple Watch? Has Apple provided such information?
Apple has provided a lot of information about WatchKit apps and extensions. I propose you read them first before going on with your project. For instance, you can find information about the WatchKit architecture and how WatchKit apps and extensions work together with iOS apps in the official docs.
Also, keep in mind that these things might completely change later this year.
Ad 1) Only one executable is generated, which includes all these parts. The user will download your app normally from the App Store as before.
Ad 2) Your iOS app will run on the lowest iOS target set in your project, in your case 6.1, even though the WatchKit app is included. However, the WatchKit app will only be available to users on iOS 8.2 and above - and of course they need the Apple Watch.

Resources