iOS Framework 开发制作学习笔记

2,341 阅读1分钟

假如现有一TestApp工程,我们需要为该项目开发一登录SDK,使用Xcode打开TestApp工程,然后按如下步骤:

  1. 新建一工程,File -> New -> Project...

  2. 选择 iOS -> Framework & Library -> Framework

  3. 按 Next

  4. Product Name: 输入 LoginSDK

  5. Add to: 选择当前的工程名称 TestApp

  6. 按下 Create

  7. 在Project Navigator中找到 LoginSDK目录,点击右键,New File... -> iOS -> Cocoa Touch Class -> Next

  8. Class 一栏里面输入:LoginViewController

  9. Subclass of 选择 UIViewController,Language 保持 Objective-C,点击 Next -> Create

  10. 找到 LoginSDK.h,增加一行:
#import <LoginSDK/LoginViewController.h>

所有要对外输出的接口头文件,都应该按此方式添加在这里

11. 选中 LoginSDK.xcodeproj,再选中TARGETS: LoginSDK

12. 切换到 Build Phases,展开 Headers,将LoginViewController.h 拖到 Public

13. 选择 TestApp,Targets: TestApp

14. 切换到 Build Phases,在Link Binary With Libraries中添加 LoginSDK.framework

15. 在TestApp 中,找到ViewController.m,增加代码:#import <LoginSDK/LoginSDK.h>,注意,一般来说,使用者只需要包含这一个头文件

16. 然后在 viewDidAppear 中编写如下代码:

    LoginViewController * loginController = [[LoginViewController alloc] init];
    [self presentViewController:loginController animated:YES completion:nil];
  1. 编译运行 TestApp(模拟器),可以看到TestApp 成功运行,一个空的ViewController已经弹出来了,如果在[LoginViewController viewDidLoad]中为self.view 添加一个视图例如按钮什么的,是可以看见这些元素的

  2. 但是,如果终止程序,从模拟器屏幕上,点击 TestApp,程序一启动就闪退了

  3. 终端执行 open ~/Library/Logs/DiagnosticReports/ 查看模拟器崩溃日志,会发现如下错误:Library not loaded: @rpath/LoginSDK.framework/LoginSDK

  4. 解决办法:选择TestApp,Targets: TestApp,切换到 Build Phases,+ -> New Copy Files Phase -> Copy Files -> Destination,选择 Frameworks,添加 LoginSDK.framework

  5. 重新编译运行程序,然后终止运行

  6. 从模拟器屏幕上,点击 TestApp,运行正常。