ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kin
    Library 2021. 12. 4. 11:46

    안녕하세요. 그린입니다🟢

    이번 포스팅에서는 Kin이라는 라이브러리에 대해 알아보려합니다💁🏻

     

    Kin? 이름으로는 뭔가 매우 많이 친숙하지 않나요?🤭

    KIN이러면 더 친숙할까요? 생각나는게 두가지라면 예전 시대에 살고 있는건가 싶습니다🥲

    뭐 무튼..! 그걸 떠나서 Kin이 무엇일까요?

     

    다들 협업 혹은 개인으로 작업을 하더라도 서로 다른 브랜치들을 병합하고 컨플릭을 다 처리하였는데..!

    빌드가 안돼🤯 아니 빌드가 안되는걸 떠나서 아예 프로젝트 파일을 찾지도 오픈할수도 없는 경험들이 있으신가요?

    저는 최근 거의 어제라고도 할 수 있겠네요😅

    이런 상황을 겪었는데 스마트 하시고 존경하고 있는 사수 개발자분께서 Kin을 추천해주셔서 알게되었습니다!

    그래서 그 신세계의 충격을 같이 전달해드리고 싶어서ㅎㅎ.. 

    이어서 계속 진행하자면..!

    바로 요딴 짜증나는 상황들을 겪어보신적이 있으실겁니다 분명😭

    분명히 컨플릭 나는 부분들이 표시되는(<<<<< ==== >>>> 요런)것들을 전부 바로 잡아주었고 더이상 컨플릭이 나지 않는데 도대체 왜!!

    이런 거지같은 상황을 만나게 되는것일까요?

     

    이런 경우는 대부분 프로젝트 구성 파일에서 무언가 빠졌거나 잘못되어 깨지게 되는 현상입니다.

    그럼 정말 프로젝트가 커지면 몇천줄이 훌쩍 넘는 프로젝트 파일에서 어떻게 누락된 부분 혹은 잘못된 부분을 찾느냔 말이죠🤯

    이럴때 Kin이라는 라이브러리를 활용하면 됩니다!! (신세계....🚀)

     

    자 그럼 이제 본격적으로 Kin에 대해 예시를 보면서 잘못된 부분을 바로잡아 볼께요!

     

    Kin 라이브러리 설치

    https://github.com/Serchinastico/Kin

     

    GitHub - Serchinastico/Kin: Simple PBXProj Verifier

    Simple PBXProj Verifier. Contribute to Serchinastico/Kin development by creating an account on GitHub.

    github.com

    설치가 정말 정말 간단해서 설치라고 하기도 애매한.. 뭐 그렇습니다 예..

    블로그보다 저 링크의 리드미를 읽으면서 바로 해보셔도 됩니다!

    그렇지만 저는 저만의 설명을 이어갈께요!

    - 터미널에서 아래 명령어를 통해 kin 설치

    pip3 install kin

    리드미에는 pip(python2) 명령어로 설치하라 하였는데 저는 맥에 기본적으로 python3로 깔려있어 pip3 명령어로 입력해줍니다.

    설치 끝..👍

     

    Kin 라이브러리 사용

    설치 너무너무 쉽다 정말😀

    근데 사용은 더 쉬워... 한번 보시죠!

     

    1. 해당 프로젝트 파일 Kin 체크

     kin project.pbxproj

    우선 프로젝트 파일 경로에서 xcodeproj 확장자를 가진 녀석을 터미널로 열어줍니다.

    그 하위에 project.pbxproj가 있기에 해당 파일을 kin으로 체크해줍니다.

     

    2. 아무 잘못된 부분이 없는 클린한 상태

     kin project.pbxproj
     CORRECT

    클린하다면 이렇게 뜰겁니다!

    그럼 뭐 문제없는거겠죠!

     

    3. 문제 발생🚨

    저는 우선 강제로 프로젝트 파일에서 필수 데이터를 지우며 문제를 발생시켜봤습니다.

    빌드 실패 혹은 파일이 열리지 않을 수 있도록..!

    kin project.pbxproj
    ERROR: line 86:3 mismatched input 'productReference' expecting {'productInstallPath', 'packageProductDependencies', 'productName'}
    ERROR: line 86:60 mismatched input ';' expecting '='

    짠 이렇게 어느라인에 완전히 자세하진 않지만 유추할 수 있도록 어떤 문제가 발생하였는지 알려줍니다..!

    그럼 따라서 고쳐보죠!

     

    > 수정 전 해당 라인 프로젝트 파일

    /* Begin PBXNativeTarget section */
    		12E9A28E275B06A900D89869 /* KIN */ = {
    			isa = PBXNativeTarget;
    			buildConfigurationList = 12E9A29D275B06AA00D89869 /* Build configuration list for PBXNativeTarget "KIN" */;
    			buildPhases = (
    				12E9A28B275B06A900D89869 /* Sources */,
    				12E9A28C275B06A900D89869 /* Frameworks */,
    				12E9A28D275B06A900D89869 /* Resources */,
    			);
    			buildRules = (
    			);
    			dependencies = (
    			);
    			name = KIN;
    🚨          productReference = 12E9A28F275B06A900D89869 /* KIN.app */;
    			productType = "com.apple.product-type.application";
    		};
    /* End PBXNativeTarget section */

    빨간 경고등이 있는 부분이 86번째 라인입니다.

    한번 에러 메시지를 해석해보죠..!

    86번째 라인에 productReference가 들어가있는데 인풋값이 미스매치 즉 맞지 않는것이 들어가있다 라는것 같습니다.

    그다음 expecting으로 항상 어떤 예상값이 들어와야하는지 대략적으로 알려줍니다.

    저중에 딱봐도 productName은 있어야할것 같은데 없네요?

    아하 그럼 프로덕트 네임값이 빠졌구나 생각할 수 있습니다.

    그럼 해당 부분을 고쳐보죠

     

    > 수정 후 해당 라인 프로젝트 파일

    /* Begin PBXNativeTarget section */
    		12E9A28E275B06A900D89869 /* KIN */ = {
    			isa = PBXNativeTarget;
    			buildConfigurationList = 12E9A29D275B06AA00D89869 /* Build configuration list for PBXNativeTarget "KIN" */;
    			buildPhases = (
    				12E9A28B275B06A900D89869 /* Sources */,
    				12E9A28C275B06A900D89869 /* Frameworks */,
    				12E9A28D275B06A900D89869 /* Resources */,
    			);
    			buildRules = (
    			);
    			dependencies = (
    			);
    			name = KIN;
    🟢		    productName = KIN;
    		    productReference = 12E9A28F275B06A900D89869 /* KIN.app */;
    			productType = "com.apple.product-type.application";
    		};
    /* End PBXNativeTarget section */

    짠 이렇게 간단히 빠진 부분을 체크해서 넣어줍니다.

    그리고 다시 Kin으로 체크해보면 CORRECT로 깔~~끔하게 해결된걸 볼 수 있습니다!

     

    마무리

    자 정말 사용도 간단한데 큰 역할을 해주죠?

    진짜 진짜 소소할지 모르겠지만 이런 설정에 익숙하지 않고 어려워 하는 저에게는 참 신세계🚀

    여러분도 도움이 되셨으면 좋겠습니다🙌

     

    [참고자료]

    https://github.com/Serchinastico/Kin

     

    GitHub - Serchinastico/Kin: Simple PBXProj Verifier

    Simple PBXProj Verifier. Contribute to Serchinastico/Kin development by creating an account on GitHub.

    github.com

    'Library' 카테고리의 다른 글

    Macaw Vector Graphics Library  (0) 2021.12.20
    Code Scanner  (0) 2021.12.07
    Stryng  (0) 2021.10.24
    NaverMap SDK - 경로선 & 화살표  (0) 2021.08.13
    UIKitPlus - View  (0) 2021.06.26
Designed by Tistory.