简体   繁体   中英

How to convert an Xcode project into a static library or framework?

I have a project which I need to import into other project as a framework just like how we import Coredata framework, Quartzcore etc..How to achieve that ? How to compile my project into a library or framework which can be imported into other projects ? Please explain the steps.

Thanks in advance.

https://github.com/jverkoey/iOS-Framework尝试使用此链接创建框架和资源包。将项目中使用的图像,xib和其他资源包装成bunble并将类复制到Cocoa触摸静态库项目。

If you want to compile a 'standard' framework like UIKit.framework, try this Universal Framework iPhone iOS

else

  1. Create a new Project named 'TestPlugin' and choose type "Cocoa touch Static Library". Here you will have a target 'TestPlugin.a'.
  2. Add a new target. In left corner of project's setting, the name is:'Add Target'. Choose 'Bundle' in 'Framework and Library' in 'OS X'. This your second target named 'TestPluginBundle.bundle'.
  3. In your TestPlugin.a target's 'Build Phrases' setting, add a new 'Target Denpendencies'. This will firstly generate the .bundle file and then the .a file.
  4. Copy and add all your 'Original' project's file(exclude the main.m and the .xcodeproj file) to TestPlugin project.
  5. In TestPluginBundle's 'Build Phases' setting, add all .xib .png(maybe .jpg) file to 'Compile Sources'. Add spacial resource(such as .wav, .gif and .html) to 'Copy Bundle Resources'.
  6. Replace all code that load resource from main bundle to load resource from TestPluginBundle. Maybe you want to add a category for UIImage because you want to use imageNamed: so that you can use [UIImage testPluginImageNamed:@"small.png"] . It's easy to do replace in your project and add the related header file. Take .xib file For example:

     - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { //self = [super initWithNibName:nibNameOrNil bundle:[NSBundle mainBundle]]; // you need to define a method to get the bundle 'TestPluginBundle.bundle', here I used '[TestPlugin TestPluginBundle]' self = [super initWithNibName:nibNameOrNil bundle:[TestPlugin TestPluginBundle]]; ... } 
  7. After this add the .a file and .bundle file to another project. In the another project you need to add the related framework again.

I've successfully used this method for my work.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM