KR20240020994A - 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템과 방법 - Google Patents

멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템과 방법 Download PDF

Info

Publication number
KR20240020994A
KR20240020994A KR1020220099409A KR20220099409A KR20240020994A KR 20240020994 A KR20240020994 A KR 20240020994A KR 1020220099409 A KR1020220099409 A KR 1020220099409A KR 20220099409 A KR20220099409 A KR 20220099409A KR 20240020994 A KR20240020994 A KR 20240020994A
Authority
KR
South Korea
Prior art keywords
app
build
distribution
builder
plug
Prior art date
Application number
KR1020220099409A
Other languages
English (en)
Other versions
KR102708827B1 (ko
Inventor
어세룡
김욱래
Original Assignee
(주)인스웨이브시스템즈
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)인스웨이브시스템즈 filed Critical (주)인스웨이브시스템즈
Priority to KR1020220099409A priority Critical patent/KR102708827B1/ko
Priority to PCT/KR2023/011115 priority patent/WO2024034946A1/ko
Publication of KR20240020994A publication Critical patent/KR20240020994A/ko
Application granted granted Critical
Publication of KR102708827B1 publication Critical patent/KR102708827B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9554Retrieval from the web using information identifiers, e.g. uniform resource locators [URL] by using bar codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템과 방법이 개시된다. 본발명의 일 실시예에 따른 멀티플랫폼을 지원하는 애플리케이션을 빌드 및 배포하는 시스템은, 웹 개발자 단말을 통해 웹 앱 형태로 앱 컨텐츠를 작성하는 앱 컨텐츠 작성부; 상기 앱 컨텐츠에 적용할 네이티브 플러그인을 선택하는 네이티브 플러그인 선택부; 버전 관리 서버와 연계하여 상기 앱 컨텐츠에 대해 상기 네이티브 플러그인 선택부에 의해 선택된 상기 네이티브 플러그인을 플랫폼별로 적용시켜 자동 빌드가 되게 하는 빌드부; 및 빌드된 앱을 내부 배포 서버를 통해 1차 배포하거나 스토어를 통해 2차 배포하는 배포부를 포함하는 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템이 제공된다.

Description

멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템과 방법{Multi-platform supporting application build and deploy system and method}
본 발명은 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템과 방법에 관한 것이다.
최근 디지털 트랜스포메이션(Digital Transformation)이 각광을 받고 있다. 디지털 트랜스포메이션은 새로운 디지털 기술을 이용하여 우리의 생활을 포함한 비즈니스 업무가 디지털로 전환되는 것을 의미한다.
기업/기관 등이 자체적으로 서버나 운영환경을 구성하지 않고 서비스로 제공하는 클라우드를 이용하는 형태로 변화하고 있다. 클라우드 서비스를 이용한다는 것은 데이터나 자원이 외부 클라우드 상에 존재하는 것을 의미한다.
이는 스마트폰과 같은 이동형 디바이스를 통해 다양한 협력과 공유라는 새로운 방식의 업무 환경으로의 변화를 가져오고 있으며, 이에 적응하기 위해 협업과 공유를 지원할 수 있는 업무 프로그램의 필요성이 급증하고 있다.
현재 모바일 앱 개발을 위한 플랫폼과 데스크탑 애플리케이션 플랫폼으로 시장이 구분되어 있다. 모바일 생태계는 애플의 iOS, 구글의 Android 등 상호 호환성이 결여된 모바일 운영체제가 등장함에 따라 특정 운영체제를 위한 별도의 애플리케이션을 개발해야 하는 부담이 늘어나면서 한 번의 개발로 iOS, Android 및 Windows와 같은 다양한 플랫폼에서 효율적으로 수행할 수 있는 단일 앱을 쉽게 만들 수 있는 하이브리드 앱이 주목을 받기 시작했다.
한국공개특허 제10-2013-0017337호 (2013.02.20. 공개) - 하이브리드 앱 개발 플랫폼 구조 및 그 테스트 방법, 그리고 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체
본 발명은 플랫폼별 네이티브 기능을 빌트인 플러그인 형태로 제공하며 웹 표준 기술을 이용하여 멀티플랫폼을 지원하는 애플리케이션(앱이라고도 칭함)을 자동 생성하고 배포할 수 있는 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템과 방법을 제공하기 위한 것이다.
본 발명은 iOS와 Android 환경을 모두 지원하며, 네이티브 개발자 투입을 최소화할 수 있는 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템과 방법을 제공하기 위한 것이다.
본 발명의 이외의 목적들은 하기의 설명을 통해 쉽게 이해될 수 있을 것이다.
본 발명의 일 측면에 따르면, 멀티플랫폼을 지원하는 애플리케이션을 빌드 및 배포하는 시스템으로서, 웹 개발자 단말을 통해 웹 앱 형태로 앱 컨텐츠를 작성하는 앱 컨텐츠 작성부; 상기 앱 컨텐츠에 적용할 네이티브 플러그인을 선택하는 네이티브 플러그인 선택부; 버전 관리 서버와 연계하여 상기 앱 컨텐츠에 대해 상기 네이티브 플러그인 선택부에 의해 선택된 상기 네이티브 플러그인을 플랫폼별로 적용시켜 자동 빌드가 되게 하는 빌드부; 및 빌드된 앱을 내부 배포 서버를 통해 1차 배포하거나 스토어를 통해 2차 배포하는 배포부를 포함하는 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템이 제공된다.
상기 빌드부는, 프로젝트 플러그인 중복 체크를 수행하는 단계와, 플러그인 메타 정보를 불러오는 단계와, 플러그인 의존성 정보를 프로젝트에 추가하는 단계와, 상기 플러그인 메타 정보를 상기 프로젝트에 추가하는 단계와, 플러그인 js 파일을 상기 프로젝트에 복사하는 단계와, 라이브러리, 프레임워크 파일을 상기 프로젝트에 적용하는 단계와, 필요한 리소스를 복사하는 단계를 수행할 수 있다.
상기 배포부는 1차 배포 시 상기 빌드된 앱에 관한 다운로드 가능한 링크를 QR 코드 형태로 제공할 수 있다.
상기 배포부는 1차 배포에 따른 웹 개발자의 승인이 있을 경우, iOS의 앱 스토어, Android의 플레이 스토어를 통해 2차 배포를 수행할 수 있다.
상기 빌드부는 멀티플랫폼 환경에서 웹의 리소스를 저장하는 방식에 대해 리모트 모드 혹은 오프라인 모드를 선택하여 지정 가능하게 할 수 있다.
한편 본 발명의 다른 측면에 따르면, 멀티플랫폼을 지원하는 애플리케이션을 빌드 및 배포하는 시스템으로서, 웹 개발자 단말에 실행되는 웹 브라우저; 상기 웹 브라우저와 통신하고, 사용자와의 인터페이스를 위한 UI를 제공하며, 사용자 명령을 전달하는 매니저 서버; 및 버전 관리 서버(VCS), 앱 파일 서버, 스토어와 통신하며, 상기 사용자 명령에 따라 플랫폼별 네이티브 플러그인을 웹 앱에 적용시켜 자동 빌드하는 빌더를 포함하는 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템이 제공된다.
상기 웹 브라우저는 빌더, 버전 관리 서버, 앱 파일 서버, 인증서에 관한 설정을 수행하는 화면이 제공되어 웹 개발자로부터 각 설정값을 입력받을 수 있다.
상기 매니저 서버는 HTTP 서블릿 컨트롤러 통신으로 시작하고, HTTP 서블릿 컨트롤러 내부에서 파라미터 정보를 가공하여 제1 웹소켓 메시지를 생성하고 상기 빌더로 전달하며, 상기 빌더는 상기 제1 웹소켓 메시지를 전달받아 웹소켓 빌더 핸들러로 파라미터를 전달하여 빌드 핸들러에서 내부 프로세스가 동작하며, 동작이 완료되면 상기 빌더에서 상기 매니저 서버로 제2 웹소켓 메시지를 전달할 수 있다.
상기 매니저 서버가 프로젝트 생성에 필요한 파라미터를 가공하여 상기 빌더로 전달하는 단계; 상기 매니저 서버로부터 전달받은 파라미터 값을 기준으로 상기 빌더에서 프로젝터 생성을 수행하는 단계; 프로젝트 생성 시 VCS 체크아웃/클론 명령을 수행하는 단계; VCS 체크아웃/클론 작업이 완료되면 앱 환경 설정 CLI를 수행하는 단계; 인증서 설정 작업을 수행하는 단계; 앱 아이콘 설정 작업을 수행하는 단계: VCS 커밋/푸시 작업을 수행하는 단계; 상기 매니저 서버로 프로젝트 생성 완료 처리 파라미터 갑을 전달하는 단계; 상기 매니저 서버에서 상기 프로젝트 생성 완료 처리 파라미터 값을 이용하여 DB 업데이트 처리하는 단계를 포함하는 프로젝트 생성, 설정 및 가져오기 방법을 수행할 수 있다.
상기 매니저 서버가 빌드에 필요한 파라미터를 가공하여 상기 빌더로 전달하는 단계; 상기 매니저 서버로부터 전달받은 파라미터 값을 기준으로 상기 빌더에서 빌드를 수행하는 단계; 빌드 수행 시 VCS 업데이트/풀 명령을 수행하는 단계; VCS 업데이트/풀 작업이 완료되면 앱 환경 조회 CLI를 수행하는 단계; 빌드 CLI를 수행하는 단계; 앱 파일 업로드 작업을 수행하는 단계: 앱 환경 설정 작업을 수행하는 단계; VCS 커밋/푸시 작업을 수행하는 단계; 상기 매니저 서버로 빌드 완료 처리 파라미터 갑을 전달하는 단계; 상기 매니저 서버에서 상기 빌드 완료 처리 파라미터 값을 이용하여 DB 업데이트 처리하는 단계를 포함하는 빌드 통신 방법을 수행할 수 있다.
상기 매니저 서버가 배포에 필요한 파라미터를 가공하여 상기 빌더로 전달하는 단계; 상기 매니저 서버로부터 전달받은 파라미터 값을 기준으로 상기 빌더에서 배포를 시작하는 단계; 배포 수행 시 배포 명령을 수행하는 단계; 배포 CLI 작업이 시작되면 앱 파일과 앱 환경 정보를 플랫폼별 스토어로 전송하는 단계; 배포 상태 로그 데이터가 출력되고, 상기 플랫폼별 스토어에서 전송한 배포 성공 혹은 실패 값을 상기 매니저 서버로 전달하는 단계; 상기 매니저 서버에서 배포 완료 처리 파라미터 값을 이용하여 DB 업데이트 처리하는 단계를 포함하는 배포 방법을 수행할 수 있다.
전술한 것 외의 다른 측면, 특징, 이점이 이하의 도면, 특허청구범위 및 발명의 상세한 설명으로부터 명확해질 것이다.
본 발명의 실시예에 따르면, 플랫폼별 네이티브 기능을 빌트인 플러그인 형태로 제공하며 웹 표준 기술을 이용하여 멀티플랫폼을 지원하는 애플리케이션(앱이라고도 칭함)을 자동 생성하고 배포할 수 있는 효과가 있다.
또한, iOS와 Android 환경을 모두 지원하며, 네이티브 개발자 투입을 최소화할 수 있는 효과도 있다.
도 1은 본 발명의 일 실시예에 따른 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템의 구성도,
도 2는 본 발명의 일 실시예에 따른 멀티플랫폼 지원 애플리케이션 빌드 방법의 흐름도,
도 3은 본 발명의 일 실시예에 따른 멀티플랫폼 지원 애플리케이션 배포 방법의 흐름도,
도 4는 웹 개발 과정을 나타낸 도면,
도 5는 빌트인 네이티브 플러그인 빌드 과정을 나타낸 도면,
도 6은 모바일 특화된 네트워크 장애 시 대응할 수 있는 오프라인 모드 지원 기능을 나타낸 도면,
도 7a 내지 도 7c는 기본 네이티브 플러그인에 관한 표,
도 7d는 서드 파티 연계 플러그인을 나타낸 표,
도 8은 플러그인 적용 프로세스를 나타낸 도면,
도 9는 빌드 프로세스를 나타낸 도면,
도 10은 본 발명의 일 실시예에 따른 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템의 구성도,
도 11은 본 발명의 일 실시예에 따른 프로젝트 생성(VCS 싱크) 방법의 순서도,
도 12는 본 발명의 일 실시예에 따른 빌드 방법의 순서도,
도 13은 본 발명의 일 실시예에 따른 배포 방법의 순서도,
도 14는 프로젝트 생성을 통한 빌드 및 배포 시나리오를 나타낸 도면,
도 15는 프로젝트가 존재할 경우 빌드 및 배포 시나리오를 나타낸 도면.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 각 도면을 참조하여 설명하는 실시예의 구성 요소가 해당 실시예에만 제한적으로 적용되는 것은 아니며, 본 발명의 기술적 사상이 유지되는 범위 내에서 다른 실시예에 포함되도록 구현될 수 있으며, 또한 별도의 설명이 생략될지라도 복수의 실시예가 통합된 하나의 실시예로 다시 구현될 수도 있음은 당연하다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일하거나 관련된 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
또한, 명세서에 기재된 "…부", "…유닛", "…모듈", "…기" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도 1은 본 발명의 일 실시예에 따른 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템의 구성도이고, 도 2는 본 발명의 일 실시예에 따른 멀티플랫폼 지원 애플리케이션 빌드 방법의 흐름도이며, 도 3은 본 발명의 일 실시예에 따른 멀티플랫폼 지원 애플리케이션 배포 방법의 흐름도이고, 도 4는 웹 개발 과정을 나타낸 도면이며, 도 5는 빌트인 네이티브 플러그인 빌드 과정을 나타낸 도면이고, 도 6은 모바일 특화된 네트워크 장애 시 대응할 수 있는 오프라인 모드 지원 기능을 나타낸 도면이며, 도 7a 내지 도 7c는 기본 네이티브 플러그인에 관한 표이고, 도 7d는 서드 파티 연계 플러그인을 나타낸 표이며, 도 8은 플러그인 적용 프로세스를 나타낸 도면이고, 도 9는 빌드 프로세스를 나타낸 도면이다.
본 발명의 일 실시예에 따른 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템(100)은 디지털 트랜스포메이션을 위한 유니버셜 앱 플랫폼(Universal App Platform)으로서 기능한다.
하이브리드 앱 장점을 계승한 크로스 플랫폼 애플리케이션을 개발할 수 있게 한다. 웹 표준 기술로 네이티브 기능을 구현하며, 멀티플랫폼을 지원할 수 있다.
또한, 플랫폼별 네이티브 연동을 위한 플러그인 API를 제공하며, 다양한 서드 파티(3rd party) 연동을 위한 네이티브 플러그인이 가능할 수 있다.
운영 및 유지보수를 위해 앱 관리, 배포, 공지, 오류/성능 모니터링, 통계/차트, 협업 관리, 빅데이터 분석/예측, 대용량 배포 기능 등을 제공할 수 있다.
그리고 iOS와 Android 환경을 모두 지원하는 앱 빌드/배포 시스템으로, 네이티브 개발자를 최소화할 수 있다.
멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템(100)은 플랫폼별 네이티브 기능을 빌트인 플러그인 형태로 제공하며, 웹 표준 기술(JavaScript, HTML, CSS 등)을 이용하여 멀티플랫폼을 지원하는 앱을 빌드하고 배포할 수 있다.
도 1을 참조하면, 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템(100)은 앱 컨텐츠 작성부(110), 네이티브 플러그인 선택부(120), 빌드부(130), 배포부(140)를 포함할 수 있다.
멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템(100)은 웹 개발자가 별도의 앱 빌드 환경을 구축하지 않더라도 빌드부(130)를 통해 Android, iOS 앱을 빌드할 수 있게 한다. 네이티브 개발자가 없더라도 시스템(100)에서 제공하는 플러그인을 통해 웹 개발자가 네이티브 기능을 포함한 앱을 개발/빌드/배포/운영할 수 있게 한다.
앱 컨텐츠 작성부(110)는 개발자(웹 개발자)가 제공하고자 하는 앱 컨텐츠를 웹 앱 형태로 작성할 수 있게 한다. 앱 컨텐츠 작성부(110)에는 웹 앱을 개발할 수 있게 하는 다양한 웹 앱 개발도구가 적용될 수 있다.
도 4를 참조하면, 웹 앱 개발 과정에서는 프로젝트 구성 단계, 레이아웃 구성 단계, 화면 개발 단계, 화면 테스트 단계가 순차적으로 진행되어 웹 표준 애플리케이션이 개발될 수 있다.
프로젝트 구성 단계는 개발, 빌드 및 배포하고자 하는 애플리케이션에 관한 프로젝트를 구성한다.
레이아웃 구성 단계는 레이아웃 위자드 혹은 레이아웃 템플릿을 통해 애플리케이션에 대한 다양한 레이아웃을 구성할 수 있다.
화면 개발 단계에서는 페이지 템플릿, 컴포넌트 위자드, 디자인 시스템, 사용자 정의 컴포넌트 등의 기능을 이용하여 애플리케이션 화면을 개발할 수 있다. 또한, 본 실시예에서는 네이티브 플러그인 컴포넌트를 제공하여 멀티플랫폼 지원 앱으로서 기능하게 할 수 있다.
화면 테스트 단계에서는 PC, 태블릿, 스마트폰 등과 같은 다양한 크기의 화면에서 최적의 화면을 표시할 수 있게 원소스 멀티유즈(OSMU, One Source Multi Use) 테스트를 수행할 수 있다.
다시 도 1을 참조하면, 네이티브 플러그인 선택부(120)는 사용자(개발자) 입력에 따라 앱 컨텐츠 작성부(110)에 의해 작성된 앱 컨텐츠에 대해 추가적으로 적용하고자 하는 네이티브 플러그인을 선택한다.
웹 개발자는 표준 JS를 사용하여 웹 공통 모듈을 통해 네이티브 플러그인을 제어할 수 있다. 네이티브 플러그인은 빌트인 플러그인으로서, 기본 플러그인과 서드 파티 연계 플러그인을 포함할 수 있다.
기본 플러그인으로는 도 7a 내지 도 7c에 도시된 것과 같이 inappupdate 플러그인의 인앱업데이트 화면 제거, 오프라인 모드 체크, 리프레시업데이트 수동 시작, 인앱업데이트 서버 선택 화면 기능과, WebSquare 플러그인의 엑셀 다운로드 기능과, 암호화 플러그인의 데이터 암호화, 사진 암호화 기능과, app 플러그인의 앱 종료, 다른 앱 호출, 앱 포어그라운드 이벤트, 앱 백그라운드 이벤트, 앱 데이터 삭제, 앱버전, 폰, 태블릿 체크, 뒤로가기키 제어, 웹뷰추가, 웹뷰 터치 리스너, 앱 설치 여부 확인, 화면 캡처, 데이터저장, 데이터가져오기, 데이터공유하기, 화면 회전, 앱 로그 가져오기, 앱 로그 초기화, 앱 로스 수집 시작, 앱 로그 파일 경로 변환 기능과, contents 플러그인의 이미지 피커, 파일 피커, 파일 다운로드 기능과, mics 플러그인의 외부 브라우저 호출, 세팅 기능 on, off 조회, 타이머 스타트, 스탑, 전화걸기, sms 보내기, 연락처 가져오기 기능과, view 플러그인의 토스트, 스낵바, 노티피케이션 기능과, paint 플러그인의 그림판 호출 기능과, license 플러그인의 라이센스 호출 기능과, biometric 플러그인의 생체 인증으로 데이터 암호화, 생체 인증으로 데이터 복호화, 데이터 확인, 데이터 삭제 기능과, websocket 플러그인의 웹소켓 사용 기능과, AudioRecorderPlugin 플러그인의 녹음 시작, 녹음 완료, 녹음 취소, 녹음 일시정지 기능 등이 있을 수 있다.
서드 파티 연계 플러그인으로는 도 7d에 도시된 것과 같이 신분증, 문서 인식 기능을 위한 EsonicPlugin 및 mIDReader 플러그인과, 백신실행 기능을 위한 V3 및 mVaccine 플러그인과, 위변조방지 실행 기능을 위한 AppIron 플러그인과, 보안키패드 출력 기능을 위한 mTransKey 및 Cyber Keyboard 플러그인과, 앱 설치, 화면캡쳐 등 기능을 위한 MobileKeeper 플러그인과, 서식지 실행 기능을 위한 OzViewer 플러그인과, PIN, 바이오, 패턴인증 기능을 위한 SafeToken 플러그인과, QR인증서 다운로드, 인증 기능을 위한 QR 인증서 플러그인과, PIN, 바이오, 패턴인증 기능을 위한 Omni CA 플러그인과, Push 서비스 기능을 위한 Smart Agent 및 Morpheus Push 플러그인과, 보안키패드 출력 기능을 위한 nFilter 플러그인과, mOTP 기능을 위한 mOTP 플러그인 등이 있을 수 있다.
다시 도 1을 참조하면, 빌드부(130)는 네이티브 플러그인 선택부(120)에서의 네이티브 플러그인 선택 이후 빌드 요청에 따라 앱 컨텐츠 작성부(110)에서 작성된 앱 컨텐츠에 대해 네이티브 플러그인 선택부(120)에 의해 선택된 네이티브 플러그인을 플랫폼별로 적용시켜 플랫폼별로 자동 빌드가 되게 할 수 있다.
앱 컨텐츠에서 웹 화면이 만들어져 있는 경우 플러그인 적용 과정은 다음과 같다.
네이티브 플러그인 선택부(120)에 의해 선택된 플러그인이 추가 적용될 수 있다. 이 경우 적용할 플러그인 버전을 선택할 수 있다. 플러그인 적용 시 플랫폼 별로 별도의 CLI(Command Line Interface) 툴로 적용이 될 수 있다. Android의 경우에는 gradle를 통해, iOS는 명령어 도구를 통해 자동 수행될 수 있다.
선택된 플러그인은 추가 이외에 제거될 수도 있다. 플러그인 적용된 리스트 중에서 제거하고 싶은 플러그인 목록을 선택함으로써 제거될 수도 있다. 제거 시 버전 선택은 불필요하며, 적용된 버전이 자동 선택되어 제거될 수 있다.
도 8을 참조하면, 네이티브 플러그인 선택부(120)에 의해 선택된 플러그인에 대해, 빌드부(130)는 프로젝트 플러그인 중복 체크를 수행한다. 그리고 플러그인 메타 정보를 불러온다. 플러그인 의존성 정보를 프로젝트에 추가하고, 플러그인 메타 정보를 프로젝트에 추가할 수 있다. 플러그인 js 파일을 프로젝트에 복사하고, 라이브러리(Library), 프레임워크(Framework) 파일을 프로젝트에 적용할 수 있다. 그리고 필요한 리소스(이미지, 레이아웃 등)를 복사함으로써 플러그인 적용을 완료할 수 있다.
플러그인 설정을 적용한 후, 빌드부(130)는 프로젝트 빌드를 진행한다.
빌드 상세 프로세스는 다음과 같다(도 9 참조).
빌드가 시작되면, (VCS) Git Pull을 통해 최신 소스 코드를 업데이트한다. 그리고 앱 프로젝트 내에서 앱 정보를 조회한다. 조회 이후 빌드 작업을 수행하며, 내부 배포 서버에 앱을 업로드한다. 앱 정보(build number)를 수정하고, (VCS) Git Push를 통해 소스 코드를 커밋(commit)하고 푸쉬(push)하여, 빌드를 완료한다. 빌드가 완료되면 QR 코드, 앱 파일, 로그 파일 기능을 제공할 수 있다.
다시 도 1을 참조하면, 배포부(140)는 빌드부(130)에 의해 빌드된 앱을 다운로드 가능한 형태(APK, IPA 등)로 내부 배포 서버를 통해 개발자에게 1차 배포(내부 배포)한다. 개발자 승인이 있을 경우 플랫폼별 스토어에 앱을 등록시켜 2차 배포(스토어 배포)함으로써 일반 사용자가 해당 앱을 다운로드하고 설치하여 실행할 수 있게 한다.
도 2를 참조하면, 1차 배포(내부 배포) 시에는 개발자 단말의 화면에 다운로드 가능한 링크를 표시할 수 있다. 다운로드 가능한 링크는 예를 들어 QR 코드 형태로 표시될 수 있다. 따라서, 개발자는 단말 화면에 표시된 QR 코드를 모바일 기기(예컨대, 스마트폰)의 카메라 등을 이용하여 스캔함으로써 현재 빌드된 앱을 모바일 기기로 다운로드하고 설치(필요시 앱 업데이트)함으로써 제대로 빌드되었는지 여부를 확인(플러그인 적용 확인)할 수 있게 된다.
도 3을 참조하면, 2차 배포(스토어 배포) 시에는 1차 배포를 통해 정상 빌드된 것으로 확인된 앱에 대해 개발자 승인이 있을 경우 빌드부(130)에 의해 빌드된 앱을 플랫폼별 스토어(애플의 앱 스토어, 구글의 플레이 스토어 등)에 업로드할 수 있다. 스토어에 업로드된 앱은 일반 사용자가 모바일 기기를 통해 다운로드하고 설치할 수 있게 된다.
또한, 도 6을 참조하면, 빌드부(130)는 앱 빌드 과정에서 다양한 환경의 멀티플랫폼 환경에서 웹의 리소스를 저장하는 방식(리모트 모드 혹은 오프라인 모드)을 선택하여 지정할 수 있다. 사용자의 앱을 구동할 시에 로컬(local) 또는 리모트(remote) 형태로 웹 리소스를 가져오게 할 수 있다.
리모트 모드의 경우 웹 리소스의 일부를 설정(config)을 이용하여 로컬 앱에 저장시킬 수 있다. 로컬 앱에 저장한 리소스를 제외한 자원은 서버에 위치한다. 그리고 앱 내장 웹 브라우저 엔진의 캐쉬 정책을 따를 수 있다. 리소스 유효성 체크는 페이지 이동시마다 체크할 수 있다.
오프라인 모드가 필요한 특정 환경에서는 오프라인 모드로 설정될 수 있다. 오프라인 모드에서는 앱 기동이 필요한 리소스를 zip 형태로 다운로드할 수 있다. 오프라인 모드는 오프라인 네트워크에서 앱 사용이 필요한 환경에서 적용되며, 최초 앱 기동 시 리소스 유효성 체크가 이루어질 수 있다. 예를 들어, 업무환경이 네트워크가 안 되는 사업체의 경우 혹은 조달청 RFID와 같이 네트워크가 안 되어야 하는 테스트 조건이 있는 경우에 적용될 수 있다.
이하에서는 빌드부(130) 및 배포부(140)에서 수행되는 멀티플랫폼 지원 애플케이션 빌드 방법과 배포 방법에 대해 보다 상세히 설명하기로 한다.
도 10은 본 발명의 일 실시예에 따른 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템의 구성도이고, 도 11은 본 발명의 일 실시예에 따른 프로젝트 생성(VCS 싱크) 방법의 순서도이며, 도 12는 본 발명의 일 실시예에 따른 빌드 방법의 순서도이고,도 13은 본 발명의 일 실시예에 따른 배포 방법의 순서도이다.
빌드부(130) 및 배포부(140)는 앱 컨텐츠에 대해 선택된 네이티브 플러그인을 연계시킨 하이브리드 앱을 빌드하고 배포하는 프로그램 혹은 소프트웨어로 구현될 수 있다.
빌드부(130)는 매니저 서버(220)와 빌더(Builder)(230)를 포함한다.
1개의 매니저 서버(220)에는 하나 혹은 둘 이상의 빌더(230)가 연결될 수 있다.
매니저 서버(220)는 웹을 통해 제공되며, 빌더(230)를 관리 및 제어한다.
매니저 서버(220)는 사용자와 인터페이스할 수 있도록 UI와 사용자 데이터를 제공하고, 사용자의 명령을 빌더(230)에 전달하며, 빌드 정보 관리 역할을 수행할 수 있다.
빌더(230)는 안드로이드, iOS 앱을 실제 빌드하는 모듈이다. 또한, 빌더(230)는 빌드된 앱을 배포할 수도 있다.
빌더(230)는 실제 앱 빌드를 수행하는 빌드 서버로서 기능하다. 또한, 버전 관리 연계, 결과물 업로드 등 앱 빌드에 필요한 역할을 수행한다.
본 실시예에서는 시스템에서 제공하는 템플릿 기반으로 프로젝트 생성이 가능하다. 또한, 앱 프로젝트 VCS(Version Control System, 버전 관리 시스템) 동기화가 가능하다. 앱 빌드, 버전 관리, 배포, 플러그인 관리를 네이티브 개발자 없이 웹을 통해서 가능하게 한다. 개발자가 작업한 소스 코드를 VCS 서버와 연동하여 프로젝트 추가 및 수정이 가능하다. 빌드 상태를 실시간 로그 확인 및 다운로드가 가능하다. QR 코드를 통해 빌드된 앱 설치가 가능하다.
웹 브라우저(210)는 매니저 서버(220)와 통신하며, 웹 개발자 단말에서 실행되어 사용자 및 관리자를 위한 화면(웹 UI)을 제공할 수 있다.
웹 브라우저(210)를 통해 프로젝트/빌드/배포에 관한 설정(setting)이 이루어질 수 있다. 설정 대상에는 빌더, VCS, FTP, 인증서 등이 있을 수 있다.
빌더 설정 화면에서 매니저 서버(220)와 연결할 빌더 정보를 생성할 수 있다. 빌더 정보에는 빌더 이름(선택 목록에서 구분할 수 있게 이름을 입력함), 빌더 User ID(물리적으로 환경 설정된 빌더 yaml 설정과 동일한 ID 입력), 사용자 권한(build, deploy (필요 여부 확인)), 빌더 URL(빌더에 대한 URL 정보) 등이 포함될 수 있다.
VCS 설정 화면은 새로 만들 프로젝트를 Git/Svn/LocalGit 속성 정보를 생성할 때 사용할 수 있다. VCS 정보에는 VCS 이름, VCS 타입(Git/Svn/LocalGit 중 선택), VCS 사용자 ID, VCS 사용자 암호, VCS 서버 URL(VCS 접속 URL) 등이 포함될 수 있다.
FTP 설정 화면은 새로 만들 프로젝트에 FTP 속성 정보를 설정할 때 사용할 수 있다. FTP 정보에는 FTP 이름, FTP 서버 URL, FTP 서버 IP, FTP 서버 포트, FTP 사용자 ID, FTP 사용자 암호 등이 포함될 수 있다.
인증서(Signing Key) 설정 화면은 새로 만들 프로젝트와 빌드 시 필요한 인증서 정보와 파일 정보를 생성 및 저장하는 화면이다. Android와 iOS의 인증서 파일 형식이 다르므로 플랫폼마다 화면 구성이 다를 수 있다.
공통 입력값으로는 인증서 이름, 빌더 ID, 플랫폼, 도메인 ID, 관리자 ID 등이 포함될 수 있다.
Android 인증서 입력값으로는 인증서 타입(Signingkey Type), 빌드 타입(Build Type), 키 별명(Key Alias), 키 암호(Key Password), 스토어 암호(Store Password), 인증서 파일(Signing Key file) 등이 포함될 수 있다.
iOS 인증서 입력값으로는 인증서 타입(Signingkey Type), 인증키 파일 경로(Certificate Key file path), 인증키 암호(Certificate Key Password), 디버그 프로파일 파일 경로(debug Profile file path), 릴리즈 프로파일 파일 경로(Release Profile file path) 등이 포함될 수 있다.
매니저 서버(220)는 HTTP 서블릿 컨트롤러(HTTP Servelet Controller), 웹소켓 세션 메시지 생성부(Websocket Session Message to Builder), 웹소켓 매니저 핸들러(Websocket Manager Handler), 웹소켓 서버 핸들러(Websocket Server Handler)를 포함할 수 있다.
빌더(230)는 웹소켓 클라이언트 핸들러(Websocket Client Handler), 웹소켓 빌더 핸들러(Websocket Builder Handler), HTTP 클라이언트(HTTP Client)를 포함할 수 있다.
매니저 서버(220)에서 HTTP 서블릿 컨트롤러 통신으로 시작한다.
HTTP 서블릿 컨트롤러 내부에서 파라미터 정보를 가공한다. 그리고 웹소켓 세션 메시지 생성부로 메시지를 보낸다.
빌더(230)는 매니저 서버(220)로부터 웹소켓 메시지를 받아서 웹소켓 빌더 핸들러로 파라미터를 전달한다. 빌드 핸들러로 이동하고, 내부 프로세스가 동작한다.
동작이 완료되면, 빌더(230)에서 매니저 서버(220)로 웹소켓 메시지를 전달한다.
매니저 서버(220)는 빌더(230)로부터 받은 파라미터를 가지고 빌드 핸들러로 이동하고, 웹소켓 서버 핸들러를 통해 브라우저(210)로 전달한다.
프로젝트 생성, 설정, 가져오기(VCS 싱크(Sync)) 흐름도는 도 11에 도시되어 있다.
매니저 서버(220)는 프로젝트 생성에 필요한 파라미터를 가공하여 빌더(230)로 전달한다. 전달하면서 DB 인서트(Insert) 기능을 수행할 수 있다.
매니저 서버(220)로부터 전달받는 파라미터 값을 기준으로 빌더(230)에서 프로젝트 생성을 시작한다.
프로젝트 생성시 VCS 체크아웃/클론(Checkout/Clone) 명령을 수행한다. 해당 명령의 수행과 동시에 빌더(230)에서 매니저 서버(220)로 VCS 상태 웹소켓(VCS status Websocket)으로 메시지 값을 보낸다.
VCS 체크아웃/클론 작업이 완료되면 앱 환경 설정(App Config Setting) CLI를 수행한다. 마찬가지로 매니저 서버(220)로 앱 환경 설정 상태 웹소켓으로 메시지 값을 보낸다.
앱 환경 설정 작업이 완료되면, 인증서 설정(SigningKey Setting) 작업을 수행한다.
인증서 설정 작업이 완료되면 앱 아이콘 설정(App Icon Set) 작업을 수행한다. 마찬가지로 매니저 서버(220)로 앱 아이콘 설정 상태 웹소켓으로 메시지 값을 보낸다.
앱 아이콘 설정 작업이 완료되면 VCS 커밋/푸시(Commit/Push) 작업을 수행한다. 마찬가지로 매니저 서버(220)로 VCS 커밋/푸시 상태 웹소켓으로 메시지 값을 보낸다.
VCS 커밋/푸시 작업이 완료되면 매니저 서버(220)로 프로젝트 생성(Project Create) 완료 처리 파라미터 값을 전달한다.
매니저 서버(220)는 빌더(230)에서 받은 프로젝트 생성 완료 처리 파라미터 값을 이용하여 DB 업데이트 처리를 한다.
빌트 통신 흐름도는 도 12에 도시되어 있다.
매니저 서버(220)에서 빌드에 필요한 파라미터 값을 가공하여 빌더(230)로 전달한다. 전달하면서 DB 인서트 기능을 수행한다.
매니저 서버(220)로부터 전달받은 파라미터 값을 기준으로 빌더(230)에서 빌드를 수행한다.
빌드 수행 시 VCS 업데이트/풀(Update/Pull) 명령을 수행한다. 수행과 동시에 빌더(230)에서 매니저 서버(220)로 VCS 상태 웹소켓으로 메시지 값을 보낸다.
VCS 업데이트/풀 작업이 완료되면 앱 환경 조회 CLI를 수행한다. 마찬가지로 매니저 서버(220)로 앱 환경 조회 상태 웹소켓으로 메시지 값을 보낸다.
앱 환경 조회 작업이 완료되면 빌드 CLI 작업을 수행한다. 마찬가지로 매니저 서버(220)로 빌드 상태 웹소켓으로 메시지 값을 보낸다.
빌드 CLI 작업이 완료되면 앱 파일 업로드 작업을 수행한다. 마찬가지로 매니저 서버(220)로 앱 파일 업로드 상태 웹소켓으로 메시지 값을 보낸다.
앱 파일 업로드 작업이 완료되면 앱 환경 설정 작업을 수행한다. 마찬가지로 매니저 서버(220)로 앱 환경 설정 상태 웹소켓으로 메시지 값을 보낸다.
앱 환경 설정 작업이 완료되면 VCS 커밋/푸시 작업을 수행한다. 마찬가지로 매니저 서버(220)로 VCS 커밋/푸시 상태 웹소켓으로 메시지 값을 보낸다.
VCS 커밋/푸시 작업이 완료되면 매니저 서버(220)로 빌드 완료 처리 파라미터 값을 전달한다.
빌더(230)에서 매니저 서버(220)로 전달된 빌드 완료 처리 파라미터 값을 받아서 DB 업데이트 처리를 한다.
배포 흐름도는 도 13에 도시되어 있다.
매니저 서버(220)에서 배포에 필요한 파라미터를 가공하여 빌더(230)로 전달한다. 전달하면서 DB 인서트 기능을 수행한다.
매니저 서버(220)에서 전달받은 파라미터 값을 기준으로 빌더(230)에서 배포를 시작한다.
배포 수행 시 배포 명령을 수행한다. 수행과 동시에 빌더(230)에서 매니저 서버(220)로 배포 상태 웹소켓으로 메시지 값을 보낸다.
배포 CLI 작업이 시작되면 앱 파일과 앱 환경 정보를 앱 스토어/플레이 스토어로 전송한다.
배포 상태 로그(Deploy status log) 데이터가 출력된다. 해당 데이터는 바로 웹소켓 메시지 값을 매니저 서버(220)로 전달한다.
앱 스토어/플레이 스토어에서 배포 성공이나 실패 값을 보내면, 빌더(230)에서 해당 값을 받고, 빌더(230)는 웹소켓 메시지 값을 매니저 서버(220)로 전달한다.
빌더(230)에서 매니저 서버(220)로 전달된 배포 완료 처리 파라미터 값을 받아서 DB 업데이트 처리를 한다.
이하에서는 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템(100)에서 수행되는 전체 시나리오에 대해 설명하기로 한다.
도 14는 프로젝트 생성을 통한 빌드 및 배포 시나리오를 나타낸 도면이고, 도 15는 프로젝트가 존재할 경우 빌드 및 배포 시나리오를 나타낸 도면이다.
우선 도 14를 참조하면, 제1 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템(100a)은 프로젝트 생성부(150a), 빌드부(130), 배포부(140)를 포함할 수 있다.
프로젝트 생성부(150a)에서 제공하는 화면을 통해 프로젝트 생성 시 기본 설정을 입력하고, 프로파일을 선택한다. 템플릿 버전, VCS 프로파일은 VCS 설정에 맞게 정보를 선택해 준다. 앱 정보 입력이 완료되면 화면 내의 생성 버튼을 클릭한다.
프로젝트 생성 버튼을 클릭하면, 시스템에서 VCS 생성 명령을 호출한다.
VCS 생성 진행이 완료되면 다음 단계인 템플릿 복사를 진행한다. 복사가 완료되면 다음 단계인 프로젝트 생성에 필요한 CLI(명령어들)를 수행한다.
프로젝트 생성이 완료되면, 빌드 화면으로 이동한다. 해당 화면에서 빌드 타입을 선택하고 빌드 버튼을 누르면 빌드부(130)에서 빌드가 수행된다.
빌드가 진행되기 이전에 VCS에서 소스 업데이트(Pull)를 수행한다. 업데이트(Pull)가 완료되고 나면 빌드가 진행된다.
빌드가 완료되면 앱 파일이 생성된다. 해당 앱 파일을 가지고 앱 파일 서버(250)로 업로드를 수행한다. 앱 파일 업로드까지 진행이 되면 빌드에 관한 전체 프로세스는 완료된다.
빌드가 정상적으로 완료 처리된 경우, 빌드 히스토리 화면 내 상세 목록으로 가서 배포 화면 이동 버튼을 클릭한다. 배포 화면에서 배포 타입을 선택(beta, deploy 중 하나를 선택)하고 스토어 배포를 진행할 수 있다.
배포부(140)를 통한 배포가 진행되는 과정에서 iOS는 앱 스토어로, Android는 플레이 스토어로 앱 환경과 앱 파일을 전송한다. 그리고 배포 상태 로그로 보여준다. 배포가 완료되면 결과를 사용자에게 알려줄 수 있다.
도 15에는 기존 프로젝트가 있는 경우의 흐름 시나리오가 도시되어 있다. 제2 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템(100b)은 프로젝트 생성부(150b), 빌드부(130), 배포부(140)를 포함할 수 있다.
웹 개발자는 개발자 단말(10)을 통해 Xcode, Android Studio를 이용하여 웹 앱을 개발할 수 있다. 개발이 완료되면 개발자가 VCS(240)로 소스를 푸시(Push), 즉 소스 코드를 업로드한다. 따라서, VCS(240)에 최신 소스가 반영될 수 있다.
개발자가 소스 코드를 업로드하거나 업데이트를 받고자 할 때, VCS(240)에서 명령을 호출한다. 업로드(Push)는 소스 반영, 업데이트(Pull)는 소스를 가져오는 행위이다.
VCS(240)는 iOS/Android 프로젝트 소스를 관리하는 서버이다. 보통 git, svn으로 되어 있다.
멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템은 iOS/Android 프로젝트의 생성, 빌드, 배포를 수행하는 솔루션일 수 있다.
프로젝트 생성부(150b)에서 프로젝트 생성을 시작하는 과정에서 시스템 화면에서 필요한 정보 및 프로파일을 입력 및 선택한다. 프로파일은 사전에 설정 화면에서 추가할 수 있다. 앱 정보 입력이 완료되면 생성 버튼을 클릭하여 프로젝트를 생성할 수 있다.
프로젝트 생성 버튼을 클릭하면 시스템에서 VCS 생성 명령을 호출한다. 클론 진행이 완료되면 프로젝트 생성에 필요한 CLI(명령어들)을 수행한다.
프로젝트 생성이 완료되면, 플러그인 조회 화면으로 가서 사용자가 필요한 플러그인 기능들을 추가한다. 만약 불필요한 플러그인이 있으면 제거할 수도 있다.
플러그인을 추가하고 완료 버튼을 클릭하면 플러그인 적용을 수행한다.
플러그인 적용이 완료되면 스토어 배포를 수행하기 전에 스토어 배포 설정 프로파일을 선택하고 적용한다.
프로젝트 생성 완료가 되면, 빌드 화면으로 이동한다. 해당 화면에서 빌드 타입을 선택하고 빌드 버튼을 누르면 빌드부(130)에서 빌드가 수행된다.
빌드가 진행되기 이전에 VCS에서 소스 업데이트(Pull)을 수행한다. 업데이트가 완료되고 나면 빌드가 진행될 수 있다.
빌드가 완료되면 앱 파일이 생성된다. 해당 앱 파일을 가지고 앱 파일 서버(250)로 업로드를 수행한다. 앱 파일 업로드까지 진행이 되면 빌드에 관한 전체 프로세스는 완료된다.
빌드가 정상적으로 완료 처리된 경우, 빌드 히스토리 화면 내 상세 목록으로 가서 배포 화면 이동 버튼을 클릭한다. 배포 화면에서 배포 타입을 선택(beta, deploy 중 하나를 선택)하고 스토어 배포를 진행할 수 있다.
배포부(140)를 통해 배포가 진행되는 과정에서 iOS는 앱 스토어로, Android는 플레이 스토어로 앱 환경과 앱 파일을 전송한다. 그리고 배포 상태 로그로 보여준다. 배포가 완료되면 결과를 사용자에게 알려줄 수 있다.
전술한 멀티플랫폼 지원 애플리케이션 빌드 및 배포 방법은, 컴퓨터에 의해 실행되는 애플리케이션이나 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다.
전술한 멀티플랫폼 지원 애플리케이션 빌드 및 배포 방법은, 단말기에 기본적으로 설치된 애플리케이션(이는 단말기에 기본적으로 탑재된 플랫폼이나 운영체제 등에 포함된 프로그램을 포함할 수 있음)에 의해 실행될 수 있고, 사용자가 애플리케이션 스토어 서버, 애플리케이션 또는 해당 서비스와 관련된 웹 서버 등의 애플리케이션 제공 서버를 통해 마스터 단말기에 직접 설치한 애플리케이션(즉, 프로그램)에 의해 실행될 수도 있다. 이러한 의미에서, 전술한 멀티플랫폼 지원 애플리케이션 빌드 및 배포 방법은 단말기에 기본적으로 설치되거나 사용자에 의해 직접 설치된 애플리케이션(즉, 프로그램)으로 구현되고 단말기 등의 컴퓨터로 읽을 수 있는 기록매체에 기록될 수 있다.
상기에서는 본 발명의 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템
110: 앱 컨텐츠 작성부
120: 네이티브 플러그인 선택부
130: 빌드부
140: 배포부

