Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
37장

애플리케이션 

배포하기
빌드 설정

❖

디버그 빌드는 

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

디버깅에 유용.!

❖

빌드 시간 단축.
릴리즈 빌드
❖

배포를 위한 빌드.!
❖

최적화.!

❖

디버깅 심볼 제거.!

❖

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

❖

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

❖

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

❖

...
릴리즈 빌드 만들기
❖

Product | Archive 통해 생성.!

❖

아카이빙 기능!
❖

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

❖

디버그 심벌 유지
인스톨러
❖
❖

인스톨러를 만들지 말라.!
앱을 다운로드 폴더에서 

/Application 으로 드래그 & 드롭.!

❖

앱을 Zip 으로 압축 이용.!

❖

DMG 파일 이용.!
❖

❖

readme 파일, ...
샌드박싱(Sandboxing)

❖

❖

앱이 시스템을 손상하지 않는다는 것을 

신뢰할 수 있는 경우.!
신뢰할 수 있는 앱의 버그로 인하여 

시스템 손상이 발생하는 경우.
권한(Entitlements)

❖

❖

앱이 할 수 있는 것에 

대한 권한을 명시.!
OS는 

해당 액션만을 허용.
파워박스(Powerbox)
❖

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

❖

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

❖

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

❖

앱 종료시 다시...
맥 앱 스토어(Mac App Store)
❖

❖

❖

MAS 이용시 앱구입, 인스톨, 패키징, 배포, 라이선스등을 

고민하지 않아도 된다.!
샌드박스 환경에서 동작하지 않거나, 

리뷰 가이드라인을 따르지 않는다면...
영수증 확인

❖

❖

iOS 처럼 운영체제 차원에서 

라이선스를 확인을 지원하지 않는다.!
불법 복제를 막을려면 영수증 확인 코드를 구현해야 함.
영수증
❖

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

❖

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

❖

❖

영수증에는 

번들 확인자, 버전, 컴퓨터 GUID 해쉬 포함됨.!
애플은 이 영수증을 암호화해...
영수증 확인 과정
❖

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

❖

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

❖

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

❖

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

❖

영수증의 컴퓨터 해쉬값이...
영수증 확인
❖

앱 번들에 plist 파일에 존재하는 값은 

수정될 수 있으므로 따로 저장해야 함.!

❖

영수증 확인에 실패하면 173 리턴 값으로 앱 종료해야 함.

if(!validated)

exit(173...
영수증 확인 기타
❖

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

❖

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

❖

❖

ITC 에서 테스트 계정을 만들고, 

생성된 앱을...
32 osx app_release
Upcoming SlideShare
Loading in …5
×

32 osx app_release

575 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

32 osx app_release

  1. 1. 37장 애플리케이션 
 배포하기
  2. 2. 빌드 설정 ❖ 디버그 빌드는 
 개발 시스템 아키텍처(32, 64bit)에 맞는 바이너리 생성.! ❖ 디버깅에 유용.! ❖ 빌드 시간 단축.
  3. 3. 릴리즈 빌드 ❖ 배포를 위한 빌드.! ❖ 최적화.! ❖ 디버깅 심볼 제거.! ❖ 모든 아키텍처(32, 64bit)에 대해 바이너리를 빌드.
  4. 4. 전처리 매크로 ❖ NSAssert 사용하지 않기 위해 NS_BLOCK_ASSERTIONS 매크로 정의.! ❖ 타켓 | Build Settings | Preprocessor Macros [그림 37.2]! ❖ <<ProjectName>>_Prefix.pch 에 보통 정의.
  5. 5. 릴리즈 빌드 만들기 ❖ Product | Archive 통해 생성.! ❖ 아카이빙 기능! ❖ 애플리케이션의 다양한 릴리즈 빌드를 분류! ❖ 디버그 심벌 유지
  6. 6. 인스톨러 ❖ ❖ 인스톨러를 만들지 말라.! 앱을 다운로드 폴더에서 
 /Application 으로 드래그 & 드롭.! ❖ 앱을 Zip 으로 압축 이용.! ❖ DMG 파일 이용.! ❖ ❖ readme 파일, /Application 링크 추가.! 맥 앱스토어에는 인스톨러를 사용할 수 없다.
  7. 7. 샌드박싱(Sandboxing) ❖ ❖ 앱이 시스템을 손상하지 않는다는 것을 
 신뢰할 수 있는 경우.! 신뢰할 수 있는 앱의 버그로 인하여 
 시스템 손상이 발생하는 경우.
  8. 8. 권한(Entitlements) ❖ ❖ 앱이 할 수 있는 것에 
 대한 권한을 명시.! OS는 
 해당 액션만을 허용.
  9. 9. 파워박스(Powerbox) ❖ NSOpenPannel, NSSavePannel 을 통해 파일을 선택.! ❖ 파워박스라는 시스템 데몬에 의해 파일 접근.! ❖ 코드 수정이 필요하지 않다.! ❖ 앱 종료시 다시 문서를 복원하거나,
 Open Recent 메뉴 선택시 비슷한 기능 제공.
  10. 10. 맥 앱 스토어(Mac App Store) ❖ ❖ ❖ MAS 이용시 앱구입, 인스톨, 패키징, 배포, 라이선스등을 
 고민하지 않아도 된다.! 샌드박스 환경에서 동작하지 않거나, 
 리뷰 가이드라인을 따르지 않는다면 전통적인 방식.! iOS 동일하게 바이너리에 서명, 앱 설명, 스크린샷을 만들 고 앱 제출, 리뷰받는다.
  11. 11. 영수증 확인 ❖ ❖ iOS 처럼 운영체제 차원에서 
 라이선스를 확인을 지원하지 않는다.! 불법 복제를 막을려면 영수증 확인 코드를 구현해야 함.
  12. 12. 영수증 ❖ 앱 구입시 앱은 사용자 시스템에 복사.! ❖ 앱 영수증을 포함하는 파일은 앱 번들안에 위치.! ❖ ❖ 영수증에는 
 번들 확인자, 버전, 컴퓨터 GUID 해쉬 포함됨.! 애플은 이 영수증을 암호화해서 서명함.
  13. 13. 영수증 확인 과정 ❖ 영수증이 존재하는지 확인.! ❖ 애플이 영수증에 서명했는지 확인.! ❖ 영수증의 번들 확인자가 일치하는지 확인.! ❖ 버전 확인자가 일지 하는지 확인.! ❖ 영수증의 컴퓨터 해쉬값이 
 컴퓨터의 GUID 해쉬와 일치하는지 확인.
  14. 14. 영수증 확인 ❖ 앱 번들에 plist 파일에 존재하는 값은 
 수정될 수 있으므로 따로 저장해야 함.! ❖ 영수증 확인에 실패하면 173 리턴 값으로 앱 종료해야 함.
 if(!validated)
 exit(173);! ❖ 애플에서 전체 소스를 제공하지 않음.
 단순 복사되어 크랙되는 것을 막기 위해.
  15. 15. 영수증 확인 기타 ❖ 애플 또는 기타 코드 검색후 반드시 수정해서 적용.! ❖ 인라인, goto, exception, 암호화, 여러번 확인 등등등…! ❖ ❖ ITC 에서 테스트 계정을 만들고, 
 생성된 앱을 실행, (173 종료)
 애플 로그인창 실행,
 테스트 계정 및 암호 입력.! 영수증 발급후 버전등이 변경되면 
 로그아웃(부팅)후 다시 테스트 영수증 발급.

×