2021년 2월 10일 수요일

[ios] object-c 로 framework만들기

 Object-c 로 framework만들기

ios8 부터는 framework형태로 라이브러리 제작이 가능하다. 이를 cocoapod등에 올리면 cocoapod install명령으로 간단하게 누구나 사용할수있는 라이브리를 만들수 있다.


1. 일단 file-> new -> workspace 를  만든다. (MY_IOS_FRAMEWORK폴더로 만들고, my_ios_framework이름의 스페이르를 만들었다)

2.만들면 에디터에 아무것도 없는데, file->new->project를 선택하여 밑의 Framework & library에서 Framework 를 선택한다.
https://github.com/sugoigroup/ios_framework_sample/commit/6e2d9bf1b32b893803468715e9e889e8da260e03

3.Product Name 은 적당하게 입력( myframework ) 

4.다음 화면에서 프로젝터의 폴더를 선택하라고 하는데, 폴더를 아까 만든 workspace 를 선택(MY_IOS_FRAMEWORK)하고 , 중요한건 [ Add to] 에서 아까 만든 워크스페이스를 선택(my_ios_framework)한다.

5. PROJECT 에서 myframework(서류상자)를 선택하고 Build Settings 에서 Architectures -> Build Active Architecture Only 를 No로 한다.(Debug때만 Yes로 하며, 이렇게 하면 빌드시에 연결된 기기에 맞게 아키텍쳐가 구성됨.) 
https://github.com/sugoigroup/ios_framework_sample/commit/9bc32aaa070d65230dbee79cfe33326c10e5d817

6.TARGETS에서 에서 myframework(서류상자) 선택하고 Build Phases 에서 Headers 에 myframework.h 가 public 에 있는지 확인

7. 현재 framework 는 만들어 졌지만, 아무기능도 안하므로 로그라도 찍는 녀석을 만들자. myframework(누런폴더) 에서 File -> new -> file... 선택하고 [ Cocoa Touch Class]를 선택해서 "MyLogger "(NSObject - Object-c) 입력하여 파일을 만들자.
https://github.com/sugoigroup/ios_framework_sample/commit/015d51bfde20328e82403096ac4566ef6a3b9307

8. MyLogger.h(헤더파일) 과MyLogger.m(바디화일)에 할일들을 넣어보자. 이 프레임워크를 이용하는 쪽에서 (싱글천) 객체를 초기화시에 로그를 찍겠다고 true  를 설정하면 로그가 찍히는 작업을 만들어보자.
https://github.com/sugoigroup/ios_framework_sample/commit/45f3f30468762e320b9a6f50586bf11fcb961330
 

9. MyLogger를 만들긴 했어도 외부에서는 볼수 없는 상태이기 때문에 , MyLogger.h 를 선택하여, 오른쪽의 Target Membership 영역에서 myframework: Project 로 되어있는 부분을 myframework:Public으로 바꾸자.
그리고 myframework.h 의 맨밑줄에 #import <MyLogger/MyLogger.h> 를 추가하자. 실제로는 이거다 . #import <myframework/MyLogger.h>
https://github.com/sugoigroup/ios_framework_sample/commit/0039f77376cdbae22a158f5af39a85081bf54d6a

10. 이제 Product > Build 해보면  왼쪽의 Products(노란색)밑에 myfamework.framework 파일이 생긴다.(원래 있었지만 빨간색이었을지도 )

11.  myfamework.framework를 사용할 사용자앱(customerformyframework)을 만들자. File->new->Project 에서 간단한 앱을 생성한다.(폴더는 MY_IOS_FRAMEWORK 하위에 생성되도록 했다. 딴데두기 귀찮아서..)
https://github.com/sugoigroup/ios_framework_sample/commit/9d6db6236bed8f1b8ce64b716a7c4710cc292c92

12.여기에 이제 myframework.framework를 넣어야 하는데, 그냥 myfamework.framework 파일을 잡고 새로열게된 customerformyframework 편집창의 왼쪽 맨위의 파란색Xcode아이콘 밑에 넣자. ( Copy Items if needed 선택하자.)

13. ViewController.m 파일에서 사용해보자.
아! customerformyframework에서  TARGETS > General > Frameworkds, Libraties 에 보면 Embed 가 Do Not Embed 로 되어있는데,  Embed Without Signing 으로 선택하자.
https://github.com/sugoigroup/ios_framework_sample/commit/034dd5315c94dbb7556003c30b15d0a109f9b617

#import "ViewController.h"

#import <myframework/myframework.h>


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    

    MyLogger *mylogger = [MyLogger sharedInstance:TRUE];

    [mylogger printMyLog:@"taeho"];

}



@end



14. 실행하면 로그가 찍힌다..


2021-02-10 23:59:56.856301+0900 customerformyframework[82872:2892194] Log your name: taeho


MyLogger *interface = [MyLogger sharedInstance:FALSE]; 를 FALSE로 하면 안찍힌다.

0 comments:

댓글 쓰기