16
37애플리케이션 배포하기

32 osx app_release

Embed Size (px)

Citation preview

Page 1: 32 osx app_release

37장

애플리케이션 배포하기

Page 2: 32 osx app_release

빌드 설정

❖ 디버그 빌드는 개발 시스템 아키텍처(32, 64bit)에 맞는 바이너리 생성.!

❖ 디버깅에 유용.!

❖ 빌드 시간 단축.

Page 3: 32 osx app_release

릴리즈 빌드

❖ 배포를 위한 빌드.!

❖ 최적화.!

❖ 디버깅 심볼 제거.!

❖ 모든 아키텍처(32, 64bit)에 대해 바이너리를 빌드.

Page 4: 32 osx app_release

전처리 매크로

❖ NSAssert 사용하지 않기 위해 NS_BLOCK_ASSERTIONS 매크로 정의.!

❖ 타켓 | Build Settings | Preprocessor Macros [그림 37.2]!

❖ <<ProjectName>>_Prefix.pch 에 보통 정의.

Page 5: 32 osx app_release

릴리즈 빌드 만들기

❖ Product | Archive 통해 생성.!

❖ 아카이빙 기능!

❖ 애플리케이션의 다양한 릴리즈 빌드를 분류!

❖ 디버그 심벌 유지

Page 6: 32 osx app_release
Page 7: 32 osx app_release

인스톨러❖ 인스톨러를 만들지 말라.!

❖ 앱을 다운로드 폴더에서 /Application 으로 드래그 & 드롭.!

❖ 앱을 Zip 으로 압축 이용.!

❖ DMG 파일 이용.!

❖ readme 파일, /Application 링크 추가.!

❖ 맥 앱스토어에는 인스톨러를 사용할 수 없다.

Page 8: 32 osx app_release

샌드박싱(Sandboxing)

❖ 앱이 시스템을 손상하지 않는다는 것을 신뢰할 수 있는 경우.!

❖ 신뢰할 수 있는 앱의 버그로 인하여 시스템 손상이 발생하는 경우.

Page 9: 32 osx app_release

권한(Entitlements)

❖ 앱이 할 수 있는 것에 대한 권한을 명시.!

❖ OS는 해당 액션만을 허용.

Page 10: 32 osx app_release

파워박스(Powerbox)

❖ NSOpenPannel, NSSavePannel 을 통해 파일을 선택.!

❖ 파워박스라는 시스템 데몬에 의해 파일 접근.!

❖ 코드 수정이 필요하지 않다.!

❖ 앱 종료시 다시 문서를 복원하거나,Open Recent 메뉴 선택시 비슷한 기능 제공.

Page 11: 32 osx app_release

맥 앱 스토어(Mac App Store)

❖ MAS 이용시 앱구입, 인스톨, 패키징, 배포, 라이선스등을 고민하지 않아도 된다.!

❖ 샌드박스 환경에서 동작하지 않거나, 리뷰 가이드라인을 따르지 않는다면 전통적인 방식.!

❖ iOS 동일하게 바이너리에 서명, 앱 설명, 스크린샷을 만들고 앱 제출, 리뷰받는다.

Page 12: 32 osx app_release

영수증 확인

❖ iOS 처럼 운영체제 차원에서 라이선스를 확인을 지원하지 않는다.!

❖ 불법 복제를 막을려면 영수증 확인 코드를 구현해야 함.

Page 13: 32 osx app_release

영수증

❖ 앱 구입시 앱은 사용자 시스템에 복사.!

❖ 앱 영수증을 포함하는 파일은 앱 번들안에 위치.!

❖ 영수증에는 번들 확인자, 버전, 컴퓨터 GUID 해쉬 포함됨.!

❖ 애플은 이 영수증을 암호화해서 서명함.

Page 14: 32 osx app_release

영수증 확인 과정

❖ 영수증이 존재하는지 확인.!

❖ 애플이 영수증에 서명했는지 확인.!

❖ 영수증의 번들 확인자가 일치하는지 확인.!

❖ 버전 확인자가 일지 하는지 확인.!

❖ 영수증의 컴퓨터 해쉬값이 컴퓨터의 GUID 해쉬와 일치하는지 확인.

Page 15: 32 osx app_release

영수증 확인

❖ 앱 번들에 plist 파일에 존재하는 값은 수정될 수 있으므로 따로 저장해야 함.!

❖ 영수증 확인에 실패하면 173 리턴 값으로 앱 종료해야 함.if(!validated) exit(173);!

❖ 애플에서 전체 소스를 제공하지 않음.단순 복사되어 크랙되는 것을 막기 위해.

Page 16: 32 osx app_release

영수증 확인 기타❖ 애플 또는 기타 코드 검색후 반드시 수정해서 적용.!

❖ 인라인, goto, exception, 암호화, 여러번 확인 등등등…!

❖ ITC 에서 테스트 계정을 만들고, 생성된 앱을 실행, (173 종료) 애플 로그인창 실행,테스트 계정 및 암호 입력.!

❖ 영수증 발급후 버전등이 변경되면 로그아웃(부팅)후 다시 테스트 영수증 발급.