ITC.apps.assetvalidation.BITCODE_IMBALANCE_ERROR.error.message - ios

I am having a problem submitting my iOS application to review queue. It keeps loading and throwing me error like this.
ITC.apps.assetvalidation.BITCODE_IMBALANCE_ERROR.error.message
Any ideas how to resolve this?

I'm afraid there's not much information about this issue. All the stuff I've read about is from yesterday or today. This thread on the apple message board is what made most sense to me:
https://forums.developer.apple.com/thread/48023
It implies that there might be some issue on the Itunes Connect backend. It makes sense to me because I've already managed to do some releases on my app before, and the BITCODE flags were not changed before that. So it's either a change in the bitcode policies or some random error.
In any case, we'll probably have to wait until Apple clarifies it. I'd suggest to stay tuned to that thread on their forum :)
EDIT: I figured it out!!
I'm using CocoaPods, and the Pods project had the "Enable bitcode" option enabled for all targets, while my app had it disabled. That means that the frameworks were being generated with the arm64-bitcode architecture instead of the arm64-machinecode that my project requires. Putting the "Enable bitcode" to "No" for all the targets inside the Pods project does the trick.
At least, it worked for me. Too bad apple provides no feedback on this, because it looks like a recent change. I think there's another option that could work without changing the project settins: try disabling the "Include bitcode" checkbox on the Organizer, after pressing the "Upload to App Store" button.
Edit (again): Disabling the "Include bitcode" checkbox in the organizer definitely works :)

Regarding bitcode deprecation in Xcode 14. If you're using fastlane make sure to remove include_bitcode: true from your build_app call

Use of bitcode is deprecated starting in Xcode 14. You can checkout the Xcode 14 Release Notes deprecation.
So, we are free to remove the uploadBitcode key from the exportOptionsPlist plist file. And also make sure that your all app modules and external library's Enable Bitcode option in the build Settings should be no, then you will be able to upload your app to iTunes connect without getting any error or warning.

Related

Bitcode WatchOS3 - how to generate

I am attempting to upload a watchOS3 app to the apple store, however I received a rejection (from apple) thats similar the below
Invalid Executable - The executable 'someWatch Extension' does not contain bitcode.
Once these issues have been corrected, you can then redeliver the corrected binary.
How can I resolve this? It seems like bitcode is mandatory as there is no longer a build setting in Xcode for my watch application to simply "Enable Bitcode=No".
I have also tried looking into running swiftc -embed-bitcode *.swift from my Watch Extensions directory, but I receive the below
MyController.swift:9:8: error: no such module 'WatchKit'
import WatchKit
I really have no clue what to do from here and it UBER frustrating with the lack of documentation out there for watchOS3 to get around this. PLEASE HELP
For me the problem was that ENABLE_BITCODE=NO was set on the project level, and even though Watch did not have it set and should have resolved to YES which is the default for WatchOS, it was still resolved to NO - because of the inherited value from the project.
To resolve it, I removed the ENABLE_BITCODE value at the project level.
(to do this, select it in the Project Build Settings and press delete button on your keyboard so that text loses its boldness).