Claims (11)

  1. 멀티플랫폼을 지원하는 애플리케이션을 빌드 및 배포하는 시스템으로서,
    웹 개발자 단말을 통해 웹 앱 형태로 앱 컨텐츠를 작성하는 앱 컨텐츠 작성부;
    상기 앱 컨텐츠에 적용할 네이티브 플러그인을 선택하는 네이티브 플러그인 선택부;
    버전 관리 서버와 연계하여 상기 앱 컨텐츠에 대해 상기 네이티브 플러그인 선택부에 의해 선택된 상기 네이티브 플러그인을 플랫폼별로 적용시켜 자동 빌드가 되게 하는 빌드부; 및
    빌드된 앱을 내부 배포 서버를 통해 1차 배포하거나 스토어를 통해 2차 배포하는 배포부를 포함하는 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템.
  2. 제1항에 있어서,
    상기 빌드부는, 프로젝트 플러그인 중복 체크를 수행하는 단계와, 플러그인 메타 정보를 불러오는 단계와, 플러그인 의존성 정보를 프로젝트에 추가하는 단계와, 상기 플러그인 메타 정보를 상기 프로젝트에 추가하는 단계와, 플러그인 js 파일을 상기 프로젝트에 복사하는 단계와, 라이브러리, 프레임워크 파일을 상기 프로젝트에 적용하는 단계와, 필요한 리소스를 복사하는 단계를 수행하는 것을 특징으로 하는 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템.
  3. 제1항에 있어서,
    상기 배포부는 1차 배포 시 상기 빌드된 앱에 관한 다운로드 가능한 링크를 QR 코드 형태로 제공하는 것을 특징으로 하는 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템.
  4. 제1항에 있어서,
    상기 배포부는 1차 배포에 따른 웹 개발자의 승인이 있을 경우, iOS의 앱 스토어, Android의 플레이 스토어를 통해 2차 배포를 수행하는 것을 특징으로 하는 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템.
  5. 제1항에 있어서,
    상기 빌드부는 멀티플랫폼 환경에서 웹의 리소스를 저장하는 방식에 대해 리모트 모드 혹은 오프라인 모드를 선택하여 지정 가능하게 하는 것을 특징으로 하는 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템.
  6. 멀티플랫폼을 지원하는 애플리케이션을 빌드 및 배포하는 시스템으로서,
    웹 개발자 단말에 실행되는 웹 브라우저;
    상기 웹 브라우저와 통신하고, 사용자와의 인터페이스를 위한 UI를 제공하며, 사용자 명령을 전달하는 매니저 서버; 및
    버전 관리 서버(VCS), 앱 파일 서버, 스토어와 통신하며, 상기 사용자 명령에 따라 플랫폼별 네이티브 플러그인을 웹 앱에 적용시켜 자동 빌드하는 빌더를 포함하는 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템.
  7. 제6항에 있어서,
    상기 웹 브라우저는 빌더, 버전 관리 서버, 앱 파일 서버, 인증서에 관한 설정을 수행하는 화면이 제공되어 웹 개발자로부터 각 설정값을 입력받는 것을 특징으로 하는 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템.
  8. 제6항에 있어서,
    상기 매니저 서버는 HTTP 서블릿 컨트롤러 통신으로 시작하고, HTTP 서블릿 컨트롤러 내부에서 파라미터 정보를 가공하여 제1 웹소켓 메시지를 생성하고 상기 빌더로 전달하며,
    상기 빌더는 상기 제1 웹소켓 메시지를 전달받아 웹소켓 빌더 핸들러로 파라미터를 전달하여 빌드 핸들러에서 내부 프로세스가 동작하며,
    동작이 완료되면 상기 빌더에서 상기 매니저 서버로 제2 웹소켓 메시지를 전달하는 것을 특징으로 하는 멀티플랫폼 지원 애플리케이션 배포 및 빌드 시스템.
  9. 제6항에 있어서,
    상기 매니저 서버가 프로젝트 생성에 필요한 파라미터를 가공하여 상기 빌더로 전달하는 단계;
    상기 매니저 서버로부터 전달받은 파라미터 값을 기준으로 상기 빌더에서 프로젝터 생성을 수행하는 단계;
    프로젝트 생성 시 VCS 체크아웃/클론 명령을 수행하는 단계;
    VCS 체크아웃/클론 작업이 완료되면 앱 환경 설정 CLI를 수행하는 단계;
    인증서 설정 작업을 수행하는 단계;
    앱 아이콘 설정 작업을 수행하는 단계:
    VCS 커밋/푸시 작업을 수행하는 단계;
    상기 매니저 서버로 프로젝트 생성 완료 처리 파라미터 갑을 전달하는 단계;
    상기 매니저 서버에서 상기 프로젝트 생성 완료 처리 파라미터 값을 이용하여 DB 업데이트 처리하는 단계를 포함하는 프로젝트 생성, 설정 및 가져오기 방법을 수행하는 것을 특징으로 하는 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템.
  10. 제6항에 있어서,
    상기 매니저 서버가 빌드에 필요한 파라미터를 가공하여 상기 빌더로 전달하는 단계;
    상기 매니저 서버로부터 전달받은 파라미터 값을 기준으로 상기 빌더에서 빌드를 수행하는 단계;
    빌드 수행 시 VCS 업데이트/풀 명령을 수행하는 단계;
    VCS 업데이트/풀 작업이 완료되면 앱 환경 조회 CLI를 수행하는 단계;
    빌드 CLI를 수행하는 단계;
    앱 파일 업로드 작업을 수행하는 단계:
    앱 환경 설정 작업을 수행하는 단계;
    VCS 커밋/푸시 작업을 수행하는 단계;
    상기 매니저 서버로 빌드 완료 처리 파라미터 갑을 전달하는 단계;
    상기 매니저 서버에서 상기 빌드 완료 처리 파라미터 값을 이용하여 DB 업데이트 처리하는 단계를 포함하는 빌드 통신 방법을 수행하는 것을 특징으로 하는 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템.
  11. 제6항에 있어서,
    상기 매니저 서버가 배포에 필요한 파라미터를 가공하여 상기 빌더로 전달하는 단계;
    상기 매니저 서버로부터 전달받은 파라미터 값을 기준으로 상기 빌더에서 배포를 시작하는 단계;
    배포 수행 시 배포 명령을 수행하는 단계;
    배포 CLI 작업이 시작되면 앱 파일과 앱 환경 정보를 플랫폼별 스토어로 전송하는 단계;
    배포 상태 로그 데이터가 출력되고, 상기 플랫폼별 스토어에서 전송한 배포 성공 혹은 실패 값을 상기 매니저 서버로 전달하는 단계;
    상기 매니저 서버에서 배포 완료 처리 파라미터 값을 이용하여 DB 업데이트 처리하는 단계를 포함하는 배포 방법을 수행하는 것을 특징으로 하는 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템.
