9.앱 개발 및 실행 (macOS)

Edit

넥사크로플랫폼으로 개발한 서비스를 맥 운영체제 사용자에게 하이브리드 운영방식으로 배포할 수 있습니다. 개발자가 작성한 프로젝트를 가지고 관리자는 배포 파일을 생성해야 합니다. 이번 장에서는 배포 파일을 생성하는 과정에 대한 간략한 가이드를 제공합니다.

9.1준비 사항

9.1.1개발 환경

맥 운영체제에서 사용할 수 있는 앱을 생성하기 위해서는 Xcode 개발 환경이 필요합니다. 추가적인 코딩 과정은 없고 이미 만들어진 넥사크로플랫폼 앱을 맥 운영체제에서 사용할 수 있도록 만드는 작업만 필요합니다.

기본적인 개발 환경은 아래와 같습니다.

항목

설명

Xcode

설치가 필요할 수 있습니다.

https://developer.apple.com/xcode/

xcodebuild

Xcode 설치 시 같이 설치됩니다.

9.2앱 프로젝트 개발

Xcode에서 아래와 같은 절차에 따라 macOS용 앱 프로젝트를 개발합니다. 앱 프로젝트를 진행하기 전에 넥사크로 스튜디오에서 개발된 앱에서 만들어진 아카이브 파일은 지정된 경로에 위치해야 합니다.

9.2.1프로젝트 생성

넥사크로플랫폼으로 개발된 앱을 담을 macOS 프로젝트를 생성하고 기본 환경을 설정해야 합니다. 새로운 프로젝트는 아래 메뉴에서 생성할 수 있습니다.

File > New > Project > macOS

프로젝트 생성을 위한 템플릿 화면에서 'Cocoa App' 항목을 선택합니다.

Language는 "Objective-C"로 설정하고 Product Name과 기타 필요한 정보를 입력하고 프로젝트를 생성할 폴더 위치를 지정한 후 [Create] 버튼을 클릭합니다.

9.2.2넥사크로플랫폼 라이브러리 설정

macOS 프로젝트에서 넥사크로플랫폼에 최적화된 환경을 만들기 위해 추가로 제공되는 넥사크로플랫폼 라이브러리 파일을 설정합니다.

넥사크로플랫폼 라이브러리는 압축 파일 형태로 제공되며 nexacro17.macOS.framework.zip이라는 파일명으로 제공됩니다. 제공되는 파일은 압축을 풀어 생성된 프로젝트의 임의의 폴더에 끌어다 놓거나 [Add Files to] 메뉴를 통해 추가합니다.

File > Add Files to "..."

9.2.3리소스 설정

앱에서 사용할 로딩 이미지, 아이콘, 메시지, 레이아웃 등을 설정하는 단계입니다. 진행하는 프로젝트에 따라 변경해 적용할 수 있습니다.

Copy Bundle Resources 에 이미지 파일 추가 후 main.m 파일을 수정합니다.

startManager.splashImageName = @"rezero.jpg";

9.2.4빌드 환경 설정

기본으로 만들어진 파일 중에 사용하지 않는 AppDelegate.h, AppDelegate.m, MainMenu.xib 파일은 삭제합니다.

main.m

Supporting Files 폴더 아래에 있는 main.m 파일을 아래와 같이 수정합니다.

//  main.m

#import <Cocoa/Cocoa.h>
#import "nexacro17/nexacro.h"

int main(int argc, const char * argv[]) {
    NexacroStartManager *startManager = [NexacroStartManager sharedManager];
    
    // 생략시 앱 이름으로 자동 설정
    startManager.applicationKey = @"";
    
    // 필수 입력값이며 디폴트 부트스트랩 파일명을 사용할 경우 start_macos.json 파일명은 생략가능
    startManager.bootstrapUrl = @"http://172.10.12.180:8080/Mobile_Test/start_macos.json";
    
    // 생략시 bootstarp파일이 있는 경로로 자동 설정
    startManager.projectUrl = @"http://172.10.12.180:8080/Mobile_Test/";
    
    // 초기 로딩화면 설정 (리소스 폴더를 참조함. 생략시 넥사크로 디폴트 로딩 화면을 사용함)
    // startManager.splashImageName = @"sample.png";

    [NSApplication sharedApplication];
    [NSBundle loadNibFile:[startManager getNexacroNibFile] externalNameTable:nil withZone:nil];
    [NSApp run];
    
    return EXIT_SUCCESS;
}

기타 설정

General

Deployment Target: 10.7

Main Interface: MainMenu를 삭제

Build Settings

Architectures: $(ARCHS_STANDARD)

macOS Deployment Target: macOS 10.7

Objective-C Automatic Reference Counting: Yes

2018년 출시될 macOS부터 32비트 앱 지원은 deprecated로 변경되고, 2019년부터는 iOS 11처럼 32비트 앱으로 만들어진 앱은 실행이 되지 않습니다.

Allow Arbitrary Loads 항목값을 "YES"로 설정하지 않으면 WebBrowser 컴포넌트가 화면에 표시되지 않습니다.