In iOS, React Native support CocoaPods for Objective-C and Swift code.
Is there any way to bring 3rd party libraries via Swift Package Manager?
You can perfectly add SPM to iOS project inside your React Native solution.
Treat it as a common iOS dependency.
You can present any viewControllers from rootViewController
Related
I have a small Swift library intended to import a c library for use in Swift.
I'd like to use that in a "hello world" Mac app I have built in Xcode. This seems like a very simple use-case, but I have not been able to figure out specific steps will let me include that swift library -- add to targets? import the library project into xcode? build as a framework and add? This feels very elementary, but I can't find an up-to-date how-to for Swift 5 and Xcode 10.2.
I am currently building code that I would really like to use as a framework by being able to import MyCustomFramework as I would with Apple frameworks (in the future I would also like to distribute them).
I have some questions about that :
What is the easiest way to build a framework as what I want? Is this possible to do it directly in Xcode or do I need to use command line tools in the Terminal?
Will this framework be compatible with multiple platforms (I am thinking about all Apple platforms but also about other platforms supported by Swift such as Linux).
What is exactly the link between Swift frameworks and the Swift Package Manager ? Do I need SPM to build my framework or is this two different tools?
Thank you.
Currently, Swift Package Manager (SPM) and Xcode Frameworks follow different paths. For Linux, you have to follow the SPM path since the only way to compile a Linux swift application is to use SPM. For macOS command line apps, you can follow the SPM path as well. For iOS apps and macOS UI apps, you have to follow the Xcode Frameworks path.
For the SPM path, you make the project of your framework SPM-enabled: add Package.swift file and set the file layout of your project according to SPM conventions. The project also has to be a git repository. Then the git repository of your project can be specified as a dependency to other SPM-enabled frameworks/applications. Each SPM-enabled project can be converted to an Xcode project any time by using swift package generate-xcodeproj command.
The Xcode Frameworks path is the standard, pre-SPM way of working with frameworks with Xcode, which is described elsewhere. You create an Xcode Project that will define your framework.
So, if you want your framework to be used both in SPM-enabled projects for Linux and macOS command line apps, and in Xcode-enabled projects for iOS and macOS UI apps, you have to follow the dual path. You make your project SPM-enabled and add an Xcode Project which will define your framework. You will have to maintain your project information twice - in Package.swift file and in the Xcode Project.
I gave a detailed answer on how to use Xcode to create a Framework target in an answer 2 weeks ago here. The question wasn't specifically related to Frameworks, so I can understand how it doesn't come up in a search. (I also believe if I copied/pasted it here that would be unwelcome, but if I'm wrong I'll do it.)
For now a Swift Framework target can be compatible across Apple platforms, provided you separate UIKit, Foundation, and core code into their own frameworks. (There may be a better way but that's the best way I know.
About Swift core code: Currently Swift is (still) evolving fast. Swift 3 is beginning to have production server-side use and some Linux use, but right now with no binary compatibility (that's part of Swift 4) I'd stick to Apple platforms.
I've heard conflicting things about Swift version compatibility between Swift 2 & 3. By this I mean you can use both in the same project, but there are hurdles if you do.
I have my drupal xml-rpc service setup, and now I want to retrieve content for my iphone app.
I'm attempting to use https://github.com/eczarny/xmlrpc, however I dont know where to begin. How do I add the project to my own project for use? I've added a static library before; is it the same process? Just drag the proj file to my project and add the xml-rpc library?
Any tips would be appreciated.
Try dragging the project file for xmlrpc framework into the code list in XCode for starters. Next make the framework target in the xmlrpc framework a build dependency. Finally add the xmlrpc.framework to your linked frameworks. Exactly how you do this depends on whether you are using XCode 3 or 4
Not many libraries such as GHUnit suggest you to use them as a Framework.
While most libraries such as Facebook iOS SDK just require you to drag the project into existing XCode project.
So when you are building a library which suppose to be re-use by other project in the future, should you use Framework or just like many current opensource projects, don't use Framework provided by XCode.
There is a reason why those opensource projects are provided as static libraries or just source code and not Framework, Frameworks are currently not supported by iOS SDK.
You can only use Frameworks provided by Apple - parts of SDK itself. Your code cannot be linked against your own or third party Frameworks.
So stick with one of those ways - I personally prefer static libraries.
I am used to Visual studio, I have class library projects that I reference in my web sites or windows applications. Using class libraries allows me to create common functionalities, utilities once and use them over and over again.
How do I do this with Xcode and iPhone App development?
I am looking for some details on how to create the library, where to stores the files and how to reference in my App. That is if it is possible.
I am very very new to Mac and Xcode.
Creating a Static Library for iPhone App
On the iPhone, you need to create a 'static library' target. This will build your code into a .a file which will then be integrated directly into your iPhone application.
http://db-in.com/blog/2011/07/universal-framework-iphone-ios-2-0/
This way has worked for me. If you need to use xibs or other non-compilable resource files in the framework, look at the embedded framework section.