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

前端 未结 2 856
一整个雨季
一整个雨季 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:07

    https://github.com/jverkoey/iOS-Framework try this link for creation of framework and bundle of resources.wrap up the images, xibs and other resources you have used in your project into a bunble and copy your classes to your Cocoa Touch Static Library project.

    0 讨论(0)
  • 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.

    0 讨论(0)
提交回复
热议问题