dyld`__abort_with_payload: Without an error message

When I start my app with Xcode, I have a crash, but without an error.
The app is just stopping on this thread:
What can I do to have more information about the issue?
If you are using custom frameworks, you need to put it inside the "Embedded Binaries" section located in the Xcode project under the tab Target / General.
For me a simple Clean and Rebuild sorted it out.
This problem appeared after a system update up to macOS 10.15.2 beta (Catalina). Disabling "Thread Sanitizer" solved the issue (Xcode 11.2). Now I can't use Thread Sanitizer and have to wait for the next OS update.
Adding the framework to the embedded binary asset list fixed this. Here is what the setup of a foreign framework looks like in final form in the Xcode GUI as an Embedded Framework (Xcode 9.2, personally I like a visual breadcrumb trail better ;-) ):
Did Apple intentionally crash the runtime to somehow tell the developer about the problem that you cannot use non-Apple frameworks as simply linked frameworks in iOS development? It would be better to have it come up as a build error I would think... with a button that said "move it!"
The use of Embedded Binaries keeps the end user from having to add the Framework independently of your app (or have you do with an installer). In the case of the iPhone (iOS), that is impossible, but on macOS, it is possible, but it can get messy fast.
For the end user, it is much nicer to simply drag and drop an app to install it on macOS, which is where embedded becomes a benefit. Embedding also avoids the classic "DLL conflicts" of having external versions of your framework to manage. (Disk space is cheap, but my customer's time is precious.)
I fixed the error in my project just now!
If you are using the Swift framework in an Objective-C project, I advice you to change the build settings.
Set the Always Set Embed the Swift Standard Libraries option to Yes. Like this:
It was finally solved!
Making the framework "optional" instead of "required" worked for me.
To answer the original question "What can I do to have more informations about the issue?", this Apple forum thread provides a very simple tip: simply run your crashing app outside Xcode (i.e., stop it from Xcode, then run it manually on your device).
This will produce a crash log containing more details about what happened. You can then review this log from the Xcode Window menu → Devices and Simulators → View Device Logs.
In Xcode 11.1, turn off Do not Embed in Embed & Sign is a nice option.
Credit: mkonovalov's answer and William Cerniuk's answer
Unchecking "Guard Malloc" in diagnostics worked for me.
Continue the execution to see if any message shows up in debugger such as "MyFramework.framework" not found. If that is the case, follow this question: OS X Framework Library not loaded: 'Image not found'
For me Amos Joshua's answer worked.
Make sure you have added your binaries through "Embed Binaries" section.
Make sure you have enabled signing of frameworks in build phase section.
Make sure the embedded frameworks are not symlinks.
You can make the linked frameworks optional instead of required in "Link binary with libraries" phase. This will tell iOS to not look for these frameworks during launch. But anyway you need to fix the errors to use those frameworks!
Check if all the info.plist entries are good. In my case, I was using a Mac info.plist file for iOS. It was looking for some xib file which was not present in the iOS project.
Do a clean and build after any such change. This is required because Xcode does not copy/change these files if they already exist.
Remove the app from iPad and then install. Same reason as 7.
I had just missed applying the "Privacy - Camera Usage Description" in the info.plist file.
I faced the same issue with Xcode 11.3 and macOS v10.15.2 (Catalina) . The app was running well on the device, but not in the simulator. It seems there is an issue with the simulator and the workaround is to disable Thread Sanitizer.
Refer to Xcode 11.3 simulator SIGABRT on launch.
I encountered an error with the same signature (my project was in Objective-C) and discovered I had forgotten to link with the appropriate framework. The error message in the debug log that led to finding the error was:
dyld: Symbol not found: OBJC_CLASS$_SFSafariViewController
For my specific error, adding SafariServices.framework in the Targets → Build Phases → "Link Binary With Libraries" resolved the issue. While you probably don't have the same specific error and resolution, checking the debug log for clues is useful.
Sometimes it happens when you use system frameworks that are accessible only from a later iOS version than your target version. It might be fixed by marking this linked framework as optional.
For example, a project targeted on iOS 11 and being using AuthenticationServices for the iOS 12 AutoFill feature will crash on iOS 11 in the described way.
I had a similar issue that was resolved by a missing permission specification in plist (as weird as it is...).
I've tried to use AVCaptureDevice and it just crashed at starting (my app was very minimal).
Adding Privacy - Camera Usage Description to the info.plist file solved it for me.
I've had this situation after updating Xcode to v10.2.1 and Swift to v5.0.
If you are using Carthage + RxSwift, the new RxSwift uses RxRelay.framework. You should go to your /Carthage/Build directory find that framework and drag it to your project. Don't forget also add it to your carthage copy-frameworks script:
$(SRCROOT)/Carthage/Build/iOS/RxRelay.framework
It was resolved thanks to fred's answer.
I had this issue and didn't have success with the answers.
I was using a custom framework that would connect with Bluetooth devices. So the crash was happening because I had missed applying the "Privacy - Bluetooth Always Usage Description" in the info.plist file.
Check all your permissions fields are set up in the p-list file.
I was facing the same issue. Setting 'Always Embed Swift Standard Libraries' to Yes in Build Settings of my target worked for me.
If you use the Carthage build framework, after dragging the framework to your project, you should add it to General/Embedded Binaries.
I found the right way to resolve it.
Make sure the AppleWWDRCA.cer is set to the system default mode, and then it will work:
If you're using a framework written in Swift in an Objective-C application, you need to include the Swift toolchain in the app that consumes the framework.
The way I've found to do this is to create a dummy Swift file in the app, so that Xcode recognizes Swift and appropriately adds it to the project. You can then delete the dummy file.
Also if you are using custom frameworks, make sure you set the Mach-O type to static library. I read somewhere that iOS doesn't allow dylib. Anyway, this worked for me.
To add to the long list of encounters with this error, it occurs when I am on Xcode 12.2 Beta 2 deploying to my Mac running macOS v10.15.5 (Catalina) with the deployment target set to macOS v11.0 (Big Sur).
This situation happened because I was trying out the Mac Catalyst Tutorial app on adding a SideBar. Switching the target to macOS v10.15.5 eliminated the error and launched the app properly.
I faced this issue on iOS 14.5 when playing/implementing ATT (App Tracking Transparency) and have yet to add a usage description in file info.plist on why user tracking is needed.
The app crashes whenever the settings "Allow Apps to Request to Track" was enabled (when disabled, everything worked well).
The crash in Xcode provided no clues, except
libsystem_kernel.dylib`__abort_with_payload: (SIGABRT)
CoreSimulator 757.5 - Device: iPhone 11 (29AD27B2-6EC0-4B9C-8C8C-C5450695A19C) - Runtime: iOS 14.5 (18E182) - DeviceType: iPhone 11
Using the answer from fred's answer and getting the crash log from the actual device yielded this clue which was extremely helpful.
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: TCC, This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSUserTrackingUsageDescription key with a string value explaining to the user how the app uses this data.
Triggered by Thread: 1
I fixed it by changing "Embed & Sign" to "Embed without Signing" under General > Frameworks, Libraries and Embedded Content.
I didn't think this applied to me because I wasn't using the camera, but it did.
Many answers reference adding a Usage Description to Info.plist. I didn't know there are many more cases where a usage description is necessary (besides just the camera), see this link.
The link lists these services as needing a usage description or will cause this error:
Calendar, Contact, Reminder, Photo, Bluetooth Sharing, Microphone, Camera, Location, Heath, HomeKit, Media Library, Motion, CallKit, Speech Recognition, SiriKit, and TV Provider.
Add an entry to Info.plist, start typing "Privacy" as the key, and you will see all the available options pop up.
I've just had the same issue and the reason why was due to the fact that I've revoked my Developer Certificates and created new ones with Xcode 10, after a fresh macOS v10.14 (Mojave) update (for some reason, it deleted all login credentials and outdated some keychain certificates).
So, all I had to do was to remove the installed apps from my device and run them through Xcode again, in order for it to install the right new Provisioning Profile in my device :)
Actually, I had the issue with Xcode 11.3.1 and Thread Sanitizer was already turned off as mentioned in previous answers.
In my case, the issue was I used to have different Xcode versions in my Application folder like this:
/Applications/xcode11.3.1/Xcode.app
/Applications/xcode11.3/Xcode.app
/Applications/xcode10.1/Xcode.app
and
/Applications/Xcode.app - was 11.2
The build system looks on the /Applications/Xcode.app file by default. So bringing Xcode 11.3.1 to the /Applications/Xcode.app finally resolve the problem.
The same issue happened with me. I had iOS 14 Beta and the problem was fixed when I updated it to the official version.
I have fixed my error in my project.
I checked the other threads when the error happened. I found my error is about the camera.
Add the Camera privacy in the Info.plist file.
Open the info.plist file.
Add a new key called "Privacy - Camera Usage Description" and enter a string that describes why the app need camera. The describes will display when your app need to use the privacy.

