I've searched for hours but cannot find an answer. I have a xcode project with Cocoapods 0.39. in my Podfile i use !use_frameworks to enable a external Swift library in my Objective-C project.
But when i validate (or submit) with xcode, i get the codesigning dialog box. Normally only my app is shown but now it also shows the dynamic framework (cocoapods dependency). I think this is because of the !use_frameworks option.
The screenshot shows the dialog:
Screenshot
I can upload my binary to testflight and it will get processed but is this something i need to worry about? Is likely that apple will reject my app because of this?
There is nothing to worry about it, cocoapods are usually shown in codesigning dialog box, every cocoapod dependency that you will use will be shown there, there will be no issue and Apple will also not reject cocoapods
If you can upload your binary, I guess your minimum deployment target is iOS 8.0 or above, also in your Swift source code, you must
import AXRatingView
If your App's minimum deployment target is iOS 7, you can do this in the Podfile
#use_frameworks!
and comment
//import AXRatingView
then in your ...Bridging-Header.h
#import <AXRatingView/AXRatingView.h>
My App's minimum deployment target is iOS 7.0, ready for sale now.
Related
We have developed a Watch App for our React-Native IOS app using SwiftUI. After the the integrations are completed, we've tried to upload the build to TestFlight for testing purposes. In the process, since enabling bitcode is mandatory for WatchOS apps, it is enabled through Project Target -> Build Settings -> Build Options -> Enable Bitcode : Yes (And also tried to enable bitcode for Pods target). However, there is no other option to enable bitcode in the Watch Targets (both watch app and watchkit extension).
When we tried to upload the build to TestFlight, it got rejected with the error code ITMS-90496: Invalid Executable - The executable "{ProjectName}/Watch App WatchKit Extension.appex/WatchKit Extension" does not contain bitcode.
I have also read that in order to make the whole project bitcode enabled, you need to make sure that the libraries are also bitcode compatible. And since the app is a React-Native app, it contains a lot of 3rd party libraries. If anyone who tried to add a Watch App to an existing React-Native project and managed to upload it to TestFlight can help us during the process, it would be really helpful.
For those who are experiencing the same issue, our was in RN 0.63.* version, and the third party libraries were kind of old as well. After upgrading both RN and the third party library versions, the issue is gone and we're now able to upload to Testflight!
In my case it helped to open the project.pbxproj file in an editor outside of Xcode (e.g. VSCode) and remove all lines that contain ENABLE_BITCODE.
Seems the default settings of ENABLE_BITCODE are the right ones. Somehow Xcode puts in these lines without needing them.
My Swift 4 app rebuilds and runs successfully on all simulators except for Generic iOS Device. If I try to archive it or do a rebuild on Generic iOS Device, I get a No such module error relating to one of my pod frameworks.
I tried adding the framework to Linked Frameworks and Libraries, and that removed the error, but then it fails on the next pod framework, and so on. I have tried all sorts of paths in Framework Search Paths with no luck.
Currently, the value is set to:
I even tried deleting the workspace, the pod lock file, and the pods folder, and then I did a pod install to rebuild everything. Again, it rebuilds clean on any simulator except the generic one. On the generic one, I get No such module on all import statements for pod frameworks.
Any suggestions appreciated, as this problem has me completely stalled, since I can't get a release out.
For me what fixed it was removing one line from my Podfile and rerun pod install.
platform :ios, '11.0'
I think the version of the pods was not aligned with the version of my target, causing this issue.
I was able to fix the problem editing the ios version line in the Podfile to match the Project target version (10.0 in this case) in Info.
#Podfile
platform :ios, '10.0'
Finally I had to run
pod update
After that, I was able to Archive my project selecting Generic iOS Device
In my case I had selected a Device on Xcode when archiving, choosing Generic iOS Device solved my problem.
It's better to check the project settings by going to Build Settings, find Framework Search Paths and add $(SRCROOT) and be sure it's recursive.
I kept facing the issue "No such module" while archiving the app.
I tried this approved answer and it worked perfectly but, a new warning was appearing in my Podifle.
So I did the below and it worked without any warning.
Podfile :
XCode -> Targets -> My App -> General :
switched iOS from 10.0 to 11.0 and then everything worked perfectly.
Seems like by opening up the project by double clicking Runner.xcworkspace instead of Runner.xcodeproj, xcode can finally figure out where everything is. Even though you can still debug in an emulator and on a connected phone from the .xcodeproj file...
Seems strange that it would fix it. But I'm happy to have an Archived build now.
Check out this link for more info
There is another case similar to the same error. when you have an Embedded Framework project with min iOS 10 (Any iOS Device arm64, arm7) while I am archiving the build of the project with min deployment version iOS 11(Any iOS Device amr64) in Xcode 12.5.1.
I have to change the min deployment version of the Embedded Framework project to iOS 11(Any iOS Device amr64) to match with my project's deployment version.
first build your project command + b and see if the frameworks are in red when you look at then at the right sidebar, if they are, xcode did not find your files on the specified path, if not, building and then archiving should work
I was able to get it to archive by re-creating the project from scratch. I created a new project, used the same pod file to install the pod libraries, then copied everything over from the other project. I am now able to archive it and push it to the store. Must have been some corruption or a rogue setting.
In my case, the module which couldn't be found was a dynamic Obj-C framework with a minimum deployment target higher than my application project's minimum deployment target. Bumping my minimum version fixed it, but you could drop the version on the framework instead.
I want to archive my app with selecting the Build Option "Generic iOS Device" (and i've done that a couple of times before i upgraded to Xcode 9.2) but unfortunatly it fails every time saying "No such module 'CryptoSwift'".
To make it clear, it doesn't have to do anything with SwiftyBeaver; it maybe have to do with my CocoaPods, maybe they don't like that libraries against the target. Or maybe with Xcode 9.2 itself.
To be more specific, it fails here:
import CryptoSwift //No such module 'CryptoSwift'
Whenever i select the simulator or a device (for building, not archiving), it compiles and everything works as expected.
Any suggestions?
The answere was in the first line of my cocoa pod file:
platform :ios, '11.0'
Instead of using 11.0, i changed it platform :ios, '11'.
And than i had to change the deployment target to 11.2. I don't know, what that was changed to 10.0 but those two changes did it.
So if you guys are using any minor versions of iOS in your pod file and you aren't sure, if it exists, just leave it blank!
Apparently it did cause those No such module '' errors, because the compiler wasn't able to build that frameworks in the Derived folder because it didn't know what iOS Version i wanted them to be built.
I am currently using XCode 6.3. My project is using CocoaPods.
I have set Deployment Target to be iOS7.0 for both my project and Pods. Also, I have validated my archive and it was successful.
But, when I clicked "Submit to App Store...", it failed with the following errors.
"Invalid Info.plist value. The value for the key ‘MinimumOSVersion’ in bundle ActionSheetPicker_3_0.framework is invalid. The minimum value is 8.0"
"Invalid Segment Alignment. The app binary at ‘AHKActionSheet’ does not have proper segment alignment. Try rebuilding app with the latest Xcode version."
Please help!!! I really need my app to work for iOS 7+, because I am from Myanmar and lots of people here are still using iOS 7. Thanks a lot!!!
The error appears because you are using the ActionSheetPicker framework which apparently requires iOS 8.
So you should review your ActionSheetPicker framework. Is there a version which supports iOS 7? If not you should use another framework.
As Dung says ActionSheetPicker requires iOS8. You have several options:
Weakly link the ActionSheetPicker framework, and use an alternative for iOS7
Fix (or ask developer to fix) ActionSheetPicker so it works with iOS7 (according to his Readme it should work with iOS 5.1.1+). It is likely only the case of changing deployment target of the framework and rebuilding.
Use a different library for this purpose, or code this functionality yourself.
Always test on the target iOS versions before you release to apple!
I've created a project in Xcode 5.0 (yes, Developer Preview) for the beta iOS7 software because I wanted to play around with the new beta stuff. But I actually decided to submit the App I was playing around with to the App Store and since this is not possible with preview Xcode versions I fixed all compatibility issues to make the code work with Xcode 4.6.3 and iOS 6. Except for one thing.
And that's importing third party frameworks like Flurry (analytics framework) or Crashlytics (crash reporting framework).
Both are correctly imported and set up with targets (it's all working in Xcode 5.0) but I'm getting a 'Crashlytics/Crashlytics.h' file not found in the line I'm importing the needed classes (#import <Crashlytics/Crashlytics.h>) in Xcode 4.6.
The same is true for the Flurry framework analogously. The crazy thing is, both libraries show up in the targets 'Link Binary With Libraries' list, even in Xcode 4.6.
Does anyone have an idea how I can get things work in Xcode 4.6? Are there any further ways to influence the importing?
The link binary with libraries is not the issue here. You have to confirm your Header Search Paths in your build settings. I think Xcode 5 might use a different variable for it, and that is why Xcode 4.6 will get confused (just a guess though). Anyway, confirm that the path to those headers is in your Header Search Path. The Crashlytics app will automatically add it for you, actually.