Cocoapods resync xcframework framework - frameworks

I use xcframework with cocoapods 1.9.0.
The Pods-XXX folder has new shell file to install xcframework: Pods-XXX-artifacts.sh.
Build the project, xcode will generate cache at /Debug-iphonesimulator/.
When the xcframework update, it will not delete framework and resync framework at /Debug-iphonesimulator/.
Check the Pods-XXX-frameworks.sh file, it does not generate install_framework script.
So how should I do?

Related

Is it possible to produce an XCFramework from a Swift Package with dependencies?

I want to be able to take an internal SPM package, which depends on several other internal (and one external) SPM packages, and compile it into an XCFramework, using a series of xcodebuild like you would for a framework project. For example, I have PackageB, which references PackageA, and I'm trying to build PackageB.xcframework. The first step would be:
xcodebuild -scheme PackageB -destination "generic/platform=iOS" -configuration Release ARCHS="arm64" BUILD_DIR="./Build
The tool's output indicates that the dependency packages are being resolved, but they are then not recognized by the compiler (i.e. code in PackageB which references PackageA will not compile because PackageA is unknown at that point).
Thanks for any pointers.
You can create xcframework from swift package by using swift-create-xcframework command line tool, there is also GitHub action available for this.
If you don't want to use this tool, you can generate Xcode project by using swift package generate-xcodeproj command:
OVERVIEW: Generates an Xcode project. This command will be deprecated soon.
USAGE: swift package generate-xcodeproj
OPTIONS:
--xcconfig-overrides
Path to xcconfig file
--output Path where the Xcode project should be generated
--legacy-scheme-generator
Use the legacy scheme generator
--watch Watch for changes to the Package manifest to
regenerate the Xcode project
--skip-extra-files Do not add file references for extra files to the
generated Xcode project
--version Show the version.
-h, -help, --help Show help information.
and then create xcframework with the generated Xcode project.

Generamba setup failes when using Cocoapods

Only when using cocoapods(after run pod install), generamba setup failes with the following message when settin path to a .xcodeproj.
The path to a .xcodeproj file of the project is 'GrambaSample.xcodeproj'. Do you want to use it? (yes/no) yes
/Library/Ruby/Gems/2.3.0/gems/xcodeproj-1.4.2/lib/xcodeproj/project/object.rb:321:in `configure_with_plist': [!] Xcodeproj doesn't know about the following attributes {"inputFileListPaths"=>[], "outputFileListPaths"=>[]} for the 'PBXShellScriptBuildPhase' isa. (RuntimeError)
This error won't appear is not using cocoapods.
How can I be able to setup Generamba while using cocoapods.
To avoid this issue you should update CocoaPods to the latest beta version by executing
gem install cocoapods --pre
Latest beta version of CocoaPods now using inputFileListPaths and outputFileListPaths.
More info here See .xcfilelist Support

Module compiled with swift 4.0 cannot be imported in swift 3.1 — Carthage

I wanted to test my app using Xcode 9 beta. Now I am back to Xcode 8 and I have the following error:
Module compiled with swift 4.0 cannot be imported in swift 3.1
To solve this error I refresh all Carthage build and made some cleaning:
removed all Carthage build and checkout
removed Derived Data directory
cleaned the project
run carthage update
But the error still here.
Carthage
The command used is: 'carthage update --platform iOS'
As the problem lie on always the same framework, DeviceKit I then manage to remove it from Cartfile.
Project build then show errors as DeviceKit is not found.
I then re-add it to Cartfile and run carthage update DeviceKit --platform iOS --no-use-binaries
And the error re-appear.
This related question bring answer but for Cocoapods: Module compiled with swift 4.0 cannot be imported in swift 3.1
Solved by the following steps:
delete some Derived Data for Carthage: rm -rf ~/Library/Caches/org.carthage.CarthageKit/DerivedData
delete the Carthage folder for your project
Update Carthage: carthage update --platform iOS
I found the answer on the dedicated Carthage' page on GitHub: https://github.com/Carthage/Carthage/issues/2062

How to update the version of compiled framework

I am using XCode 8.3 and I am trying to Run my project which is connected with link and now I have a XCode Error: Module compiled with Swift 3.0.2 cannot be imported in Swift 3.1
So my question is how to update the version of the framework?
I downloaded this framework from the link that I've posted above.
I think that you need to update CocoaPods to a newer version supports XCode 8 (CocoaPods 1.1.0 or newer):
sudo gem install cocoapods
Then do a pod update to fix your dependencies that are not linking:
pod update
Delete the DerivedData folder for your project and rebuild, the link error should be gone.

Unable to build ScanApiSdk with error ScanApiHelper.h file not found

I am attempting to add in the Socket Mobile ScanApiSdk into my project but it is failing to build with the error 'ScanApiHelper.h' file not found. I have installed it into my project workspace using the CocoaPods method. Unzipped the SDK into a folder at the same folder level as my project folder. Adding the following line to my Podfile.
pod 'ScanAPI', :path => '../scanapisdk'
Then ran the pod install command at prompt. Launched project from the xcworkspace file and then added the following line to my bridging header.
#import "ScanApiHelper.h"
Build fails at this line in the bridging header.
Xcode Version 8.0 (8A218a)
gem --version 2.0.14.1
pod --version 1.0.1
ScanAPI SDK Version 10.3.55
I was able to download the sample SingleEntrySwift project from Github, build it, and load it on my iPhone for testing.
Can someone help point out what I am doing wrong in my own project or troubleshooting steps?
I had this issue too and this solution worked for me.
Basically, you don't need a bridging header if you use use_frameworks!. Instead you just import ScanAPI in any swift files that use ScanAPI.