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

前端 未结 2 857
一整个雨季
一整个雨季 2021-02-04 07:40

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 pro

2条回答
  •  借酒劲吻你
    2021-02-04 08:08

    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.

提交回复
热议问题