iTunes software service authentication error domain error 434

I am uploading iPhone application using latest xCode 8. I have good internet connection and all the relevant settings set up at iTunes connect. My distribution profiles are also set up correctly.
I am facing below error:-
iTunes software service authentication error domain error 434
So this has what worked for me:
Preface:
4 days of debugging, recreated certificates numerous times, nothing worked, every time i try to validate/upload via Xcode it says same error "iTunes software service authentication error domain error 434"
Solution without XCode:
Create archive in Xcode
Export IPA in Organiser (Xcode > window > Organiser)
Open Application Loader and manually choose IPA generated
Done
Solution with XCode:
Create archive in Xcode
Click Validate
Unselect BitCode
Check if its validated, mine got validated when i unchecked bitcode
Not Try to genrate similar fashion with Bitcode unselected
If all goes fine now generate with Bitcode Checked(mine worked with these exact steps)
Done
This is a very common error while uploading a build to iTunes Connect.
A simple answer to it : "Just RETRY".
To resolve this error follow these methods.
If you have not added app icons add them and try archiving.
Remove developer account and add account again. Press CMD + , to bring up preferences in Xcode and from accounts remove and add back account. Try archiving this.
Clean project (CMD + Shift + K), close Xcode, restart Xcode and
build project (CMD + B). Check for warnings. ( if you are using
cocapods some times Xcode asks you to change project settings in
warning. Click on warning and fix it. Xcode fixes it automatically)
Simply retry archiving.
ToDo. Add More solutions
In my case the problem was the virus protection software I am using. I turned it off before attempting validation and everything went fine.
This could be the problem of Xcode. You can try two different approaches here.
i) Use Application loader, Download it.
ii) Before using Application Loader please un-install all certificate and upload the ipa file. If it fails via app loader.
then second approach we can use try to upgrade the version of Xcode. Either de-grade it (xcode 7.X) or upgrade it (8.X) some time with some specific version of xcode and and specific version of OS system throw such error.
Try using those hopefully second one can help you to upload the app.
Change the network connection and application submit via Application Loader
Did you set the device to Generic iOS Device before you archived the build? That appears to have fixed it for me on a couple of different occasions.
I got exactly the same error response, read a bunch of posts like this that were uncertain of cause & solution, tried to validate it again with zero changes, and it validated successfully. Go figure...
I had this same issue, but it turned out I used a different profile in the Xcode project, then when I tried to validate the app. It wasn't noticeable since at my company we use multiple Apple id's under the same businessname. Maybe checking this helps?
None of the solutions here worked for me but I was able to solve these errors executing the application on the device that is connected to the computer before archiving it. I tried to archive it again and the validate process was passed.
None of the answers worked for me. Following steps helped me fix it.
Quit the Xcode
Delete all provisioning profiles (/Library/MobileDevice)
Start the code and try to validate without download the provisioning profiles.
The xcode will download the profiles for you.
In my case I had 2 builds in the same app and when I tried to verify one of them it started giving the same error. I removed both builds and re archive. It worked fine after that.
In my case, I have checked iOS provisioning profile from developer website and found the one related to my app was invalid.
I have regenerated (all invalid) provisioning profiles and download it from xCode -> preferences -> accounts. This resolves my case.
I have a different solution. I had "Enable Bitcode" set as false in my target settings but had "Include bitcode" checked as true for the validation. For obvious reasons, the validation would fail every time if I had include bitcode checked. I unchecked include bitcode and it worked just fine after cleaning my project.
it is quite easy, quit and reopen the Xcode project clean the project change the build number and build an archive.it will work

Bitcode Auto Recompilation

we are in the final phase of App Store publishing. We could see new feature that added to iTunes connect that is not exist last year when i have published my last app.
My question is, If i have not enabled bit code for one of the library used in my app, then i have to enable the checkbox for "Dont use bitcode auto-recompilation" ???
Or simply my app is not bit code enabled, So i need to enable this checkbox???
No it is not necessary, I did not enable bit code in my app also not checked this checkbox.
Now my app is approved by apple and it is in Live !
You should disable bitcode checkbox as its stated in apple doc -
"If you provide bitcode, all apps and frameworks in the app bundle (all targets in the project) need to include bit code."
Here is the link for the same
https://developer.apple.com/library/tvos/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html
As far as I know;
you should not select that checkbox.
Although using bitcode, the ipa file size incerements, the application will be more healty.

XCode - Invalid Signature. Code not signed at all. ITMS-90035

I recently made some changes to my iOS app.
Now I want to push the new files to iTunes Connect and I keep getting "ITMS-90035 Invalid Signature. Code is not signed at all."
I found answers to similar questions here on StackOverflow but I there was no solution provided that worked for me.
Here is what I tried:
I tried to reactivate my certs / provisioning profiles to make sure they are valid and configured for deployment
I checked for .sh / .git files as mentioned here - but couldn't find any
I checked my build settings as mentioned here
I checked for external libs but I'm only using GoogleMobileAds and GoogleAnalytics - both worked in my last submit (this issue was mentioned multiple times with different external libs)
Any idea where to search? Sadly iTunes Connect doesn't give any feedback about which file makes the problems.
I noticed you tagged this under swift2. Are you using a beta Xcode to build and submit to the App Store? That's not permitted.
Crazily, I was able to fix this by unchecking the Include Bitcode ? checkbox when uploading via Xcode 8.1 (8B62). ENABLE_BITCODE is set to YES everywhere in my project, so I'm not sure what's going on here.
Will report back once it's sorted.

Resources