KR20150013535A - 무선 애플리케이션을 공개 및 구현하기 위한 방법 및 디바이스 - Google Patents

무선 애플리케이션을 공개 및 구현하기 위한 방법 및 디바이스 Download PDF

Info

Publication number
KR20150013535A
KR20150013535A KR1020147032130A KR20147032130A KR20150013535A KR 20150013535 A KR20150013535 A KR 20150013535A KR 1020147032130 A KR1020147032130 A KR 1020147032130A KR 20147032130 A KR20147032130 A KR 20147032130A KR 20150013535 A KR20150013535 A KR 20150013535A
Authority
KR
South Korea
Prior art keywords
layer
interface
wireless application
sdk
implementation
Prior art date
Application number
KR1020147032130A
Other languages
English (en)
Other versions
KR101651420B1 (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 알리바바 그룹 홀딩 리미티드
Publication of KR20150013535A publication Critical patent/KR20150013535A/ko
Application granted granted Critical
Publication of KR101651420B1 publication Critical patent/KR101651420B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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/44568Immediately runnable code
    • G06F9/44584Portable applications, i.e. making applications self-contained, e.g. U3 standard
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • 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/461Saving or restoring of program or task context
    • G06F9/463Program control block organisation
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Abstract

본 발명의 실시예들은, 무선 애플리케이션을 공개하는 방법, 무선 애플리케이션을 구현하는 방법, 무선 애플리케이션을 공개하기 위한 디바이스, 무선 애플리케이션을 구현하기 위한 디바이스, 및 무선 애플리케이션을 공개하기 위한 컴퓨터 프로그램 제품에 관한 것이다. 무선 애플리케이션을 공개하기 위한 방법이 제공된다. 이 방법은 소프트웨어 개발 키트(SDK)의 영구 인터페이스 계층을 무선 애플리케이션에 통합하는 단계, 통합된 무선 애플리케이션을 공개하는 단계, 및 SDK의 동적 구현 계층을 서버상에 설치하는 단계를 포함한다. SDK는 영구 인터페이스 계층과 동적 구현 계층을 포함하고, 영구 인터페이스 계층은 상기 무선 애플리케이션에 의해 적용될 인터페이스 프로토콜을 포함하고, 동적 구현 계층은 인터페이스 프로토콜에 대응하는 인터페이스 구현을 포함한다.

Description

무선 애플리케이션을 공개 및 구현하기 위한 방법 및 디바이스{METHOD AND DEVICE FOR PUBLISHING AND IMPLEMENTING WIRELESS APPLICATION}
본 출원은 2012년 6월 8일에 출원되었고, 발명의 명칭이 "METHOD AND DEVICE FOR PUBLISHING AND IMPLEMENTING WIRELESS APPLICATIONS"인 중화인민공화국 특허출원 제201210189767.4호를 우선권 주장하고, 이는 모든 목적들을 위해 참조로서 본 명세서에 통합된다.
본 출원은 무선 애플리케이션을 공개 및 구현하기 위한 방법 및 디바이스에 관한 것이다.
"무선 애플리케이션들"은 전형적으로 단말-기반의 운영 체계들로부터 개발된 무선 클라이언트 애플리케이션들을 언급한다. 무선 애플리케이션들은 전형적으로 특정 기능들을 구현하는 SDK들(Software Development Kits: 소프트웨어 개발 기트들)과 함께 통합된다. SDK의 예는 광고 SDK이다, 즉 소프트웨어 개발 키트는 광고 로직을 통합시키기 위하여 무선 애플리케이션 개발자에 의해 사용된다. 무선 광고들을 등록하는 사업에 관련된 회사들은 전형적으로 이러한 SDK들을 자신들의 웹사이트들 상에서 무선 애플리케이션 개발자들에 제공한다.
SDK들은 무선 애플리케이션 통합에서 상이점들을 해결하기 위하여 상이한 모드들의 등록을 사용할 수 있다. 예컨대, 무선 애플리케이션 광고 SDK 시스템에서, 현재 두 종류의 광고 플랫폼들이 시장에 존재한다. 한 종류의 광고 플랫폼은 자신들의 광고를 등록하는 회사들, 즉 광고하기를 원하는 회사들을 위한 광고 자원들의 플랫폼이다. 이러한 종류의 광고 플랫폼의 일 예는 ADMob이다. 다른 종류의 광고 플랫폼은 복수의 광고 플랫폼들을 통합하는 SDK를 광고 최적화 서비스들에 제공하는 플랫폼이다. 이러한 다른 종류의 광고 플랫폼의 일 예는 mogo(www.adsmogo.com)이다. 따라서, 광고 플랫폼은 무선 애플리케이션(App) 광고의 글로벌 필 레이트들(global fill rates)을 최적화시키고, 타깃 광고의 정확성을 개선한다. 전자의 광고 플랫폼은 개발자가 광고 플랫폼의 SDK를 개발자의 무선 애플리케이션에 통합하는 것을 필요로 한다. 전자의 광고 플랫폼의 SDK의 새로운 버전이 공개될 때마다, 무선 애플리케이션 개발자는 SDK의 새로운 버전을 통합하고, 코드를 개정하고, 무선 애플리케이션을 재공개하는 것을 필요로 하여, 사용자들이 대응하는 무선 애플리케이션을 갱신하는 것을 요구한다. 후자의 광고 플랫폼에 대해, 통합된 광고 플랫폼 SDK들의 임의의 것이 업그레이드되면, SDK는 갱신을 위한 새로운 요구에 직면한다. 더욱이, 무선 애플리케이션 개발자가 새로운 SDK를 부가하거나 통합된 SDK를 제거하기 위하여, 개발자는 새로운 애플리케이션을 개발하고 공개하는 것이 요구된다.
복수의 광고 플랫폼들을 통합하는 SDK들을 갖는 플랫폼들에 관해, 무선 애플리케이션 개발자가 무선 애플리케이션의 개발을 완료한 이후, 간혹 개발자가 업그레이드 유지보수를 재개발하거나 수행하지 않고 장기간의 시간이 경과한다. 그러나, 통합된 SDK를 갖는 광고 플랫폼은 기존 무선 애플리케이션의 버전 업그레이드의 결과로서 기존 무선 애플리케이션의 이전 버전들과 호환하지 않게 될 수 있다. 이 경우, 기존의 무선 애플리케이션은 업그레이드되어야 한다. 무선 애플리케이션의 최종 사용자의 관점으로부터, 최종 사용자는 무선 애플리케이션을 업그레이드할 필요를 전혀 갖지 않는다. 무선 애플리케이션 개발자들을 위해, 최종 사용자가 애플리케이션을 갱신할 필요성 및 애플리케이션을 업그레이드할 필요성은 단순히 별도의 개발 및 유지보수 작업과 애플리케이션 공개 비용들을 부가한다.
광고 자원들을 완전히 사용하고, 글로벌 필 레이트들을 상승시키기 위하여, 광고 플랫폼들은 일반적으로 복수의 통합된 광고 SDK들을 사용한다. 광고 SDK들을 통합하는 광고 플랫폼들의 사용은, 너무 적은 광고 SDK들을 통합하는 무선 애플리케이션들로부터 초래되는, 광고 타깃 회사들 및 광고주들에 대한 불충분한 자원들(낮은 필 레이트 및 낭비된 자원을 초래하는)의 문제점을 회피하도록 시도한다. 그러나, 광고 SDK들을 통합하는 플랫폼들에 대해, 광고 SDK 업그레이드들은 무선 애플리케이션 업그레이드들, 패키징 및 공개에 관련하여 작업부하의 큰 증가를 초래할 수 있다.
본 발명은, 프로세스; 장치; 시스템; 물질의 구성; 컴퓨터 판독 가능한 저장 매체 상에서 구현된 컴퓨터 프로그램 제품; 및/또는 프로세서에 결합된 메모리에 저장되거나 및/또는 메모리에 의해 제공된 명령들을 실행하도록 구성된 프로세서와 같은 프로세서를 포함하는 다양한 방식으로 구현될 수 있다. 본 명세서에서, 이들 구현들, 또는 본 발명이 취할 수 있는 임의의 다른 형태는 기술들로 언급될 수 있다. 일반적으로, 개시된 프로세스들의 단계들의 순서는 본 발명의 범주 내에서 변경될 수 있다. 달리 언급되지 않는다면, 업무를 수행하도록 구성되는 것으로 기술된 프로세서 또는 메모리와 같은 구성요소는 주어진 시간에 업무를 수행하도록 일시적으로 구성되는 일반 구성요소 또는 업무를 수행하도록 제작된 특정 구성요소로서 구현될 수 있다. 본 명세서에서 사용된 용어 "프로세서"는 하나 이상의 디바이스들, 회로들, 및/또는 컴퓨터 프로그램 명령들과 같은 데이터를 처리하도록 구성된 처리 코어들을 언급한다.
본 발명의 하나 이상의 실시예들의 상세한 설명은 본 발명의 원리들을 도시하는 첨부 도면들과 함께 아래에서 제공된다. 본 발명은 이러한 실시예들과 관련하여 기술되지만, 본 발명은 임의의 실시예에 국한되는 것은 아니다. 본 발명의 범주는 청구항들에 의해서만 제한되고, 본 발명은 다양한 대안들, 수정들 및 균등물들을 포함한다. 다양한 특정 상세들이 본 발명의 철저한 이해를 제공하기 위하여 다음의 설명에서 설명된다. 이들 상세들은 예시를 위해 제공되고, 본 발명은 이들 특정 상세들의 일부 또는 전부 없이도 청구항들에 따라 실시될 수 있다. 명확성을 위해, 본 발명에 관한 기술 분야들에서 알려진 기술 재료는 본 발명이 불필요하게 모호해지지 않도록 상세하게 설명되지 않는다.
본 출원은 무선 애플리케이션의 실행에 관한 것이다. 무선 애플리케이션은 동적으로 서버로부터 소프트웨어 개발 키트의 통합된 등급 라이브러리의 가장 최근 버전을 획득하고, 가장 최근의 버전을 로딩하여 실행한다. 등급 라이브러리들을 동적으로 로딩함으로써, SDK들과 함께 현재 통합되는 무선 애플리케이션들은 새로운 기능을 획득한다.
본 발명의 다양한 실시예들은 다음의 상세한 설명과 첨부 도면들에서 개시된다.
도 1은 무선 애플리케이션 공개 처리의 일 실시예의 흐름도.
도 2는 무선 애플리케이션 공개 처리의 다른 실시예의 흐름도.
도 3은 무선 애플리케이션 공개 처리의 또 다른 실시예의 흐름도.
도 4는 종래의 무선 애플리케이션의 공개 및 SDK 업그레이드 처리의 도면.
도 5는 무선 애플리케이션의 공개 및 SDK 업그레이드 처리의 일 실시예의 도면.
도 6은 무선 애플리케이션 구현 처리의 일 실시예의 흐름도.
도 7은 무선 애플리케이션 공개 디바이스의 일 실시예의 구조 블록도.
도 8은 무선 애플리케이션 공개 시스템의 일 실시예의 구조 블록도.
도 9는 무선 애플리케이션 공개 시스템을 사용하여 업그레이드되는 SDK의 도면.
도 10은 무선 애플리케이션 구현 디바이스의 일 실시예의 구조 블록도.
도 11은 무선 애플리케이션에 로딩되는 SDK 동적 구현 계층의 도면.
도 11은 무선 애플리케이션에 로딩되는 SDK 동적 구현 계층의 도면이다. 무선 클라이언트(1110)는 도 9의 무선 클라이언트(910)에 대응하고, 무선 애플리케이션(1130)을 포함한다. 무선 애플리케이션(1130)은 SDK 영구 인터페이스 계층(1140)을 포함한다. 무선 애플리케이션(1130)의 실행 도중에, 무선 애플리케이션(1130)은 서버(1120)로부터 SDK 동적 구현 계층(1180)을 적용한다.
도 1은 무선 애플리케이션 공개 처리의 일 실시예의 흐름도이다. 처리(100)는 도 8의 서버(820)에 의해 구현될 수 있고, 다음을 포함한다:
110에서, 서버는 SDK의 영구 인터페이스 계층을 무선 애플리케이션에 통합한다. 일부 실시예들에 있어서, 통합은 무선 애플리케이션의 컴파일 도중의 정적 링크 동작을 통해 이루어진다.
이러한 SDK는 영구 인터페이스 계층과 동적 구현 계층을 포함한다. 영구 인터페이스 계층은 인터페이스 프로토콜을 포함한다. 인터페이스 프로토콜은 SDK가 규정한 애플리케이션 프로그래밍 인터페이스를 언급한다. 예컨대, SDK는 GetTextAds(점 위치, 스트링 콘텐트, 폰트의 폰트크기, 컬러 텍스트컬러)와 같은 광고의 텍스트를 얻기 위하여 사용된 인터페이스를 규정한다. 일부 실시예들에 있어서, 영구 인터페이스 계층은 인터페이스 프로토콜을 통해 무선 애플리케이션에 의해 적용된다. 동적 구현 계층은 무선 애플리케이션에 의해 적용될 인터페이스 구현을 포함하고, 이러한 인터페이스 구현은 인터페이스 프로토콜에 대응한다. 영구 인터페이스 계층 내의 인터페이스 프로토콜은 무선 클라이언트 내의 무선 애플리케이션이 동적 구현 계층 내의 인터페이스 구현을 적용하도록 야기한다.
인터페이스 프로토콜은 인터페이스를 위한 프로토콜이다. 일부 실시예들에 있어서, 인터페이스 프로토콜은 인터페이스 등급의 명칭, 공개 방법의 명칭, 파라미터 유형들 및 시퀀스들을 적용하는 허용된 방법, 및 리턴 값들의 유형들을 규정한다. 일부 실시예들에 있어서, 인터페이스는 등급을 통해 구현된다. 인터페이스 구현은 인터페이스 프로토콜 내에 규정된 인터페이스의 특정 구현이다. 일부 실시예들에 있어서, 인터페이스 프로토콜은 인터페이스 프로토콜에 따르기 위한 방법 명칭들, 파라미터 유형들 및 시퀀스들, 리턴 값 유형들, 등을 포함한다.
120에서, 서버는 통합된 무선 애플리케이션을 공개하고, SDK의 동적 구현 계층을 설치한다.
일부 실시예들에 있어서, 공개 및 설치 동작들은 클라이언트 단말의 운영체계(OS)에 의존한다. 예컨대, 안드로이드 앱에서, 안드로이드 앱은 SDK의 동적 구현 계층을 애플리케이션 패키지 파일(APK) 내에 패키징할 것이다.
공개된 무선 애플리케이션들은 무선 클라이언트들이 사용하기 위해 다운로드될 수 있다. 일부 실시예들에 있어서, 무선 애플리케이션이 사용되는 동안, 또는 무선 애플리케이션이 후속적으로 갱신될 때, 무선 애플리케이션은, 영구 인터페이스 계층 내의 인터페이스 프로토콜에 의해 규정된 인터페이스 및 서버의 동적 구현 계층 상에 설치된 인터페이스 구현을 통해 적용한다.
이러한 예에서, SDK는 영구 인터페이스 계층과 동적 구현 계층으로 분할된다. 일부 실시예들에 있어서, 영구 인터페이스 계층은 무선 애플리케이션에 의해 적용될 수 있는 인터페이스 애플리케이션을 포함한다. 일부 실시예들에 있어서, 갱신은 영구 인터페이스 계층을 변경시키지 않는다. 일 양상으로서, 동적 구현 계층은 인터페이스 프로토콜에 대응하는 인터페이스 구현을 포함한다. 즉, 동적 구현 계층은 인터페이스 구현을 통해 무선 애플리케이션에 의해 적용될 것이다. 일부 실시예들에 있어서, 갱신은 동적 구현 계층을 변화시킨다. SDK를 2개의 계층들로 분할함으로써, 상대적으로 안정된 영구 인터페이스 계층은 공개를 위한 무선 애플리케이션으로 통합된다. 다른 한편으로, 동적 구현 계층은 무선 클라이언트에 의해 사용된 무선 애플리케이션의 영구 인터페이스 계층에 의해 적용되고, 동적 구현 계층의 인터페이스 구현을 위한 등급 라이브러리는 동적으로 로딩된다. 즉, 동적 구현 계층이 동적으로 로딩될 때, 컴파일된 등급은 메모리에 로딩될 것이다. SDK 갱신이 기본적으로 인터페이스 구현의 갱신이기 때문에, SDK가 갱신되어야 하는 경우, 오로지 서버상에 위치한 동적 구현 계층이 갱신된다. 무선 클라이언트의 무선 애플리케이션 부분은 수정될 필요가 없다. 따라서, 무선 애플리케이션의 통합된 SDK가 갱신될 때, 무선 애플리케이션 자체(즉, SDK 이외의 부분)는 동시에 갱신될 필요가 없다. 두 개의 계층들로 SDK의 이러한 분할은 무선 클라이언트의 무선 애플리케이션이 SDK와 함께 업그레이드되어야 하는 상황들의 수를 크게 줄인다. 더욱이, 두 개의 계층들로 SDK의 분할은 무선 애플리케이션 사용자들에 투명하고, 사용자들의 경험을 증진시키고, 또한 무선 애플리케이션 개발자들에 대한 개발 부담을 줄이고, 공개 애플리케이션들의 비용뿐만 아니라 개발 및 유지보수 비용들을 줄인다.
도 2는 무선 애플리케이션 공개 처리의 다른 실시예의 흐름도이다. 처리(200)는 도 8의 서버(820)에 의해 구현될 수 있고, 다음을 포함한다:
210에서, 서버는 인터페이스 프로토콜을 영구 인터페이스 계층 내에서 캡슐화하고 인터페이스 구현을 동적 구현 계층 내에서 캡슐화하기 위하여 SDK를 분할한다.
일부 실시예들에 있어서, SDK는 애플리케이션의 개발 도중에 분할된다.
종래에, 공급자는, 인터페이스 프로토콜 및 인터페이스 구현 모두를 포함하는 전체 소프트웨어 패키지로서, 또는 단일 소프트웨어 프로그램 내에서 SDK를 방출한다. 이후, 무선 애플리케이션 개발자는 공개를 위해 전체 SDK를 무선 애플리케이션 안에 통합한다.
다른 한편으로, 본 실시예에서, 인터페이스 프로토콜은 하나의 패키지로 만들어진다. 즉, 인터페이스 프로토콜은 영구 인터페이스 계층으로 캡슐화된다. SDK의 영구 인터페이스 계층은 통합된 SDK들을 갖는 외부 프로그램들(무선 애플리케이션들과 같은)의 적용 인터페이스 프로토콜에 노출된다. 일부 실시예들에 있어서, 이러한 패키지는 컴파일된 데이터이고, 외부 애플리케이션에 의해 직접 적용될 수 있다. 통합된 SDK는 동적 구현 계층과 영구 인터페이스 계층을 두 개의 별도의 계층들로서 포함한다. 적용 인터페이스 프로토콜은, 방법 명칭들, 리턴 유형들, 허용된 파라미터들, 입-출력 프로토콜들, 등과 같은 인터페이스 정의들을 포함한다. 인터페이스 구현은 별도의 패키지로서 만들어진다. 즉, 인터페이스 구현은 동적 구현 계층으로서 캡슐화된다. 인터페이스 구현은 동적 구현 계층을 실현하는 컴파일된 코드이다. SDK 동적 구현 계층은 SDK 영구 인터페이스 계층에 의해 규정된 인터페이스의 특정 구현이다. SDK 동적 구현 계층은 통합된 SDK들을 갖는 외부 프로그램들에 의해 지각되지 않는다. 즉, 외부 프로그램은 영구 인터페이스 계층을 적용하고, 동적 구현 계층은 SDK에 의해 내부적으로 적용된다. 일부 실시예들에 있어서, 구현 모드들 및 방법들은, SDK가 통합된 외부 프로그램들의 인터페이스 프로토콜의 사전조건들이 충족되는 한, SDK가 통합된 외부 프로그램들에 영향을 미치지 않고 변경된다. 이후, 인터페이스 프로토콜로부터 만들어진 패키지는 무선 애플리케이션 안에 통합되고, 무선 애플리케이션은 컴파일되어 공개된다(즉, 공개적으로 사용 가능하게 된다). 공개된 무선 애플리케이션은 무선 클라이언트들에 의해 설치되어 사용된다. 또한 인터페이스 구현으로부터 만들어진 패키지는 서버상에 설치된다. 무선 클라이언트가 무선 애플리케이션을 설치 또는 사용한 이후, 무선 애플리케이션에 통합된 SDK는 서버로부터 인터페이스 구현 데이터 패키지들의 새로운 버전들을 자발적으로 획득한다. 이러한 방식으로, SDK가 통합된 프로그램은, SDK가 통합된 프로그램이 업그레이드될 필요 없이, 새로운 SDK 업그레이드 패키지를 획득할 수 있다. 통합된 SDK는 영구 인터페이스 계층을 포함하고, 동적 구현 계층을 포함하지 않는다.
사전 조건의 일 예로서, 영구 인터페이스 계층이 오로지 텍스트 유형의 광고들을 획득하기 위한 인터페이스를 제공하는 것으로 간주하면, 외부 프로그램이 텍스트 유형의 광고를 원하는 경우, 새로운 광고 공급자를 포함하는 동적 구현 계층의 변화는 외부 프로그램에 영향을 미치지 않을 것이다. 다른 한편으로, 영구 인터페이스 계층이 이미지 유형의 광고에 대한 새로운 지원을 추가하고, 외부 프로그램이 이미지 유형의 광고를 획득하기를 원하면, 영구 인터페이스 계층이 더 이상 사전 조건을 충족시키지 않기 때문에, 업그레이드가 수행되어야 한다.
일부 실시예들에 있어서, SDK는 통합시 무선 애플리케이션 개발 인력에 의해 분할된다. 일부 실시예들에 있어서, 제 3 당사자는 분할된 SDK를 제공한다. 통합을 수행하는 동안, 무선 애플리케이션 개발 인력은 오로지 분할된 SDK의 영구 인터페이스 계층을 직접 애플리케이션 내에 통합한다.
220에서, 서버는 SDK 영구 인터페이스 계층을 무선 애플리케이션에 통합하고, 통합된 무선 애플리케이션을 공개한다. 일부 실시예들에 있어서, 통합된 무선 애플리케이션은 무선 클라이언트들에 의해 다운로드되어 사용된다. 동시에, SDK 동적 구현 계층은 서버상에 설치된다.
230에서, 서버는 무선 애플리케이션을 사용하는 무선 클라이언트에 의해 송신된 획득 요청이 수신되었는지의 여부를 결정한다. 무선 애플리케이션을 사용하는 무선 클라이언트에 의해 송신된 획득 요청이 수신된 경우, 제어는 동작(240)으로 진행한다. 무선 애플리케이션을 사용하는 무선 클라이언트에 의해 송신된 획득 요청이 수신되지 않은 경우, 제어는 동작(250)으로 진행한다.
획득 요청은 동적 구현 계층의 인터페이스 구현이 서버로부터 획득되도록 요청한다.
서버가 획득 요청을 수신하는 경우, 요청을 수신하는 것은 공개된 무선 애플리케이션이 동적 구현 계층의 데이터를 통합하지 않았음을 의미한다. 이때, 동적 구현 계층의 데이터는 동적 구현 인터페이스의 로딩 및 갱신을 구현하기 위하여 서버로부터 획득된다. 서버가 획득 요청을 수신하지 않은 경우, 요청을 수신하지 않은 것은 공개된 무선 애플리케이션이 동적 구현 계층의 원래의 버전과 통합된 것을 의미한다. 일반적으로, 원래의 버전은 공개 단계 도중에 애플리케이션 내에 패키징된 원래의 버전을 언급하고, 원래의 버전은 그 시간에 공개된 주로 가장 새로운 버전이다. 일부 실시예들에 있어서, 무선 클라이언트들은 다운로드된 무선 애플리케이션들로부터 원래의 동적 구현 계층들의 인터페이스 구현들을 자동적으로 로딩한다. 필요한 시간들 또는 미리 설정된 시간들에, 획득 요청들은 인터페이스 구현들을 갱신하여 동적 구현 계층들을 갱신하기 위하여, 서버로 송신된다.
240에서, 무선 애플리케이션을 사용하는 무선 클라이언트에 의해 송신된 획득 요청이 수신된 경우, 서버는 동적 구현 계층의 인터페이스 구현을 서버로부터 무선 클라이언트에 송신한다. 동적 구현 계층의 인터페이스 구현은 무선 클라이언트 내의 무선 애플리케이션이, 영구 인터페이스 계층 내의 인터페이스 프로토콜에 의해 규정된 인터페이스를 통해, 서버로부터 획득된 인터페이스 구현을 적용하고, 인터페이스 구현을 위한 등급 라이브러리를 동적으로 로딩하도록 야기한다.
일부 실시예들에 있어서, 등급 라이브러리는 애플리케이션 개발 단계 내에서 도입되고, 컴파일 및 패키징 이후, 등급 라이브러리는 무선 애플리케이션과 함께 공개된다. 이러한 접근법은 정적 등급 라이브러리 로딩으로 불린다. 대조적으로, 공개된 무선 클라이언트 애플리케이션이 구동중에 등급 라이브러리를 획득하고, 대응하는 로직을 동적으로 로딩하고 실행할 때, 이러한 접근법은 동적 등급 라이브러리 로딩으로 불린다.
동작(240)에서, 인터페이스 구현을 위한 등급 라이브러리는 동적으로 로딩된다. 즉, 무선 애플리케이션이 구동되는 동안, 인터페이스 구현을 위한 등급 라이브러리가 획득되고, 이후 획득된 등급 라이브러리는 동적으로 로딩되고, 대응하는 로직이 실행된다.
250에서, 서버는 무선 클라이언트에 의해 송신된 조회 요청이 수신되었는지를 결정한다. 무선 클라이언트에 의해 송신된 조회 요청이 수신된 경우, 제어는 동작(260)으로 진행한다. 무선 클라이언트에 의해 송신된 조회 요청이 수신되지 않은 경우, 제어는 동작(250)에 머무른다.
조회 요청은 무선 애플리케이션의 영구 인터페이스 계층 및 동적 구현 계층의 버전 정보를 포함하고, 서버가 영구 인터페이스 계층, 동적 구현 계층, 또는 이들의 조합의 갱신된 버전을 갖는지를 조회하기 위하여 사용된다.
260에서, 서버는 영구 인터페이스 계층, 동적 구현 계층, 또는 이들의 조합의 갱신된 버전이 존재하는 것을 확인하고, 갱신된 버전을 무선 클라이언트에 송신한다. 무선 클라이언트는 갱신된 버전을 사용하여, 무선 클라이언트의 무선 애플리케이션의 영구 인터페이스 계층, 동적 구현 계층, 또는 이들의 조합을 갱신한다.
종래에, 무선 애플리케이션의 통합된 SDK가 갱신될 때, 무선 애플리케이션 자체(즉, SDK 이외의 부분)가 또한 동시에 갱신될 필요가 있는 문제점이 존재한다. 그러나, 영구 인터페이스 계층이 동적 구현 계층보다 덜 갱신되고, 동적 구현 계층 자체는 무선 애플리케이션이 갱신되지 않고도 갱신되기 때문에, 위의 처리(200)는 무선 클라이언트의 무선 애플리케이션이 갱신된 SDK와 함께 업그레이드되는 것이 필요한 상황들의 수를 감소시킨다. 또한 위의 처리(200)는 무선 애플리케이션의 사용자들에 투명하여 무선 애플리케이션 사용자들의 경험을 증진시키고, 무선 애플리케이션 개발자들에 대한 개발 부담을 줄이고, 애플리케이션들을 공개하는 비용뿐만 아니라 개발 및 유지보수 비용들을 낮춘다.
도 3은 무선 애플리케이션 공개 처리의 또 다른 실시예의 흐름도이다. 처리(300)는 도 8의 서버(820)에 의해 구현될 수 있고, 다음을 포함한다:
310에서, 서버는 영구 인터페이스 계층 내에서 인터페이스 프로토콜을 캡슐화하고, 동적 구현 계층 내에서 인터페이스 구현을 캡슐화하기 위하여 SDK를 분할한다.
일부 실시예들에 있어서, SDK는 반영 메커니즘에 기초하여 분할된다. 자바 의 반영 메커니즘은 컴파일 동안 등급들의 명칭을 알지 않고도 실행시간 도중에 검사될 수 있는 등급들을 언급한다. 예컨대, 반영 메커니즘(반영 기술로도 불린다)은 자바의 반영 패키지를 사용한다. 반영은 .NET 내에서의 메커니즘이다. 일부 실시예들에 있어서, 반영은 무선 애플리케이션이 .NET 내의 각 유형의 원소들(등급, 구조체(struct), 대리자(delegate), 인터페이스, 열거형(enum)을 포함)을 얻도록 야기한다. 반영 메커니즘은 방법들, 속성들, 이벤트들, 구성자들, 등을 포함한다. 일부 실시예들에 있어서, 반영 메커니즘은 각 원소의 명칭, 규정사, 및 파라미터, 등을 획득한다. 반영이 존재하는 경우, 각 유형의 철저한 지식을 갖는 것이 가능하다. 무선 클라이언트의 무선 애플리케이션이 구성자에 대한 정보를 획득하는 경우, 반영 메커니즘은, 대상의 유형이 무선 애플리케이션의 컴파일 동안 알려지지 않았다 할지라도, 대상을 직접 생성할 수 있다.
일부 실시예들에 있어서, 반영 메커니즘은 SDK를 분할하여, 별도의 SDK들의 구현을 단순화시키고, 무선 애플리케이션의 공개 방식들을 구현하는 비용을 낮춘다.
320에서, 서버는 SDK의 영구 인터페이스 계층을 무선 애플리케이션에 통합하고, 통합된 무선 애플리케이션을 공개하고, SDK의 동적 구현 계층을 서버상에 설치한다.
예컨대, SDK의 영구 인터페이스 계층은 컴파일 동안 정적 링크를 통해 무선 애플리케이션에 정적으로 패키징된다.
일부 실시예들에 있어서, 무선 애플리케이션은 초기에 SDK의 동적 구현 계층의 원래의 버전과 함께 통합되지 않는다. 즉, SDK의 동적 구현 계층 코드의 원래의 버전은 컴파일 동안 무선 애플리케이션에 링크되지 않는다.
330에서, 무선 클라이언트는 통합된 무선 애플리케이션을 다운로드하여 무선 애플리케이션을 설치하고, 무선 애플리케이션 또는 이의 조합을 사용한다.
340에서, 무선 클라이언트는 통합된 무선 애플리케이션이 SDK 동적 구현 계층의 원래의 버전을 포함하는지의 여부를 결정한다. 통합된 무선 애플리케이션이 SDK 동적 구현 계층의 원래의 버전을 포함하는 경우, 제어는 동작(350)으로 진행한다. 통합된 무선 애플리케이션이 SDK 동적 구현 계층의 원래의 버전을 포함하지 않는 경우, 제어는 동작(360)으로 진행한다.
예컨대, 한 상황에서, 무선 애플리케이션은 SDK 동적 구현 계층의 원래의 버전과 통합되지 않았다. 이러한 상황에서 무선 클라이언트는 서버로부터 SDK 동적 구현 계층의 원래의 버전을 다운로드하여 획득하고, 이후 무선 애플리케이션을 동적으로 로딩하여 적용한다. 다른 상황에서, SDK는 SDK 동적 구현 계층의 원래의 버전을 포함한다. 이러한 상황에서, 무선 클라이언트는 무선 애플리케이션이 구동 중일 때 SDK 동적 구현 계층의 원래의 버전을 직접 로딩하여 적용하고, 이후 SDK 동적 구현 계층의 새로운 버전이 존재하는지를 조회하는 요청을 서버에 송신한다. SDK 동적 구현 계층의 새로운 버전이 존재하는 경우, 무선 클라이언트는 SDK 동적 구현 계층의 새로운 버전을 다운로드하고, 이후 SDK 동적 구현 계층의 새로운 버전을 적용하여 로딩한다. 일부 실시예들에 있어서, SDK 동적 구현 계층의 다운로드 버전은 SDK 동적 구현 계층의 기존의 버전을 교체한다. 다른 상황은, 무선 애플리케이션이 구동중인 동안, 무선 클라이언트가 SDK 동적 구현 계층의 새로운 버전이 존재하는지를 조회하는 요청을 서버에 송신하는 경우이다. SDK 동적 구현 계층의 새로운 버전이 존재하는 경우, 무선 클라이언트는 SDK 동적 구현 계층의 새로운 버전을 다운로드하고, 이후 SDK 동적 구현 계층의 새로운 버전을 적용하여 로딩한다. 새로운 버전이 존재하지 않는 경우, 무선 클라이언트는 프로토콜에 기초하여(예, 경로 및 파일 명칭에 기초하여), SDK 동적 구현 계층의 버전(즉, 동적 구현 계층의 원래의 버전)을 찾는다. 예컨대, 동적 구현 계층의 성공적으로 업그레이드된 새로운 버전이 특정 디렉토리 내의 동적 구현 계층의 원래의 버전을 교체하면, 동적 구현 계층의 원래의 버전이 특정 디렉토리에 저장된다.
350에서, 무선 클라이언트의 무선 애플리케이션은, 무선 클라이언트 상의 통합된 SDK의 영구 인터페이스 계층 내의 인터페이스 프로토콜에 의해 규정된 인터페이스를 통해, 동적 구현 계층의 원래의 버전의 인터페이스 구현을 적용하고, 인터페이스 구현을 위한 등급 라이브러리를 동적으로 로딩한다. 후속적으로, 제어는 동작(380)으로 진행한다.
일부 실시예들에 있어서, 인터페이스 구현을 위한 등급 라이브러리는 동적으로 로딩된다. 즉, 무선 애플리케이션이 구동되는 동안, 무선 클라이언트는 인터페이스 구현을 위한 등급 라이브러리를 획득하고, 이후 무선 클라이언트는 등급 라이브러리를 동적으로 로딩하고, 대응하는 로직을 실행한다.
360에서, 통합된 무선 애플리케이션이 SDK 동적 구현 계층의 원래의 버전을 포함하지 않는 경우, 무선 클라이언트의 무선 애플리케이션은 서버로부터 SDK 동적 구현 계층의 인터페이스 구현을 획득한다.
일부 실시예들에 있어서, 무선 애플리케이션은 초기에 SDK 동적 구현 계층의 원래의 버전과 함께 통합되지 않는다. 그러므로, 340에서, 무선 클라이언트가 통합된 무선 애플리케이션이 SDK 동적 구현 계층의 원래의 버전을 포함하지 않은 것을 확인하는 경우, 제어는 동작(360)으로 진행한다.
370에서, 무선 클라이언트의 무선 애플리케이션이 SDK 영구 인터페이스 계층 내의 인터페이스 프로토콜에 의해 규정된 인터페이스를 통해, 서버로부터 획득된 인터페이스 구현을 적용하고, 인터페이스 구현을 위해 등급 라이브러리를 동적으로 로딩한다.
380에서, 무선 클라이언트의 무선 애플리케이션은 서버가 영구 인터페이스 계층, 동적 구현 계층, 또는 이들의 임의의 조합의 갱신된 버전을 갖는지를 결정한다. 서버가 영구 인터페이스 계층, 동적 구현 계층, 또는 이들의 임의의 조합의 갱신된 버전을 갖는 경우, 제어는 동작(390)으로 진행한다. 서버가 영구 인터페이스 계층, 동적 구현 계층, 또는 이들의 임의의 조합의 갱신된 버전을 갖지 않는 경우, 제어는 동작(380)에 머무른다.
SDK 초기화 동안, 무선 클라이언트는 국부적인 SDK 관련 데이터 패키지의 현재 버전을 획득한다. 일부 실시예들에 있어서, 현재의 버전은 숫자이고, 서버는 현재 서버상에 있는 가장 최근의 SDK 관련 데이터 패키지의 현재 버전을 다시 클라이언트에 송신한다. 서버상의 버전이 클라이언트 SDK의 현재의 버전보다 더 최근인 경우, 즉, 서버가 새로운 버전을 구동하는 경우, 무선 클라이언트는 서버로부터 더 새로운 SDK로 갱신한다.
390에서, 무선 클라이언트의 무선 애플리케이션은 서버로부터 SDK 영구 인터페이스 계층, 동적 구현 계층, 또는 이들의 조합의 더 새로운 버전을 다운로딩하고, 무선 클라이언트 내의 SDK 영구 인터페이스 계층, 동적 구현 계층, 또는 이들의 조합을 갱신한다.
무선 애플리케이션의 공개 및 SDK의 업그레이드는 종래의 무선 애플리케이션 공개 및 SDK 업그레이드와 비교하여 추가로 설명될 것이다.
예컨대, 광고 SDK가 인터페이스 AdObject.displayAd()를 제공하고, 애플리케이션이 ad 콘텐트를 획득하기 위하여 인터페이스를 적용하는 것을 가정한다. SDK의 영구 인터페이스 계층은 이러한 인터페이스를 적용할 것이다: AdObject.displayAd(){동적 구현 계층의 AdObjectImp.displayAd()를 적용하기 위하여 반영 메커니즘을 사용}, 원래의 구현은 구현:AdObjectImp.displayAd(print "ad1")을 제공하고, 이때, AdObject.displayAd를 적용하는 애플리케이션은 ad1을 인쇄할 것이고; 이때 동적 구현 계층이 새로운 버전:AdObjectImp.displayAd(print "ad2")으로 갱신된다면, 애플리케이션이 AdObject.displayAd()를 적용할 때, AdObject.displayAd()를 적용하는 애플리케이션은 ad2를 인쇄할 것이다. 그러므로, AdObject.displayAd()는 영구 인터페이스 계층에 속하고, 애플리케이션에 링크될 것이다. AdObjectImpl.displayAd의 모든 버전들은 동적 구현 계층에 속하고, 애플리케이션에 링크되지 않을 것이지만, AdObjectImp.displayAd는 영구 인터페이스 계층이 실행될 때 동적으로 로딩되어 적용된다.
도 4는 종래의 무선 애플리케이션 공개 및 SDK 업그레이드 처리 도면이다. 종래에, 무선 애플리케이션 분야에서, SDK 통합은 애플리케이션으로의 정적인 패키징을 통해 달성된다. 종래의 SDK 통합에 대해, 무선 애플리케이션을 업그레이드하기 위한 빈번한 요구 및 높은 업그레이드 비용과 같은 문제점이 존재한다. SDK가 업그레이드되어야 할 때마다, SDK와 함께 통합된 모든 애플리케이션들이 다시 통합, 컴파일, 패키징, 및 배포되어야 하고, 클라이언트 최종 사용자들은 다운로딩 및 업그레이딩 동작들을 수행할 필요가 있다. 모든 이전 동작들이 수행된 이후에만 최종 SDK 갱신이 달성될 수 있다. 도 4에서, 애플리케이션 내의 SDK는 컴파일 도중 애플리케이션에 그 전체가 정적으로 연결되고, 이후 애플리케이션은 공개된다. 즉, 전체 SDK는 애플리케이션에 통합되고, 이후 통합된 SDK와 함께 애플리케이션이 공개된다. 애플리케이션 내의 SDK가, 무선 클라이언트가 애플리케이션을 설치하여 사용한 이후, 업그레이드될 필요가 있다면, 애플리케이션 자체와 거기에 통합된 SDK를 포함하는 전체 애플리케이션은 서버로부터 다운로드될 것이다. 후속적으로, 새로운 SDK 버전이 공개될 때마다, 무선 애플리케이션 개발자는, 무선 애플리케이션 자체가 전혀 수정되지 않을 수 있다 할지라도, 코드를 수정하여 재공개하여야 한다. 사용자의 무선 애플리케이션 자체는 또한 갱신을 수행하여야 한다. 무선 애플리케이션 개발자들에 대해, 이러한 처리는 애플리케이션 공개 비용들뿐만 아니라 별도의 개발 및 유지보수 비용들을 추가한다. 이러한 처리는 또한 사용자의 무선 애플리케이션의 사용자 경험을 손상시킨다.
도 5는 무선 애플리케이션 공개 및 SDK 업그레이드 처리 실시예의 도면이다. 도 5는 SDK 영구 인터페이스 계층과 동적 구현 계층의 분리를 도시한다. 애플리케이션은 오로지 SDK 영구 인터페이스 계층과 함께 통합된다. 즉, SDK 영구 인터페이스 계층은 컴파일 도중에 애플리케이션에 정적으로 연결되어 이후 공개되고, SDK 동적 구현 계층은 애플리케이션이 실행되는 동안 동적으로 애플리케이션에 로딩된다. SDK가 업그레이드되어야 하는 경우, 오로지 SDK 동적 구현 계층이 수정된다. 애플리케이션 자체는 변경될 필요가 없다. 따라서, 무선 애플리케이션은 무선 애플리케이션 자체를 갱신하는 것이 요구되지 않고, 따라서 사용자가 개선된 경험을 갖게 한다. 덧붙여, 무선 애플리케이션 개발자는 애플리케이션의 추가적인 개발 및 유지보수를 수행하는 것을 필요로 하지 않고, 따라서 애플리케이션의 공개 비용들뿐만 아니라 애플리케이션의 개발 및 유지보수 비용들을 줄인다.
일부 실시예들에 있어서, 동적 등급 라이브러리 로딩 메커니즘은 SDK의 영구 인터페이스 계층(거의 변하지 않는)과 SDK의 동적 구현 계층(갱신을 정기적으로 필요로 하는)을 분리한다. 오로지 영구 인터페이스 계층이 연결되어 무선 클라이언트 애플리케이션 내에서 패키징되고, 동적 구현 계층은 동적 등급 라이브러리의 로딩 및 적용을 통해 실행-시간 도중에 묶이고, 따라서 무선 클라이언트의 무선 애플리케이션이 SDK와 함께 업그레이드되어야 하는 상황들의 수는 감소된다. 기본 추상 인터페이스 계층(즉, SDK의 영구 인터페이스 계층)이 변화하지 않는 한, 무선 애플리케이션은 사용자에 투명한 실행 동안 자동적으로 업그레이드될 수 있다.
도 6은 무선 애플리케이션 구현 처리의 일 실시예의 흐름도이다. 처리(600)는 도 8의 클라이언트(810)에 의해 구현될 수 있고, 다음을 포함한다:
610에서, 클라이언트는 통합된 SDK의 영구 인터페이스 계층과 함께 통합된 무선 애플리케이션의 데이터 패키지를 획득한다.
SDK는 영구 인터페이스 계층과 동적 구현 계층을 포함한다. 영구 인터페이스 계층은 무선 애플리케이션에 의해 적용 가능한 인터페이스 프로토콜을 포함한다. 본 출원에서 개시된 처리들은 무선 애플리케이션에 국한되지 않고, 다른 애플리케이션들에도 적용될 수 있다. 영구 인터페이스 계층은 무선 애플리케이션 내에 통합된다. 동적 구현 계층은 인터페이스 구현을 포함한다. 인터페이스 구현은 영구 인터페이스 계층의 인터페이스 프로토콜에 대응하고, 인터페이스 프로토콜에 의해 적용 가능하다. 동적 인터페이스 계층은 서버상에 설치된다. SDK의 분할은 영구 인터페이스 계층으로서 SDK 내에서 인터페이스 프로토콜의 캡슐화, 및 동적 구현 계층으로서 SDK 내에서 인터페이스 구현의 캡슐화를 포함한다. 일부 실시예들에 있어서, SDK는 반영 메커니즘을 사용하여 분할된다.
일부 실시예들에 있어서, 무선 클라이언트는 먼저 SDK의 영구 인터페이스 계층과 함께 통합된 무선 애플리케이션의 데이터 패키지를 획득한다.
620에서, 클라이언트는 데이터 패키지를 사용하여 무선 애플리케이션을 구동시킨다.
일부 실시예들에 있어서, 무선 클라이언트는 상황에 따라 데이터 패키지를 사용하여 무선 애플리케이션을 구동시킨다.
예컨대, 무선 애플리케이션이 또한 동적 구현 계층의 원래의 버전과 통합되는 경우, 무선 애플리케이션은 영구 인터페이스 계층 내의 인터페이스 프로토콜에 의해 규정된 인터페이스를 사용하여 동적 구현 계층의 원래의 버전의 인터페이스 구현을 적용하고, 무선 애플리케이션은 인터페이스 구현을 위한 등급 라이브러리를 동적으로 로딩한다. 동적 구현 계층의 원래의 버전이 무선 애플리케이션 내에서 통합되지 않은 경우, 무선 애플리케이션은 획득 요청을 서버에 송신한다. 획득 요청은 서버로부터 동적 구현 계층의 인터페이스 구현의 획득을 요청한다. 서버가 동적 구현 계층의 인터페이스 구현을 클라이언트에 송신한 이후, 무선 애플리케이션은 서버에 의해 송신된 동적 구현 계층의 인터페이스 구현을 수신한다. 덧붙여, 무선 애플리케이션은 영구 인터페이스 계층 내의 인터페이스 프로토콜에 의해 규정된 인터페이스를 사용하여 서버로부터 획득된 인터페이스 구현을 적용하고, 인터페이스 구현을 위한 등급 라이브러리를 동적으로 로딩한다.
일부 실시예들에 있어서, 무선 애플리케이션의 데이터 패키지가 무선 애플리케이션을 실행하기 위하여 사용된 후, 즉 인터페이스 구현을 위한 등급 라이브러리가 동적으로 로딩된 후, 무선 애플리케이션은 조회 요청을 서버에 송신한다. 조회 요청은 영구 인터페이스 계층, 동적 구현 계층, 또는 이들의 조합의 갱신된 버전이 서버상에 존재하는지를 조회한다. 갱신된 버전이 서버상에 존재하는 경우, 무선 클라이언트는 서버에 의해 다시 송신된 영구 인터페이스 계층, 동적 구현 계층, 또는 이들의 조합의 갱신된 버전을 수신하고, 영구 인터페이스 계층, 동적 구현 계층, 또는 이들의 조합의 갱신된 버전이 갱신된다.
일부 실시예들에 있어서, SDK와 함께 통합된 무선 애플리케이션을 갖는 무선 클라이언트는 무선 애플리케이션 자체(즉, SDK 이외의 부분)를 갱신할 필요가 없다. 대신에, 무선 클라이언트는 단순히 무선 애플리케이션 내에 통합된 SDK를 갱신한다. 이러한 갱신 처리는 무선 클라이언트의 무선 애플리케이션이 SDK와 함께 업그레이드되어야 하는 상황들의 수를 줄이고, 무선 애플리케이션 사용자들의 사용 자 경험을 강화한다.
무선 애플리케이션 구현 처리가 위의 처리 중 적어도 하나에서 무선 애플리케이션 공개 처리에 대응함을 주목해야 한다. 따라서, 위의 처리 중 적어도 하나의 세부사항들은 간결함을 위해 생략된다.
도 7은 무선 애플리케이션 공개 디바이스의 일 실시예의 구조 블록도이다. 디바이스(700)는 도 8의 서버(820) 내에서 구현될 수 있다. 디바이스(700)는 통합 모듈(710), 공개 모듈(720) 및 갱신 모듈(750)을 포함한다.
통합 모듈(710)은 SDK의 영구 인터페이스 계층을 무선 애플리케이션에 통합한다. SDK는 영구 인터페이스 계층과 동적 구현 계층을 포함한다. 영구 인터페이스 계층은 무선 애플리케이션에 의해 적용될 인터페이스 프로토콜을 포함하고, 동적 구현 계층은 인터페이스 구현을 포함한다. 동적 구현 계층의 인터페이스 구현은 영구 인터페이스 계층의 인터페이스 프로토콜에 대응한다. 영구 인터페이스 계층의 인터페이스 프로토콜은 무선 클라이언트 내의 무선 애플리케이션이 동적 구현 계층 내의 인터페이스 구현을 적용하도록 야기한다.
공개 모듈(720)은 통합된 무선 애플리케이션을 공개하고, SDK의 동적 구현 계층을 서버상에 설치한다. 무선 애플리케이션이 공개된 후, 무선 클라이언트는, 동적 구현 계층의 인터페이스 구현을 적용하기 위하여, 영구 인터페이스 계층 내의 인터페이스 프로토콜에 의해 규정된 인터페이스를 사용하여 공개된 무선 애플리케이션을 다운로드 및 사용할 수 있다.
일부 실시예들에 있어서, 무선 애플리케이션 공개 디바이스(700)는 분할 모듈(730)을 더 포함한다. 분할 모듈(730)은 통합 모듈(710)이 SDK의 영구 인터페이스 계층을 무선 애플리케이션에 통합하기 이전에 SDK를 분할하여, SDK 내의 인터페이스 프로토콜을 영구 인터페이스 계층으로 캡슐화하고, SDK 내의 인터페이스 구현을 동적 구현 계층으로 캡슐화한다. 일부 실시예들에 있어서, SDK는 반영 메커니즘에 의해 분할된다.
일부 실시예들에 있어서, 무선 애플리케이션 공개 디바이스(700)는 송신 모듈(740)을 더 포함한다. 송신 모듈(740)은, 공개 모듈(720)이 통합된 무선 애플리케이션을 공개하고 SDK의 동적 구현 계층을 서버상에 설치한 후, 무선 애플리케이션의 무선 클라이언트를 사용하여 송신된 획득 요청을 획득한다. 획득 요청은 서버로부터 동적 구현 계층의 인터페이스 구현의 획득의 요청을 위해 사용된다. 획득 요청은 동적 구현 계층의 인터페이스 구현을 서버로부터 무선 클라이언트로 송신하기 위한 기초로서 사용되고, 영구 인터페이스 계층 내의 인터페이스 프로토콜은 무선 클라이언트 내의 무선 애플리케이션이 서버로부터 획득된 인터페이스 구현을 적용하고, 인터페이스 구현을 위한 등급 라이브러리를 동적으로 로딩하도록 야기한다. 일부 실시예들에 있어서, 무선 클라이언트 내의 무선 애플리케이션은 영구 인터페이스 계층 내의 인터페이스 프로토콜에 의해 규정된 인터페이스를 통해 적용된다.
일부 실시예들에 있어서, 통합 모듈(710)은 또한 SDK의 영구 인터페이스 계층의 무선 애플리케이션으로의 통합과 다른 시간에, 동적 구현 계층의 원래의 버전을 무선 애플리케이션에 통합한다. 일부 실시예들에 있어서, 통합 모듈(710)은, SDK의 영구 인터페이스 계층의 무선 애플리케이션으로의 통합의 이전 시간에, 동적 구현 계층의 원래의 버전을 무선 애플리케이션에 통합한다. 일부 실시예들에 있어서, 통합 모듈(710)은, SDK의 영구 인터페이스 계층의 무선 애플리케이션으로의 통합의 이후 시간에, 동적 구현 계층의 원래의 버전을 무선 애플리케이션에 통합한다. 공개 모듈(720)은 SDK의 영구 인터페이스 계층의 원래의 버전과 동적 구현 계층의 원래의 버전을 통합한 통합된 무선 애플리케이션을 공개하여, 무선 애플리케이션이 다운로드를 위해 사용 가능하게 한다. 공개 모듈(720)은, 무선 클라이언트의 무선 애플리케이션이, 영구 인터페이스 계층 내의 인터페이스 프로토콜에 의해 규정된 인터페이스를 통해 동적 구현 계층의 원래의 버전의 인터페이스 구현을 적용하고, 인터페이스 구현을 위한 등급 라이브러리를 동적으로 로딩하고, SDK의 동적 구현 계층을 서버상에 설치하도록 야기한다. 공개 모듈(720)은 통합된 무선 애플리케이션을 다운로딩 및 사용을 위해 무선 클라이언트들에 사용 가능하게 한다.
일부 실시예들에 있어서, 공개 모듈(720)은 또한, 송신 모듈(740)이 서버가 동적 구현 계층의 인터페이스 구현을 무선 클라이언트에 송신하도록 야기한 후, 무선 클라이언트에 의해 송신된 조회 요청을 수신한다. 조회 요청은 서버가 영구 인터페이스 계층, 동적 구현 계층 또는 이들의 조합의 갱신된 버전을 갖는지를 조회하기 위하여 사용되고, 서버가 영구 인터페이스 계층, 동적 구현 계층 또는 이들의 조합의 갱신된 버전을 갖는 것을 확인하고, 영구 인터페이스 계층, 동적 구현 계층 또는 이들의 조합의 갱신된 버전을 서버로부터 무선 클라이언트에 송신한다. 갱신된 버전은, 무선 클라이언트의 무선 애플리케이션의 영구 인터페이스 계층, 동적 구현 계층 또는 이들의 조합을 갱신하기 위하여 무선 클라이언트에 의해 사용된다.
갱신 모듈(750)은, 공개 모듈(720)이 SDK 영구 인터페이스 계층 및 동적 구현 계층의 원래의 버전과 함께 통합된 무선 애플리케이션을 공개하고, 다운로딩 및 사용을 위해 무선 애플리케이션을 무선 클라이언트들에 사용 가능하게 한 후, 무선 클라이언트에 의해 송신된 조회 요청을 수신하고, 서버가 영구 인터페이스 계층, 동적 구현 계층 또는 이들의 조합의 갱신된 버전을 갖는 것을 확인하고, 영구 인터페이스 계층, 동적 구현 계층 또는 이들의 조합의 갱신된 버전을 서버로부터 무선 클라이언트에 송신하여, 무선 클라이언트가 무선 클라이언트의 무선 애플리케이션의 영구 인터페이스 계층, 동적 구현 계층 또는 이들의 조합을 갱신하게 된다.
일부 실시예들에 있어서, 무선 애플리케이션 공개 디바이스(700)는 서버상에 설치된다.
무선 애플리케이션 공개 디바이스(700)는 위의 대응하는 무선 애플리케이션 공개 처리들 중 적어도 하나를 구현하기 위하여 사용된다. 더욱이, 무선 애플리케이션 공개 디바이스(700)는 위의 대응하는 처리들의 이점들을 갖는다. 위의 처리들의 세부사항들은 간결함을 위해 생략된다.
도 8은 무선 애플리케이션 공개 시스템의 일 실시예의 구조 블록도이다. 시스템(800)은 무선 클라이언트(810) 및 SDK 업그레이드 서버(820)를 포함한다. 무선 클라이언트(810)는 네트워크(830)를 통해 SDK 업그레이드 서버(820)에 연결된다.
SDK 업그레이드 서버(820)는 무선 애플리케이션 공개 디바이스를 포함한다. 예컨대, 서버(820)는 도 7의 무선 애플리케이션 공개 디바이스(700)를 포함한다.
도 9는 무선 애플리케이션 공개 시스템을 사용하여 업그레이드되는 SDK의 도면이다. 시스템(900)은 무선 클라이언트(910)와 SDK 업그레이드 서버(920)를 포함한다. 무선 클라이언트(910)는 도 8의 무선 클라이언트(810)에 대응한다. SDK 업그레이드 서버(920)는 도 8의 SDK 업그레이드 서버(820)에 대응한다.
일부 실시예들에 있어서, SDK 업그레이드 서버(920)가 SDK 영구 인터페이스 계층(740)을 무선 클라이언트(910) 상에 로딩된 무선 애플리케이션(930)에 통합하는 경우, SDK 영구 인터페이스 계층(940)은 동적 인터페이스 로딩 모듈(950), 자동 검출/업그레이딩 모듈(960), 및 다운로드 관리 모듈(970)을 포함한다. 동적 인터페이스 로딩 모듈(950)은 SDK 또는 무선 애플리케이션에 의해 제공된 기능들을 완료하기 위하여 무선 애플리케이션의 실행 도중에 동적 구현 계층을 위한 등급 라이브러리를 동적으로 로딩한다. 자동 검출/업그레이딩 모듈(960)은 SDK 초기화 동안 SDK 업그레이드 서버(920)상에서 영구 인터페이스 계층의 현재의 버전과 동적 구현 계층 버전의 가장 최근 버전을 비교하여, 실행시간 갱신 동작을 수행할지의 여부를 결정한다. 실행시간 갱신 동작이 수행되어야 하는 경우, 다운로드 관리 모듈(970)은 SDK 업그레이드 서버(920)로부터 영구 인터페이스 계층, 동적 구현 계층 또는 이들 조합의 가장 최근 버전의 데이터 패키지를 다운로드하여, 업그레이드를 수행한다.
무선 클라이언트(910)는 SDK 업그레이드 서버(920)로부터 통합된 무선 애플리케이션을 다운로드하고, 통합된 무선 애플리케이션(930)을 설치하여 사용한다. 일부 실시예들에 있어서, 무선 클라이언트(910)는, 무선 애플리케이션의 설치 또는 실행 동안, SDK 업그레이드 서버(920)로부터 SDK 동적 구현 계층(980)의 인터페이스 구현을 획득하기 위하여 무선 애플리케이션의 SDK 영구 인터페이스 계층(940) 내의 동적 인터페이스 로딩 모듈(950)을 사용하고, 인터페이스 구현을 위한 등급 라이브러리를 동적으로 로딩하여 적용한다. 이후, 무선 클라이언트(910)는 무선 클라이언트(910)가 대응하는 갱신된 버전을 갖는지를 조회하는 SDK 업그레이드 서버(920)에 대한 주기적 또는 임시 조회들을 위해 자동 검출/업그레이딩 모듈(960)을 사용할 수 있다. 무선 클라이언트(910)가 대응하는 갱신된 버전을 갖는 경우, 무선 클라이언트(910)는 무선 클라이언트(910)의 SDK 영구 인터페이스 계층, 동적 구현 계층 또는 이들의 조합을 갱신하기 위하여 다운로드 관리 모듈(970)을 사용하여 SDK 업그레이드 서버(920)로부터 대응하는 갱신된 버전을 다운로드한다.
일부 실시예들에 있어서, SDK 동적 구현 계층(980)은 인터페이스 구현을 갱신하기 위하여 SDK 업그레이드 서버(920)상에 설치된다. 덧붙여, SDK 업그레이드 서버(920)는 또한 SDK 영구 인터페이스 계층(940)을 갱신한다. 단순화를 위해 SDK 동적 구현 계층(980)은 단독으로 도시됨을 주목해야 한다. 일부 실시예들에 있어서, SDK 동적 구현 계층(980)의 업그레이드는 별도의 서버를 사용한다. 일부 실시예들에 있어서, SDK 동적 구현 계층(980)의 업그레이드는 또한 SDK 영구 인터페이스 계층(940)을 갱신할 책임이 있는 서버, 즉 복수의 기능 유닛들을 갱신하는 하나의 서버상에 설치된다.
통합된 SDK 영구 인터페이스 계층(940)을 갖는 무선 애플리케이션(930)은 무선 클라이언트(910)상에 설치된다. 웹 애플리케이션(930)의 실행 동안, 웹 애플리케이션(930)은 동적 인터페이스 로딩 모듈(950)을 사용하여 동적 구현 계층(980)을 위한 등급 라이브러리를 동적으로 로딩하고, 이에 의해 광고를 로딩하는 것과 같은, SDK 또는 애플리케이션이 제공하는 기능들을 완료한다. 무선 애플리케이션(930)은, SDK 업그레이드 서버(920)가 SDK 동적 구현 계층(980), 영구 인터페이스 계층(940) 또는 이들의 조합을 갱신해야 하는지를 결정하기 위하여 자동 검출/업그레이딩 모듈(960)을 사용하여 주기적으로 또는 임시로 SDK 업그레이드 서버(920)를 조회한다. SDK 초기화 동안, 자동 검출/업그레이딩 모듈(960)은 SDK 동적 구현 계층(980), 영구 인터페이스 계층(940) 또는 이들의 조합의 현재의 버전을 SDK 업그레이드 서버(920)의 가장 최근의 버전과 비교하여, 갱신 동작을 수행할지의 여부를 결정한다. 일부 실시예들에 있어서, SDK 초기화 동안, 자동 검출/업그레이딩 모듈(960)은 국부적인 SDK 동적 구현 계층의 데이터 패키지의 현재 버전의 숫자를 획득한다. 전형적으로, 국부적인 SDK 동적 구현 계층의 데이터 패키지의 현재 버전의 숫자는 하나의 숫자이다. 서버는 현재 서버상에 있는 SDK 동적 구현 계층의 데이터 패키지의 가장 최근의 버전을 다시 클라이언트에 송신한다. 서버의 버전 숫자가 클라이언트 SDK의 현재의 버전 숫자와 일치하지 않는 경우, 이는 새로운 버전이 존재하여 갱신이 수행될 수 있음을 의미한다. 덧붙여, SDK 영구 인터페이스 계층(940)이 상대적으로 안정적이라 할지라도, SDK 영구 인터페이스 계층(940)은 업그레이드될 수 있다. 그러므로, 영구 인터페이스 계층의 버전은 SDK 업그레이드 서버(920)로부터 대응하는 동적 등급 라이브러리 버전이 다운로드되는지의 여부를 결정하기 위한 기초로서 사용된다. SDK 업그레이드 서버(920)는 가장 최근의 버전에 대하여 문의하는 무선 클라이언트(910)로부터 요청에 응답하고, SDK 업그레이드 서버(920)는 가장 최근의 버전 숫자 및 대응하는 버전을 위한 패키지의 다운로드 어드레스를 다시 송신한다. 이후, 다운로드 관리 모듈(970)은 가장 최근에 갱신된 동적 등급 라이브러리 구현 패키지(영구 인터페이스 계층의 데이터 패키지와 동적 구현 계층의 데이터 패키지를 포함)를 SDK 업그레이드 서버(920)로부터 다운로드하여 갱신을 수행한다.
기술된 시스템(900)은 자체-광고하는 SDK와 SDK들을 광고하는 제 3 당사자를 사용하고, 상대적으로 영구 인터페이스 구현 광고를 향한 로직을 포함하는 SDK들을 오로지 공개하여, 무선 애플리케이션 개발자들이 서버들 상에서 무선 애플리케이션들과 함께 통합되는 광고 SDK들을 구성하는 것을 허용한다. 따라서, 무선 애플리케이션이 구동되는 경우, 무선 클라이언트는 SDK가 통합한 등급 라이브러리의 가장 최근 버전을 서버로부터 동적으로 획득하고, SDK가 통합한 등급 라이브러리의 가장 최근 버전을 로딩하여 실행한다. 따라서, 광고 SDK를 무선 애플리케이션과 통합한 이후 빈번한 갱신의 필요성은 제거된다.
시스템(900)은 무선 광고 SDK 업그레이드에 유용할 뿐만 아니라, 무선 클라이언트 광고를 최적화하기 위하여 복수의 광고 SDK들을 결합하는 제휴형 SDK들을 갱신하고 업그레이드하는데 적합하다. 무선 애플리케이션 자체가 SDK를 사용하는 경우, 무선 애플리케이션은 또한 무선 애플리케이션 자체를 갱신하기 위해 및 기능 업그레이드를 위해 사용된다.
시스템(900)은 다음의 이점들을 포함한다:
(1) 무선 애플리케이션은 갱신될 필요 없이 광고들을 획득하고 등록하는 새로운 성능들을 획득한다.
(2) 무선 애플리케이션은 새로운 광고 SDK와 함께 통합되고, 또한 이미 통합된 SDK의 버전을 갱신하고, 두 경우 모두 무선 애플리케이션을 갱신할 필요는 없다.
(3) 서버상의 구성을 통해, 광고에 대한 클라이언트가 통합한 무선 광고 SDK들의 비율은 증가 또는 감소하는 방식으로 변경될 수 있다.
(4) 무선 애플리케이션 자체는 또한 이러한 해결책을 사용하여 등급 라이브러리들의 실행시간 다운로딩 및 애플리케이션 기능들의 갱신을 달성한다. 따라서, 다운로드들, 설치들, 및 사용자가 무선 애플리케이션을 갱신할 때 다른 동작들을 감소시킨다.
도 10은 무선 애플리케이션 구현 디바이스의 일 실시예의 구조 블록도이다. 디바이스(1000)는 획득 모듈(1010) 및 구현 모듈(1020)을 포함한다. 무선 애플리케이션 구현 디바이스(1000)는 도 8의 무선 클라이언트(810)상에 설치될 수 있다.
획득 모듈(1010)은 SDK 영구 인터페이스 계층과 함께 통합된 무선 애플리케이션의 데이터 패키지를 획득한다. 구현 모듈(1020)은 무선 애플리케이션을 구동하기 위해 무선 애플리케이션의 데이터 패키지를 사용한다. SDK는 영구 인터페이스 계층과 동적 구현 계층을 포함한다. 영구 인터페이스 계층은 무선 애플리케이션 내에서 통합되고, 무선 애플리케이션에 의해 적용될 인터페이스 프로토콜을 포함한다. 동적 구현 계층은 서버상에 설치되고, 인터페이스 프로토콜에 대응하는 인터페이스 구현을 포함한다.
일부 실시예들에 있어서, 구현 모듈(1020)은 획득 요청을 서버에 송신한다. 획득 요청은 서버로부터 동적 구현 계층의 인터페이스 구현의 획득을 요청한다. 무선 애플리케이션은 서버에 의해 다시 송신된 동적 구현 계층의 인터페이스 구현을 수신하고, 무선 애플리케이션은 서버로부터 획득된 인터페이스 구현을 적용하기 위하여 영구 인터페이스 계층 내의 인터페이스 프로토콜에 의해 규정된 인터페이스를 사용한다. 무선 애플리케이션은 인터페이스 구현을 위해 등급 라이브러리를 동적으로 로딩한다.
일부 실시예들에 있어서, 무선 애플리케이션은 또한 동적 구현 계층의 원래의 버전과 함께 통합된다. 이 경우, 구현 모듈(1020)은 또한, 영구 인터페이스 계층 내의 인터페이스 프로토콜에 의해 규정된 인터페이스를 사용하여 동적 구현 계층의 원래의 버전의 인터페이스 구현을 적용하고, 인터페이스 구현을 위한 등급 라이브러리를 동적으로 로딩한다.
일부 실시예들에 있어서, 무선 애플리케이션 구현 디바이스(1000)는 갱신 모듈(1030)을 더 포함한다. 갱신 모듈(1030)은, 구현 모듈(1020)이 인터페이스 구현을 위한 등급 라이브러리를 동적으로 로딩한 후, 조회 요청을 서버에 송신한다. 조회 요청은 서버가 영구 인터페이스 계층, 동적 구현 계층, 또는 이들의 조합의 갱신된 버전을 갖는지를 조회하고, 서버가 다시 송신한 영구 인터페이스 계층, 동적 구현 계층, 또는 이들의 조합의 갱신된 버전을 수신하고, 갱신된 버전을 사용하여, 무선 애플리케이션의 영구 인터페이스 계층, 동적 구현 계층, 또는 이들의 조합을 갱신한다.
무선 애플리케이션 디바이스는 위의 무선 애플리케이션 구현 처리들 중 적어도 하나를 구현하고, 무선 애플리케이션 구현 처리들의 유익한 결과들을 갖는다.
본 출원은 SDK들을 발췌하고 상대적으로 영구 인터페이스들을 향한 방향들을 갖는 SDK들을 오로지 공개하여, 무선 애플리케이션 개발자들이 빈번하게 갱신되는 SDK들을 서버상에서 구성하고 갱신하는 것을 허용한다. 따라서, 무선 애플리케이션이 구동중일 때, 무선 애플리케이션은 이러한 구성을 서버로부터 SDK가 통합한 등급 라이브러리의 가장 최근 버전을 동적으로 획득하기 위한 기초로서 사용하고, 가장 최근 버전을 로딩하여 실행한다. 등급 라이브러리들을 동적으로 로딩함으로써, 현재 SDK들과 통합되는 이들 무선 애플리케이션들은 새로운 기능들을 획득한다. 본 출원은 안드로이드 플랫폼들 상에서 구동중인 자바 개발 무선 애플리케이션들을 포함하여 많은 유형들의 운영 플랫폼들에 대한 무선 애플리케이션의 공개 및 업그레이드에 적합하다. 예들은 통합된 게임 엔진 패키지들을 갖는 게임들을 개발하는 것 또는 프로그램 배포를 컴파일하는 것을 포함하고, 통합된 방문 카운팅 및 사용자 추적 패키지를 갖는 통계들을 사용한다. 그러나, 본 출원은 위의 예들에 국한되지 않는다. 본 출원의 무선 애플리케이션 공개 및 업그레이딩 해결책들은 다른 유형들의 상황들, 예컨대 C로 개발된 무선 애플리케이션들에도 적용될 수 있다.
위에서 기술된 유닛들은 소프트웨어 구성요소들을 실행하는 하나 이상의 범용 프로세서들로서, 특정 기능들을 수행하도록 설계된 프로그램 가능한 로직 디바이스들 및/또는 주문형 통합 회로들 또는 이들의 조합과 같은 하드웨어로서 구현될 수 있다. 일부 실시예들에 있어서, 유닛들은, 컴퓨터 디바이스(퍼스널 컴퓨터들, 서버들, 네트워크 장비, 등과 같은)가 본 발명의 실시예들에서 기술된 방법들을 구현하게 하는 다수의 명령들을 포함하는, 비휘발성 저장 매체(광 디스크, 플래시 저장 디바이스, 모바일 하드 디스크, 등과 같은)에 저장될 수 있는 소프트웨어 제품들의 형태로 구현될 수 있다. 이러한 유닛들은 단일 디바이스 상에서 구현될 수 있거나, 다수의 디바이스들을 통해 분산될 수 있다. 이러한 유닛들의 기능들은 서로 병합될 수 있거나, 추가로 다수의 하위-유닛들로 분할될 수 있다.
본 명세서에서 개시된 실시예들의 견지에서 기술된 방법들 또는 알고리즘 단계들은 하드웨어, 프로세서 실행 소프트웨어 모듈들, 또는 이들의 조합들을 사용하여 구현될 수 있다. 소프트웨어 모듈들은 랜덤-액세스 메모리(RAM), 메모리, 판독 전용 메모리(ROM), 전기적으로 프로그램 가능한 ROM, 전기적으로 소거 프로그램 가능한 ROM, 레지스터들, 하드 드라이브들, 이동 디스크들, CD-ROM, 또는 본 기술 분야에서 알려진 임의의 다른 형태의 저장 매체에 설치될 수 있다.
상술한 실시예들이 이해의 명확성을 위해 일부 상세하게 기술되었지만, 본 발명은 제공된 이러한 세부사항들에 국한되지 않는다. 본 발명을 구현하는 많은 대안적인 방식들이 존재한다. 개시된 실시예들은 예시적이고, 비제한적이다.

Claims (15)

  1. 무선 애플리케이션을 공개하는 방법에 있어서,
    소프트웨어 개발 키트(SDK)의 영구 인터페이스 계층을 무선 애플리케이션에 통합하는 단계로서, 상기 SDK는 상기 영구 인터페이스 계층과 동적 구현 계층을 포함하고, 상기 영구 인터페이스 계층은 상기 무선 애플리케이션에 의해 적용될 인터페이스 프로토콜을 포함하고, 상기 동적 구현 계층은 상기 인터페이스 프로토콜에 대응하는 인터페이스 구현을 포함하는, 상기 영구 인터페이스 계층을 무선 애플리케이션에 통합하는 단계;
    상기 통합된 무선 애플리케이션을 공개하는 단계; 및
    상기 SDK의 상기 동적 구현 계층을 서버상에 설치하는 단계를 포함하는 무선 애플리케이션을 공개하는 방법.
  2. 제 1 항에 있어서,
    상기 SDK의 상기 영구 인터페이스 계층을 상기 무선 애플리케이션에 통합하는 상기 단계 이전에, 상기 인터페이스 프로토콜을 상기 영구 인터페이스 계층으로 캡슐화하고 상기 인터페이스 구현을 상기 동적 구현 계층으로 캡슐화하기 위하여 상기 SDK를 분할하는 단계를 더 포함하는, 무선 애플리케이션을 공개하는 방법.
  3. 제 2 항에 있어서,
    상기 SDK를 분할하는 상기 단계는 반영 메커니즘(reflection mechanism)을 통해 구현되는, 무선 애플리케이션을 공개하는 방법.
  4. 제 1 항에 있어서,
    상기 통합된 무선 애플리케이션을 공개하는 상기 단계 및 상기 SDK의 상기 동적 구현 계층을 상기 서버상에 설치하는 상기 단계 이후에,
    상기 무선 애플리케이션을 사용하여 무선 클라이언트에 의해 송신된 획득 요청을 수신하는 단계로서, 상기 획득 요청은 상기 서버로부터 상기 동적 구현 계층의 상기 인터페이스 구현의 획득을 요청하기 위하여 사용되는, 상기 획득 요청을 수신하는 단계;
    상기 획득 요청에 응답하여, 상기 무선 클라이언트에 상기 동적 구현 계층의 상기 인터페이스 구현을 송신하는 단계로서, 상기 영구 인터페이스 계층 내의 상기 인터페이스 프로토콜에 의해 규정된 인터페이스는 상기 서버로부터 획득된 상기 인터페이스 구현을 적용하기 위하여 무선 클라이언트 내의 무선 애플리케이션에 의해 사용되는, 상기 인터페이스 구현을 송신하는 단계; 및
    상기 인터페이스 구현을 위한 등급 라이브러리를 동적으로 로딩하는 단계를 더 포함하는, 무선 애플리케이션을 공개하는 방법.
  5. 제 4 항에 있어서,
    상기 무선 클라이언트에 상기 동적 구현 계층의 상기 인터페이스 구현을 송신하는 상기 단계 이후:
    상기 무선 클라이언트에 의해 송신된 조회 요청을 수신하는 단계로서, 상기 조회 요청은 상기 서버가 상기 영구 인터페이스 계층, 상기 동적 구현 계층, 또는 이들의 조합의 갱신된 버전을 갖는지를 조회하기 위한 것인, 요청을 수신하는 단계; 및
    상기 서버가 상기 영구 인터페이스 계층, 상기 동적 구현 계층, 또는 이들의 조합의 갱신된 버전을 갖는 경우, 상기 서버로부터 상기 무선 클라이언트에 상기 갱신된 버전을 송신하는 단계로서, 상기 갱신된 버전은 상기 무선 클라이언트의 상기 무선 애플리케이션의 상기 영구 인터페이스 계층, 상기 동적 구현 계층, 또는 이들의 조합을 갱신하기 위하여 상기 무선 클라이언트에 의해 사용되는, 상기 갱신된 버전을 송신하는 단계를 더 포함하는, 무선 애플리케이션을 공개하는 방법.
  6. 제 1 항에 있어서,
    상기 SDK의 상기 영구 인터페이스 계층을 상기 무선 애플리케이션에 통합하는 상기 단계와 다른 시간에, 상기 동적 구현 계층의 원래의 버전을 상기 무선 애플리케이션에 통합하는 단계를 더 포함하고,
    상기 통합된 무선 애플리케이션을 공개하는 상기 단계는:
    상기 SDK 영구 인터페이스 계층 및 상기 동적 구현 계층의 원래의 버전과 함께 통합된 상기 무선 애플리케이션을 공개하여, 상기 무선 클라이언트에 의한 다운로딩을 위해 상기 무선 애플리케이션을 사용 가능하게 하는 단계로서, 상기 인터페이스는 상기 영구 인터페이스 계층 내의 상기 인터페이스 프로토콜에 의해 규정된 인터페이스를 통해 상기 동적 구현 계층의 상기 원래의 버전의 상기 인터페이스 구현을 적용하기 위하여 상기 무선 클라이언트의 상기 무선 애플리케이션에 의해 사용되는, 상기 무선 애플리케이션을 사용 가능하게 하는 단계; 및
    상기 인터페이스 구현을 위해 상기 등급 라이브러리를 동적으로 로딩하는 단계를 포함하는, 무선 애플리케이션을 공개하는 방법.
  7. 제 6 항에 있어서,
    상기 SDK 영구 인터페이스 계층 및 상기 동적 구현 계층의 원래의 버전과 함께 통합된 상기 무선 애플리케이션을 공개하여, 상기 무선 클라이언트에 의한 다운로딩을 위해 상기 무선 애플리케이션을 사용 가능하게 하는 상기 단계 이후:
    상기 무선 클라이언트에 의해 송신된 조회 요청을 수신하는 단계로서, 상기 조회 요청은 상기 서버가 상기 영구 인터페이스 계층, 상기 동적 구현 계층, 또는 이들의 조합의 갱신된 버전을 갖는지를 조회하기 위한 것인, 조회 요청을 수신하는 단계; 및
    상기 서버가 상기 영구 인터페이스 계층, 상기 동적 구현 계층, 또는 이들의 조합의 갱신된 버전을 갖는 경우, 상기 서버로부터 상기 무선 클라이언트에 상기 갱신된 버전을 송신하는 단계로서, 상기 갱신된 버전은 상기 영구 인터페이스 계층, 상기 동적 구현 계층, 또는 이들의 조합을 갱신하기 위하여 상기 무선 클라이언트에 의해 사용되는, 상기 갱신된 버전을 송신하는 단계를 더 포함하는, 무선 애플리케이션을 공개하는 방법.
  8. 무선 애플리케이션을 구현하는 방법에 있어서,
    소프트웨어 개발 키트(SDK)의 영구 인터페이스 계층과 함께 통합된 무선 애플리케이션의 데이터 패키지를 획득하는 단계; 및
    상기 무선 애플리케이션을 구동하기 위하여 상기 데이터 패키지를 사용하는 단계로서, 상기 SDK는 상기 영구 인터페이스 계층과 동적 구현 계층을 포함하고, 상기 영구 인터페이스 계층은 상기 무선 애플리케이션 내에 통합되며, 상기 무선 애플리케이션에 의해 적용될 인터페이스 프로토콜을 포함하고, 상기 동적 구현 계층은 서버상에 설치되며, 상기 무선 애플리케이션에 의해 구현될 인터페이스 구현을 포함하는, 상기 데이터 패키지를 사용하는 단계를 포함하는, 무선 애플리케이션을 구현하는 방법.
  9. 제 8 항에 있어서,
    상기 무선 애플리케이션을 구동하기 위하여 상기 데이터 패키지를 사용하는 상기 단계는:
    획득 요청을 상기 서버에 송신하는 단계로서, 상기 획득 요청은 상기 서버로부터 상기 동적 구현 계층의 상기 인터페이스 구현의 획득을 요청하기 위한 것인, 획득 요청을 상기 서버에 송신하는 단계;
    상기 서버에 의해 다시 송신된 상기 동적 구현 계층의 상기 인터페이스 구현을 수신하는 단계;
    상기 서버로부터 획득된 상기 인터페이스 구현을 적용하기 위하여 상기 영구 인터페이스 계층 내의 상기 인터페이스 프로토콜에 의해 규정된 상기 인터페이스를 사용하는 단계; 및
    상기 인터페이스 구현을 위해 등급 라이브러리를 동적으로 로딩하는 단계를 포함하는, 무선 애플리케이션을 구현하는 방법.
  10. 제 9 항에 있어서,
    상기 인터페이스 구현을 위해 상기 등급 라이브러리를 동적으로 로딩하는 상기 단계는:
    상기 서버에 조회 요청을 송신하는 단계로서, 상기 조회 요청은 상기 서버가 상기 영구 인터페이스 계층, 상기 동적 구현 계층, 또는 이들의 조합의 갱신된 버전을 갖는지를 조회하기 위한 것인, 조회 요청을 송신하는 단계;
    상기 서버에 의해 다시 송신된 상기 영구 인터페이스 계층, 상기 동적 구현 계층, 또는 이들의 조합의 갱신된 버전을 수신하는 단계; 및
    상기 무선 애플리케이션의 상기 영구 인터페이스 계층, 상기 동적 구현 계층, 또는 이들의 조합을 갱신하기 위하여 상기 갱신된 버전을 사용하는 단계를 포함하는, 무선 애플리케이션을 구현하는 방법.
  11. 제 8 항에 있어서,
    상기 무선 애플리케이션은 상기 동적 구현 계층의 상기 원래의 버전과 함께 통합되고;
    상기 무선 애플리케이션을 구동하기 위하여 상기 데이터 패키지를 사용하는 상기 단계는:
    상기 동적 구현 계층의 상기 원래의 버전의 상기 인터페이스 구현을 적용하기 위하여 상기 영구 인터페이스 계층 내의 상기 인터페이스 프로토콜에 의해 규정된 상기 인터페이스를 사용하는 단계; 및
    상기 인터페이스 구현을 위해 상기 등급 라이브러리를 동적으로 로딩하는 단계를 포함하는, 무선 애플리케이션을 구현하는 방법.
  12. 제 11 항에 있어서,
    상기 인터페이스 구현을 위해 상기 등급 라이브러리를 동적으로 로딩하는 상기 단계는:
    상기 서버에 조회 요청을 송신하는 단계로서, 상기 조회 요청은 상기 서버가 상기 영구 인터페이스 계층, 상기 동적 구현 계층, 또는 이들의 조합의 갱신된 버전을 갖는지를 조회하기 위한 것인, 조회 요청을 송신하는 단계;
    상기 서버에 의해 다시 송신된 상기 영구 인터페이스 계층, 상기 동적 구현 계층, 또는 이들의 조합의 상기 갱신된 버전을 수신하는 단계; 및
    상기 영구 인터페이스 계층, 상기 동적 구현 계층, 또는 이들의 조합을 갱신하기 위하여 상기 갱신된 버전을 사용하는 단계를 포함하는, 무선 애플리케이션을 구현하는 방법.
  13. 무선 애플리케이션 공개 디바이스에 있어서,
    적어도 하나의 프로세서로서,
    소프트웨어 개발 키트(SDK)의 영구 인터페이스 계층을 무선 애플리케이션에 통합하되, 상기 SDK는 상기 영구 인터페이스 계층과 동적 구현 계층을 포함하고, 상기 영구 인터페이스 계층은 상기 무선 애플리케이션에 의해 적용될 인터페이스 프로토콜을 포함하고, 상기 동적 구현 계층은 상기 인터페이스 프로토콜에 대응하는 인터페이스 구현을 포함하는, 상기 영구 인터페이스 계층을 무선 애플리케이션에 통합하고;
    상기 통합된 무선 애플리케이션을 공개하고;
    상기 SDK의 상기 동적 구현 계층을 서버상에 설치하도록 구성된, 적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서에 결합되고, 상기 적어도 하나의 프로세서에 명령들을 제공하도록 구성된 메모리를 포함하는, 무선 애플리케이션 공개 디바이스.
  14. 무선 애플리케이션 구현 디바이스에 있어서,
    적어도 하나의 프로세서로서,
    소프트웨어 개발 키트(SDK)의 영구 인터페이스 계층과 함께 통합된 무선 애플리케이션의 데이터 패키지를 획득하고;
    상기 무선 애플리케이션을 구동하기 위하여 상기 데이터 패키지를 사용하되, 상기 SDK는 상기 영구 인터페이스 계층과 동적 구현 계층을 포함하고, 상기 영구 인터페이스 계층은 상기 무선 애플리케이션 내에 통합되며, 상기 무선 애플리케이션에 의해 적용될 인터페이스 프로토콜을 포함하고, 상기 동적 구현 계층은 서버상에 설치되며, 상기 무선 애플리케이션에 의해 구현될 인터페이스 구현을 포함하는, 상기 데이터 패키지를 사용하도록, 구성된 적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서에 결합되고, 상기 적어도 하나의 프로세서에 명령들을 제공하도록 구성된 메모리를 포함하는, 무선 애플리케이션 구현 디바이스.
  15. 부유(float-out) 메시지들을 제어하기 위한 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 프로그램 제품은 비일시적 컴퓨터 판독 가능한 저장 매체에 구현되고, 상기 컴퓨터 프로그램 제품은:
    소프트웨어 개발 키트(SDK)의 영구 인터페이스 계층을 무선 애플리케이션에 통합하되, 상기 SDK는 상기 영구 인터페이스 계층과 동적 구현 계층을 포함하고, 상기 영구 인터페이스 계층은 상기 무선 애플리케이션에 의해 적용될 인터페이스 프로토콜을 포함하고, 상기 동적 구현 계층은 상기 인터페이스 프로토콜에 대응하는 인터페이스 구현을 포함하는, 상기 영구 인터페이스 계층을 무선 애플리케이션에 통합하고;
    상기 통합된 무선 애플리케이션을 공개하고;
    상기 SDK의 상기 동적 구현 계층을 서버상에 설치하기 위한 명령들을 포함하는, 컴퓨터 프로그램 제품.
KR1020147032130A 2012-06-08 2013-06-07 무선 애플리케이션을 공개 및 구현하기 위한 방법 및 디바이스 KR101651420B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN201210189767.4 2012-06-08
CN201210189767.4A CN103491111B (zh) 2012-06-08 2012-06-08 无线应用发布、实现方法与装置
US13/911,957 US9213559B2 (en) 2012-06-08 2013-06-06 Method and device for publishing and implementing wireless application
US13/911,957 2013-06-06
PCT/US2013/044683 WO2013185016A1 (en) 2012-06-08 2013-06-07 Method and device for publishing and implementing wireless application

Publications (2)

Publication Number Publication Date
KR20150013535A true KR20150013535A (ko) 2015-02-05
KR101651420B1 KR101651420B1 (ko) 2016-09-05

Family

ID=49716357

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147032130A KR101651420B1 (ko) 2012-06-08 2013-06-07 무선 애플리케이션을 공개 및 구현하기 위한 방법 및 디바이스

Country Status (7)

Country Link
US (2) US9213559B2 (ko)
EP (1) EP2859449A1 (ko)
JP (1) JP5992095B2 (ko)
KR (1) KR101651420B1 (ko)
CN (1) CN103491111B (ko)
TW (1) TWI536296B (ko)
WO (1) WO2013185016A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9262250B2 (en) 2011-12-12 2016-02-16 Crashlytics, Inc. System and method for data collection and analysis of information relating to mobile applications
US9703680B1 (en) 2011-12-12 2017-07-11 Google Inc. System and method for automatic software development kit configuration and distribution
US9087154B1 (en) * 2011-12-12 2015-07-21 Crashlytics, Inc. System and method for providing additional functionality to developer side application in an integrated development environment
US9483811B2 (en) 2014-01-06 2016-11-01 Microsoft Technology Licensing, Llc Division of processing between systems based on external factors
US9608876B2 (en) * 2014-01-06 2017-03-28 Microsoft Technology Licensing, Llc Dynamically adjusting brand and platform interface elements
US9501808B2 (en) 2014-01-06 2016-11-22 Microsoft Technology Licensing, Llc Division of processing between systems based on business constraints
US9772828B2 (en) * 2014-04-22 2017-09-26 Oracle International Corporation Structural identification of dynamically generated, pattern-instantiation, generated classes
US20160085513A1 (en) * 2014-09-19 2016-03-24 Microsoft Corporation Loading Code in Self-Contained Applications
US9519468B2 (en) * 2015-02-13 2016-12-13 Oracle International Corporation Modular co-versioning in a dynamically linked runtime environment
US20170147323A1 (en) * 2015-11-25 2017-05-25 Le Holding (Beijing) Co., Ltd. Method and electronic device for upgrading software development kit of an application
CN107103211B (zh) * 2016-02-19 2019-03-08 腾讯科技(深圳)有限公司 Sdk发送、应用发布、应用运行方法及装置
CN107483521A (zh) 2016-06-08 2017-12-15 阿里巴巴集团控股有限公司 一种信息展示方法、装置及系统
CN106557348A (zh) * 2016-11-25 2017-04-05 百度在线网络技术(北京)有限公司 视图展示方法和装置
US10795648B2 (en) 2017-11-30 2020-10-06 Google Llc Systems and methods of developments, testing, and distribution of applications in a computer network
CN109032693B (zh) * 2018-06-29 2021-09-24 北京金山安全软件有限公司 一种加载展示信息方法、装置、电子设备及可读存储介质
CN111124446A (zh) * 2018-11-01 2020-05-08 千寻位置网络有限公司 一种用于自动更新下位机的sdk制作方法
CN113050962B (zh) * 2019-12-27 2024-04-26 华为技术有限公司 移动服务升级方法、装置和终端
CN114528016A (zh) * 2020-10-28 2022-05-24 花瓣云科技有限公司 一种数据处理系统、方法、终端设备及服务器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040243668A1 (en) * 2003-05-30 2004-12-02 Microsoft Corporation Application programming interface for implementing directory service access using directory service markup language
US7536679B1 (en) * 2004-08-18 2009-05-19 Sun Microsystems, Inc. System and methods for test tool class inheritance
US20090217310A1 (en) * 2008-02-25 2009-08-27 Blue Tie, Inc. Methods for integrating and managing one or more features in an application and systems thereof
US20090300199A1 (en) * 2008-05-28 2009-12-03 Dell Products L.P. Methods and Media for a Protocol Abstraction Layer for Information Handling Systems

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6996832B2 (en) 2001-05-30 2006-02-07 Bea Systems, Inc. System and method for software component plug-in framework
CN100461109C (zh) * 2004-04-28 2009-02-11 富士通株式会社 语义任务计算
US7802230B1 (en) 2005-09-19 2010-09-21 Sap Ag Heterogeneous software integration systems and methods
US8402436B2 (en) 2008-10-27 2013-03-19 International Business Machines Corporation Cooperative unwrapping across intervening wrappers
US8250589B2 (en) * 2009-04-03 2012-08-21 Lsi Corporation Method for simplifying interfaces having dynamic libraries
US20100306728A1 (en) * 2009-04-17 2010-12-02 Raghu Ardeishar Coexistence of Multiple Verification Component types in a Hardware Verification Framework
US8863152B2 (en) 2009-07-13 2014-10-14 Hewlett-Packard Development Company, L.P. Communication bridge
CN102073512B (zh) * 2009-11-23 2014-07-16 阿里巴巴集团控股有限公司 一种java集群应用系统代码装载及升级装置和方法
US8352949B1 (en) 2009-12-30 2013-01-08 Sap Ag Communication between integrated device and mobile application client on mobile personal communication device
US8271031B2 (en) 2009-12-30 2012-09-18 Sap Ag Communication between integrated device and mobile application client on mobile personal communication device
US9424509B2 (en) 2011-03-09 2016-08-23 T-Mobile Usa, Inc. System for application personalization for a mobile device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040243668A1 (en) * 2003-05-30 2004-12-02 Microsoft Corporation Application programming interface for implementing directory service access using directory service markup language
US7536679B1 (en) * 2004-08-18 2009-05-19 Sun Microsystems, Inc. System and methods for test tool class inheritance
US20090217310A1 (en) * 2008-02-25 2009-08-27 Blue Tie, Inc. Methods for integrating and managing one or more features in an application and systems thereof
US20090300199A1 (en) * 2008-05-28 2009-12-03 Dell Products L.P. Methods and Media for a Protocol Abstraction Layer for Information Handling Systems

Also Published As

Publication number Publication date
US20130332943A1 (en) 2013-12-12
CN103491111A (zh) 2014-01-01
CN103491111B (zh) 2016-12-14
US9213559B2 (en) 2015-12-15
WO2013185016A1 (en) 2013-12-12
EP2859449A1 (en) 2015-04-15
JP2015519659A (ja) 2015-07-09
US9513891B2 (en) 2016-12-06
JP5992095B2 (ja) 2016-09-14
TW201351324A (zh) 2013-12-16
US20160132312A1 (en) 2016-05-12
TWI536296B (zh) 2016-06-01
KR101651420B1 (ko) 2016-09-05

Similar Documents

Publication Publication Date Title
KR101651420B1 (ko) 무선 애플리케이션을 공개 및 구현하기 위한 방법 및 디바이스
US20210349706A1 (en) Release lifecycle management system for multi-node application
US10007501B1 (en) Method of deploying applications rapidly based on customized android platform
US7954087B2 (en) Template integration
US8793676B2 (en) Version-resilient loader for custom code runtimes
US6938250B2 (en) Image-based software installation
US9710249B2 (en) Dynamic configuration of virtual appliances
US20070162892A1 (en) Template-based configuration architecture
US8667486B2 (en) Automatic provisioning of a software platform to a device ecosystem
JP2004038962A (ja) 影響のない方式でソフトウェアアプリケーションをインストールするシステムおよび方法
US20220357997A1 (en) Methods and apparatus to improve cloud management
CN112083968A (zh) 一种宿主中插件加载方法及装置
KR20140113685A (ko) 병행가능하고 신뢰성 있는 설치를 위한 설치 엔진 및 패키지 포맷
US20060041665A1 (en) Network services applications
US20100023955A1 (en) Method and system and apparatus for dynamic software environment
Struckmann vTorque: Introducing Virtualization Capabilities to Torque

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190808

Year of fee payment: 4