How can I create static library and can add just .a file on any project in ios.
I tried doing this but couldn't do it.
Thanks in advance
if you want create static lib mean refer the link http://jaym2503.blogspot.in/2013/01/how-to-make-universal-static-library.html
Step 1 : Create a New Project, Named it "Logger"
Step 2 : Create Classes
You can create as many classes you wants, In our tutorial we will create one class named "Logger". So, now two files should be in our resource. 1. Logger.h 2. Logger.m
Step 3 : Put some useful code into Classes
Step 4 : Create New Target
Create New Target from File Menu.
New Target Select Cocoa Touch Static Library
Step 5 : Add files to Compile Resource
Select "Logger" Target of Static Library Go to Build Phases In Complied Sources section, Add all the .m and .mm files. In Copy Files section, Add all the .h files and resource files.
Build Phases
Step 6 : Compile Project with Static Library Target
Compile Project for iOS Device Compile Project for Simulator You can find two different .a files generated in build folders.
Find .a file
Step 7: Make Static Library Universal
You can find two different library now, one is for simulator and one is for iOS devices.
Create a New Folder and name it LoggerMerge.
Copy libLogger.a
file of Debug-iphoneos folder to "LoggerMerge" rename it to libLogger_device.a
Copy libLogger.a
file of Debug-iphonesimulator folder to "LoggerMerge" rename it to libLogger_simulator.a
Open LoggerMerge folder with Terminal
Fire below command
lipo -create "libLogger_simulator.a
" "libLogger_device.a
" -output "libLogger.a
"
Now, you can find libLogger.a in LoggerMerge folder, this is Universal static library file. Now, Just one thing you need is headers, See above screenshot there is folder called include in both build folder. Just copy header file from this folder.
Step 8 : Test Static Library
Create New Project, name it TestLogger
Import libLogger.a
and header files
Import header file "Logger.h
" anywhere you want to use
Now, Use this Logger class as default practice.
In our case, [Logger log:@"Test String"];
Run Project in Simulator and Device both
That's it!! You have your own static Library!!
Step 1: Starting a New Static Library Project
Open XCode and start a new project. Under iOS, select Library and “Cocoa Touch Static Library” say it as "staticlibrary". This will create a nice new project for us that builds a .a
file.
Step 2: Code your static library First we need to add some files. Add a new NSObject subclass to your project and name it StaticClass.Then Write some useful code in those files.
Step 3: Building And Distributing Your Library
Once you are happy with your library, simply build it in XCode. Obviously, don’t do build and run as you can’t run it (again unless you have a test suite). Now, look under the Products group in XCode and you should see a file called lib(libraryName).a. In our case, it’s libstaticlibrary.a
.
Right click on that file and select “Reveal In Finder”. Drag this file into a new folder that you create where you will be bundling all of your library files.Now, do the same with all of the .h files. In our case, just copy StaticClass.h
into this new directory. Your directory structure should now look like:
FolderName
|- libstaticlibrary.a
|- StaticClass.h
Now you can zip this folder and sell it to would-be iOS developers for millions!
Step 4: Linking Your Library In A New Project So now that you have built your shiny new static library, it’s time to test it out in another application.
Create a new View-Based project (or whatever it doesn’t really matter). Name it as Test.
Now, just drag this folder into the project and XCode will set up all of the linking automatically. When prompted to copy, I usually say yes, but you can do whatever you want depending on how you intend on using the library. Sometimes just linking and not copying is far more beneficial if you have multiple projects sharing a single library. It ensures that they all use the most up to date version.
You should now see the .a
file along with the header files in the new project.
Step 5: Using The Static Library Code
Now that all of the linking is set up, you just use your library like any other class.
For Further clarifications http://www.raywenderlich.com/41377/creating-a-static-library-in-ios-tutorial hope this tutorial helps for you.
Objective-C consumer -> Objective-C static library
Xcode version 10.2.1
Create an Objective-C static library or Create Objective-C static library Target
Create a library project
File -> New -> Project... -> Cocoa Touch Static Library -> Enter necessary information and choose Language -> Objective-C
Create module.modulemap
file
module module_name {
umbrella header "module_name-umbrella.h"
export *
}
Add .h
files to module_name-umbrella.h
that will be open for consumer
#import "header_1.h"
#import "header_2.h"
Add Copy Files Build Phase
Project editor -> select a target -> Build Phases -> Copy Files -> add `module.modulemap`, `module_name-umbrella.h`
Add Headers - .h
files from module_name-umbrella.h
(header_1.h
, header_2.h
) [public target membership]
Select `.h` file -> Select Inspectors Tab -> Target Membership -> Select the target and make it Public
//or
Project editor -> select a target -> Build Phases -> Headers(If it doesn't exist -> + at the top -> New Headers Phase) -> add all
Build library
Note: Be sure that you build library for the same process architecture as the client code.
Find generated output
Products group -> lib<target_name>.a -> Show in Finder
Note: By default it will be located in subfolder of DerivedData
folder (it can be changed if you delete DerivedData
during development process and rebuild it again).
The directory includes
lib<target_name>.a
– built static librarymodule.modulemap
filemodule_name-umbrella.h
fileusr/local/include
folder that includes.h
files frommodule_name-umbrella.h
- public interfaces/definitions
Using Objective-C static library
Link Library
Project editor -> select a target -> General -> Linked Frameworks and Libraries -> add -> Add Others... -> point to `lib<target_name>.a` file
//or
Project editor -> select a target -> Build Phases -> Link Binary With Libraries -> add -> Add Others... -> point to `lib<target_name>.a` file
Add Library Search paths
Project editor -> select a target -> Build Settings -> Search Paths -> Library Search paths -> add path to the parent of `lib<target_name>.a` file
Add Header Search Paths
Project editor -> select a target -> Build Settings -> Search Paths -> Header Search Paths -> add path to generated `include` folder (or a path to the parent of generated `module_name` folder with `.h` files)
- When you set a
path
you can define a path to one of parent folder and setrecursive
(/**
will be added to the end of the path). For example you can defile apath
toBuild
directory withrecursive
parameter. - If the
patch
contains spaces -, you should escape them using
\
or enclose the path in double quotes""
Import module to the Objective-C client code
@import module_name;
来源:https://stackoverflow.com/questions/17589359/how-can-i-create-static-library-and-can-add-just-a-file-on-any-project-in-ios