KR1020220099409A 2022-08-09 2022-08-09 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템과 방법 KR102708827B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220099409A KR102708827B1 (ko) 2022-08-09 2022-08-09 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템과 방법
PCT/KR2023/011115 WO2024034946A1 (ko) 2022-08-09 2023-07-31 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템과 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220099409A KR102708827B1 (ko) 2022-08-09 2022-08-09 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템과 방법

Publications (2)

Publication Number Publication Date
KR20240020994A true KR20240020994A (ko) 2024-02-16
KR102708827B1 KR102708827B1 (ko) 2024-09-24

Family

ID=89852045

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220099409A KR102708827B1 (ko) 2022-08-09 2022-08-09 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템과 방법

Country Status (2)

Country Link
KR (1) KR102708827B1 (ko)
WO (1) WO2024034946A1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130017337A (ko) 2011-08-10 2013-02-20 케이티하이텔 주식회사 하이브리드 앱 개발 플랫폼 구조 및 그 테스트 방법, 그리고 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
US20140325470A1 (en) * 2013-04-30 2014-10-30 MobileDataForce, Inc. Method and system for platform-independent application development
KR20180027023A (ko) * 2016-09-05 2018-03-14 바이플러그 주식회사 앱 개발을 위한 통합 개발 환경을 제공하는 앱 저작 장치 및 방법
US20190220262A1 (en) * 2016-06-08 2019-07-18 Veriversion Labs Ltd. Methods and systems of software testing, distribution, installation and deployment

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101416096B1 (ko) * 2012-08-07 2014-07-14 인크로스 주식회사 하이브리드 웹 어플리케이션 개발을 위한 호환성 높은 플러그인 시스템
WO2015033333A1 (en) * 2013-09-09 2015-03-12 N-Sip Ltd Communication channel between plugin application and browser script
US9678726B1 (en) * 2015-03-27 2017-06-13 Amazon Technologies, Inc. Automatic generation of plugins for development tools
US20190196793A1 (en) * 2017-12-22 2019-06-27 Sap Se Building enterprise mobile applications
KR102352265B1 (ko) * 2021-12-08 2022-01-17 하승석 웹 애플리케이션 개발 플랫폼 제공 시스템 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130017337A (ko) 2011-08-10 2013-02-20 케이티하이텔 주식회사 하이브리드 앱 개발 플랫폼 구조 및 그 테스트 방법, 그리고 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
US20140325470A1 (en) * 2013-04-30 2014-10-30 MobileDataForce, Inc. Method and system for platform-independent application development
US20190220262A1 (en) * 2016-06-08 2019-07-18 Veriversion Labs Ltd. Methods and systems of software testing, distribution, installation and deployment
KR20180027023A (ko) * 2016-09-05 2018-03-14 바이플러그 주식회사 앱 개발을 위한 통합 개발 환경을 제공하는 앱 저작 장치 및 방법

Also Published As

Publication number Publication date
WO2024034946A1 (ko) 2024-02-15
KR102708827B1 (ko) 2024-09-24

Similar Documents

Publication Publication Date Title
US12093668B2 (en) iOS application program construction method and apparatus, electronic device, and storage medium
US9258669B2 (en) Registering a mobile application with a server
US9286040B2 (en) Software builder
US20240320016A1 (en) System and method for automated process orchestration
CN111459539B (zh) 基于镜像分层的持续集成流水线运行方法及装置
US11474842B2 (en) Integration application creator design
WO2011117958A1 (ja) 仮想マシン管理装置、仮想マシン管理方法、及びプログラム
CN110569473A (zh) 一种基于SSH协议远程操作linux服务器的方法
KR101086620B1 (ko) 스마트 오피스 시스템 및 운용을 위한 서버 및 운용 방법
CN113360143B (zh) 远程软件开发方法、装置、存储介质及处理器
CN112988879A (zh) 访问数据库的方法、系统、装置、存储介质及处理器
KR102708827B1 (ko) 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템과 방법
CN115357258B (zh) 应用的部署方法、装置、存储介质及电子装置
WO2011117957A1 (ja) 仮想マシン管理装置、仮想マシン管理システム、仮想マシン管理方法、及びプログラム
US11822461B2 (en) Remote debugging of cloud application
CN107948134B (zh) 数据交互方法和装置
JP5403445B2 (ja) 仮想マシン管理装置、仮想マシン管理方法、及びプログラム
KR102704008B1 (ko) 인공지능 기반 앱 빌드 및 배포 지원 시스템 및 방법
KR100962079B1 (ko) 공통화 모듈의 배포, 설치 및 관리를 자동화하는 방법 및장치
CN114726848B (zh) Windows平台的客户端自动化打包和exe分发方法及装置
JP7453315B2 (ja) プログラム、情報処理装置、情報処理システム及び情報処理方法
JP5403446B2 (ja) 仮想マシン管理装置、仮想マシン管理システム、仮想マシン管理方法、及びプログラム
WO2023169045A1 (en) Method, system, and development machine for evaluating embedded project using web browser
CN118312417A (zh) 调试方法、装置、计算机设备、存储介质及程序产品
JPWO2011117956A1 (ja) 仮想マシン管理装置、開発システム、仮想マシン管理方法、及びプログラム

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant