KR20150047453A - 소프트웨어 애플리케이션들의 크로스-플랫폼 개발을 위한 환경 및 방법 - Google Patents

소프트웨어 애플리케이션들의 크로스-플랫폼 개발을 위한 환경 및 방법 Download PDF

Info

Publication number
KR20150047453A
KR20150047453A KR1020147025170A KR20147025170A KR20150047453A KR 20150047453 A KR20150047453 A KR 20150047453A KR 1020147025170 A KR1020147025170 A KR 1020147025170A KR 20147025170 A KR20147025170 A KR 20147025170A KR 20150047453 A KR20150047453 A KR 20150047453A
Authority
KR
South Korea
Prior art keywords
computing device
files
file
implementations
content files
Prior art date
Application number
KR1020147025170A
Other languages
English (en)
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 KR20150047453A publication Critical patent/KR20150047453A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • 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/44536Selecting among different versions

Abstract

방법은 콘텐트 파일들을 획득하는 단계를 포함할 수 있으며, 상기 콘텐트 파일들은 하나 이상의 프리젠테이션 파일들을 포함하고, 여기에서 각각의 프리젠테이션 파일은 별개의 컴퓨팅 디바이스에 의해 런타임 시 해석될 때, (a) 기능 및 (b) 별개의 컴퓨팅 디바이스 상에서 실행하는 소프트웨어 애플리케이션의 사용자 인터페이스 중 적어도 하나를 제공하도록 구성되는 각각의 지시들을 포함한다. 방법은 별개의 컴퓨팅 디바이스에 콘텐트 파일들을 제공하는 단계를 포함할 수 있다. 콘텐트 파일들을 제공한 후, 방법은 적어도 제 1 프리젠테이션 파일에서의 변화를 식별하는 단계, 및 적어도 제 1 프리젠테이션 파일을 상기 별개의 컴퓨팅 디바이스에 제공하는 단계를 포함할 수 있으며, 소프트웨어 애플리케이션은 별개의 컴퓨팅 디바이스에 대한 소프트웨어 애플리케이션을 재-설치 또는 재-로딩하기 위한 요구 없이 (a) 기능 및 (b) 소프트웨어 애플리케이션의 사용자 인터페이스 중 적어도 하나로서 제 1 프리젠테이션 파일을 실행하도록 구성된다.

Description

소프트웨어 애플리케이션들의 크로스-플랫폼 개발을 위한 환경 및 방법{ENVIRONMENT AND METHOD FOR CROSS-PLATFORM DEVELOPMENT OF SOFTWARE APPLICATIONS}
관련 출원들
본 출원은 2012년 2월 7일에 출원된 "무선 컴퓨팅 디바이스들을 위한 소프트웨어의 개발을 위한 환경 및 방법"이라는 제목의 가 출원 번호 제 61/595,945호, 및 2012년 5월 3일에 출원된 "무선 컴퓨팅 디바이스들을 위한 소프트웨어의 개발을 위한 환경 및 방법"이라는 제목의, 미국 가 출원 번호 제 61/642,187호 양쪽 모두에 대한 우선권을 주장하는, 2012년 10월 22일에 출원된, "소프트웨어 애플리케이션들의 크로스-플랫폼 개발을 위한 환경 및 방법"이라는 제목의 미국 출원 제 13/657,149호에 대한 우선권을 주장하고, 그 각각의 콘텐트들은 전체적으로 여기에 참조로서 통합된다.
무선 컴퓨팅 디바이스들은, 몇몇 예들에서, 셀룰러 전화기들, 스마트 폰들, 개인 휴대용 정보 단말기들, 휴대용 멀티미디어 플레이어들, 및 태블릿 컴퓨터들을 포함할 수 있다. 소프트웨어 애플리케이션들은 무선 컴퓨팅 디바이스 상에서 구동하도록 다운로딩될 수 있다. 몇몇 구현들에서, 웹-기반 애플리케이션은 디바이스-특정, 플랫폼-특정, 또는 운영 체제-특정 소프트웨어 애플리케이션 다운로드들을 무선 컴퓨팅 디바이스들에 제공할 수 있다.
다양한 컴퓨팅 디바이스들로의 분배를 위한 소프트웨어 애플리케이션들을 개발하고 있을 때, 변화하는 플랫폼 능력들 및 프로그래밍 언어 호환성들(예를 들면, 오브젝티브-C, 자바, C# 등)은 개발자가 다수의 버전들의 동일한 소프트웨어 애플리케이션을 생성하게 할 수 있다. 예를 들면, 스마트폰들, 태블릿 컴퓨터들, 및 핸드헬드 게이밍 디바이스들과 같은 다양한 무선 디바이스들로의 분배를 위한 소프트웨어 애플리케이션을 개발하고 있을 때, 소프트웨어 프로그래머는 각각의 디바이스 제조사 및/또는 운영 체제 플랫폼에 대해, 및 종종, 단일 디바이스 제조사 및/또는 운영 체제 플랫폼에 걸쳐 다양한 플랫폼들에 대해, 상이한 버전을 생성할 필요가 있을 수 있다. 소프트웨어 개발자는 부가적으로 온라인(예를 들면, 브라우저-기반) 소프트웨어 애플리케이션으로서 분배를 위한 소프트웨어의 또 다른 버전을 개발할 수 있다.
특정한 컴퓨팅 디바이스 플랫폼들에 대해, 소프트웨어 개발 키트(SDK) 또는 통합 개발 환경(IDE)(예를 들면, 애플, 인크.에 의한 xCode™, 캐나다, 오타와의 이클립스 재단에 의한 이클립스, 마이크로소프트에 의한 비주얼 스튜디오®, 뉴욕, 아몽크의 인터내셔널 비즈니스 머신즈 코포레이션.(IBM)에 의한 웹스피어® 소프트웨어를 위한 합리적 응용 개발자 등)이 플랫폼-호환 가능한 소프트웨어 애플리케이션들의 개발을 위해 제조사에 의해 제공된다. 각각의 소프트웨어 개발 키트를 구매하고 각각의 소프트웨어 개발 키트의 능력들 및 기능들을 학습할 때 소비되는 비용 및 시간은 다수의 개발 플랫폼들에 걸쳐 프로비저닝 소프트웨어 애플리케이션들에서 개발자들에 대해 손실일 수 있다.
다수의 컴퓨팅 디바이스 플랫폼들 상에 배치를 준비할 수 있는 크로스-플랫폼 소프트웨어 애플리케이션을 개발하기 위해 툴들 및 기능을 소프트웨어 개발자에게 제공하는 개발 환경에 대한 요구가 있다.
몇몇 구현들에서, 본 개시는 컴퓨팅 디바이스들을 위한 소프트웨어의 개발을 위한 환경들 및 방법들에 관한 것일 수 있다. 몇몇 구현들에서, 개발 프로세스는 둘 이상의 컴퓨팅 디바이스 플랫폼들에 대한 배치를 위한 소프트웨어 애플리케이션의 크로스-플랫폼 개발을 포함할 수 있다. 컴퓨팅 디바이스 플랫폼은, 몇몇 예들에서, 디바이스 운영 체제(예를 들면, 워싱턴, 레드몬드의 마이크로소프트 코포레이션에 의한 Microsoft® 윈도우즈(Windows)®, 캘리포니아, 쿠퍼티노의 애플 인크..에 의한 Apple® MAC™ OS, 온타리오, 워털루의 모션 리미티드에서의 연구소에 의한 움직임에서의 연구(Research in Motion; RIM) 블랙베리® OS 등), 운영 체제 버전, 디바이스 애플리케이션 포맷(예를 들면, 애플 인크.에 의한 Apple® iOS™, 캘리포니아, 멘로 파크의 구글 인크.에 의한 안드로이드(Android)™, 마이크로소프트 코포레이션에 의한 윈도우즈® Phone, 캘리포니아, 팔로 알토의 휴렛-패커드 컴퍼니에 의한 Palm™webOS™, 아일랜드, 더블린의 액센츄어 피엘씨에 의한 심비안(Symbian)™, 한국, 서울의 삼성 전자에 의한 바다(Bada)™ 등), 및 디바이스 주변장치 구성(예를 들면, 몇몇 예들에서, 센서들, 스피커들, 마이크로폰들, 가상 및/또는 소형화된 키보드, 버튼들 및 다른 물리적 제어 입력들 등과 같은 입력 및 출력 디바이스들) 중 하나 이상과 같은 특정한 세트의 구성 파라미터들을 나타낼 수 있다.
여기에 설명된 바와 같이, 통합 클라우드 환경(integrated cloud environment; ICE)은, 몇몇 구현들에서, 둘 이상의 컴퓨팅 디바이스 플랫폼들 상에서 구동하도록 컴파일링될 수 있는 크로스-플랫폼 소프트웨어 애플리케이션을 개발하기 위한 인터페이스를 제공할 수 있다. 몇몇 구현들에서, 통합 클라우드 환경은 다수의 무선 컴퓨팅 디바이스 플랫폼들에 대한 소프트웨어 애플리케이션들을 설계, 구성, 컴파일, 검사, 및/또는 분배하기 위한 특징들을 포함할 수 있다. 몇몇 구현들에서, 통합 클라우드 환경은 부가적으로 웹-기반 애플리케이션들(예를 들면, 브라우저-기반 웹 애플리케이션들, 매사추세츠, 캠브리지의 페이스북, 인크.에 의한 페이스북®과 호환 가능한 애플리케이션들, 마이크로소프트에 의한 ASP.NET과 같은 서버-측 웹 애플리케이션들 등)에 대한 소프트웨어 애플리케이션들을 설계, 구성, 컴파일, 검사, 및/또는 분배하기 위한 특징들을 제공할 수 있다. 통합 클라우드 환경은, 몇몇 구현들에서, 로부터 제거되는 개발 환경을 개개의 소프트웨어 개발 키트들(SDK들)로부터 제거되는 개발 환경 또는 통합 개발 환경들(IDE들)(예를 들면, 애플, 인크.에 의한 xCode™, 캐나다, 오타와의 이클립스 재단에 의한 이클립스, 마이크로소프트에 의한 비주얼 스튜디오®, 뉴욕, 아몽크의 인터내셔널 비즈니스 머신즈 코포레이션.(IBM)에 의한 웹스피어® 소프트웨어를 위한 합리적 응용 개발자 등) 및/또는 무선 컴퓨팅 디바이스들 및 웹 애플리케이션들의 다양한 플랫폼들에 대한 소프트웨어 애플리케이션들을 개발하기 위해 통상적으로 사용된 프로그래밍 언어들(예를 들면, 오브젝티브-C, 자바, C# 등)을 개발자에게 제공할 수 있다. 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션들의 개발을 위한 통합 클라우드 환경은 크로스-플랫폼 소프트웨어 애플리케이션의 플랫폼-독립적 버전을 개발 및 시뮬레이팅하기 위한 로컬 개발 컴퓨팅 디바이스 상에 설치된 애플리케이션 개발자 인터페이스를 수반할 수 있다. 크로스-플랫폼 소프트웨어 애플리케이션들의 개발을 위한 통합 클라우드 환경은, 몇몇 구현들에서, 인터넷 브라우저 프로그램을 통해 개발자에게 제공된 애플리케이션 개발자 인터페이스를 수반할 수 있다. 애플리케이션 개발자 인터페이스는 예를 들면, 특정한 컴퓨팅 디바이스 플랫폼들을 향해 애플리케이션 개발을 위해 제공된 다양한 소프트웨어 개발 키트들 또는 통합 개발 환경들의 양태들을 사용하여, 플랫폼-특정 파일들을 갖고 플랫폼-독립적 개발 파일들을 컴파일링하기 위해 통합 클라우드 환경에 대한 통신 채널을 개발자에게 제공할 수 있다.
몇몇 구현들에서, 다양한 컴퓨팅 디바이스들을 위한 크로스-플랫폼 개발은 개발자가 몇몇 예들에서 하이퍼텍스트 마크업 언어(HTML)와 같은 마크-업 언어들, 자바스크립트와 같은 해석 언어들, 및 캐스케이딩 스타일 시트들(Cascading Style Sheets; CSS)과 같은 스타일 시트 언어들과 같은, 비-컴파일 리소스 파일들(예를 들면, 여기에 사용된 바와 같이, "프리젠테이션 파일들")을 통해 애플리케이션의 많은 행동을 정의하도록 허용하는 추상화 계층을 통해 인에이블될 수 있다. 프리젠테이션 파일들은, 예를 들면, 센서들, 제어들, 및 입력/출력 메커니즘들과 같은, 디바이스 주변 장치들과 상호 작용하기 위한 명령어들을 포함할 수 있다. 몇몇 구현들에서, 프리젠테이션 파일들은 또한 디바이스 또는 플랫폼-특정 애플리케이션 프로그래밍 인터페이스들(API들)과 같은 웹-기반 서비스들과 상호 작용하기 위한 명령어들을 포함할 수 있다. 몇몇 구현들에서, 프리젠테이션 파일들을 플랫폼-특정 무선 컴퓨팅 디바이스 명령어들로 변환하기 위한 추상화 계층이 메릴랜드, 포레스트 힐의 아파치 소프트웨어 재단에 의한 아파치 코도바(Apache Cordova) 플랫폼을 사용하여 개발될 수 있다.
프리젠테이션 파일들은, 몇몇 구현들에서, 사용자 및 컴퓨팅 디바이스 사이에서의 상호 작용들을 가능하게 하기 위해 컴퓨팅 디바이스 상에서 런-타임 시 해석될 수 있다. 몇몇 구현들에서, 프리젠테이션 파일들은 컴퓨팅 디바이스의 브라우저 엔진 특징에 의해 해석될 수 있다. 몇몇 구현들에서, 프리젠테이션 파일들은 컴퓨팅 디바이스 상에서 렌더링된 "윈도우리스(windowless)"(예를 들면, 브라우저 경계를 정의하지 않고, 전체 스크린 등) 웹-브라우저 인터페이스에서의 프리젠테이션을 위해 제공될 수 있다. 몇몇 구현들에서, 프리젠테이션 파일들은 프리젠테이션 파일들에 통합된 미디어 파일들로의 링크들을 통해 애플리케이션의 실행 동안 액세스되며 제공될 수 있는 오디오, 이미지, 및 비디오 파일들과 같은, 다수의 미디어 파일들과 조합될 수 있다. 미디어 파일들 및 프리젠테이션 파일들의 조합은, 몇몇 구현들에서, 크로스-플랫폼 애플리케이션 프로젝트의 "콘텐트 파일들"로서 불리울 수 있다.
하나의 양태에서, 본 개시는 컴퓨팅 디바이스의 프로세서에 의해, 다수의 콘텐트 파일들을 획득하는 단계를 포함하는 방법에 관한 것이며, 여기에서 콘텐트 파일들은 하나 이상의 프리젠테이션 파일들을 포함하고, 여기에서 하나 이상의 프리젠테이션 파일들의 각각의 프리젠테이션 파일은 별개의 컴퓨팅 디바이스의 프로세서에 의해 런타임 시 해석될 때 별개의 컴퓨팅 디바이스 상에서 실행하는 소프트웨어 애플리케이션의 (a) 기능 및 (b) 사용자 인터페이스 중 적어도 하나를 제공하도록 구성되는 각각의 지시들을 포함한다. 상기 방법은 또한 콘텐트 파일들을 별개의 컴퓨팅 디바이스에 제공하는 단계를 포함할 수 있다. 상기 콘텐트 파일들을 제공한 후, 상기 방법은 또한, 컴퓨팅 디바이스의 프로세서에 의해, 상기 다수의 프리젠테이션 파일들의 적어도 제 1 프리젠테이션 파일에서의 변화를 식별하는 단계, 및 적어도 상기 제 1 프리젠테이션 파일을 상기 별개의 컴퓨팅 디바이스에 제공하는 단계를 포함할 수 있으며, 여기에서 소프트웨어 애플리케이션은 별개의 컴퓨팅 디바이스 상에서 소프트웨어 애플리케이션을 재-설치 또는 재-로딩하기 위한 요구 없이 소프트웨어 애플리케이션의 (a) 기능 및 (b) 사용자 인터페이스 중 적어도 하나로서 제 1 프리젠테이션 파일을 실행하도록 구성된다.
몇몇 실시예들에서, 콘텐트 파일들은 또한 하나 이상의 미디어 파일들을 포함한다. 각각의 지시들은, 런타임 시 해석될 때, 브라우저 애플리케이션 내에서 소프트웨어 애플리케이션의 사용자 인터페이스를 제공하도록 구성될 수 있다. 브라우저 애플리케이션은 사용자에게 비가시적이도록 구성될 수 있다.
몇몇 실시예들에서, 콘텐트 파일들을 제공하는 단계는 무선 연결을 통해 컴퓨팅 디바이스로부터 별개의 컴퓨팅 디바이스로 콘텐트 파일들을 푸싱하는 단계를 포함할 수 있다. 콘텐트 파일들을 제공하는 단계는 별개의 컴퓨팅 디바이스에 액세스가능한 네트워크 저장 영역에 콘텐트 파일들을 업로딩하는 단계를 포함할 수 있다. 콘텐트 파일들을 제공하는 단계는 다운로드를 위해, 콘텐트 파일들을 포함하는 설치 실행 파일을 제공하는 단계를 포함할 수 있다.
상기 설치 실행 파일은 윈도우리스 브라우저 애플리케이션을 포함할 수 있다. 상기 설치 실행 파일은 업데이트 에이전트를 포함할 수 있으며, 여기에서 업데이트 에이전트는, 소프트웨어 애플리케이션의 실행 동안 하나 이상의 부가적인 콘텐트 파일들을 수신하도록 구성되고, 여기에서 하나 이상의 부가적인 콘텐트 파일들 중 적어도 하나는 콘텐트 파일들의 제 1 콘텐트 파일에 대한 교체 파일을 포함하고, 상기 제 1 콘텐트 파일을 상기 교체 파일로 교체한다. 업데이트 에이전트는 또한, 교체 파일로 제 1 콘텐트 파일을 교체한 후, 교체 파일을 이용하기 위해 소프트웨어 애플리케이션의 현재 사용자 인터페이스를 리프레시하도록 구성될 수 있다.
몇몇 실시예들에서, 상기 방법은 또한 이동 디바이스 시뮬레이터 내에서 소프트웨어 애플리케이션의 설치를 제공하는 단계를 포함할 수 있으며, 여기에서 상기 이동 디바이스 시뮬레이터는 이동 디바이스 상에서 소프트웨어 애플리케이션의 기능을 시뮬레이팅하기 위해 하나 이상의 프리젠테이션 파일들 중 적어도 하나의 지시들을 해석한다. 상기 이동 디바이스 시뮬레이터는 하나 이상의 제어부들을 포함할 수 있으며, 여기에서 상기 하나 이상의 제어부들은, 컴퓨팅 디바이스의 사용자에 의해 활성화될 때, 소프트웨어 애플리케이션에 입력을 공급하도록 구성된다. 상기 방법은 또한 상기 하나 이상의 제어부들의 제 1 제어를 통해, 방향 입력을 수신하는 단계 및 상기 방향 입력에 응답하여, 상기 이동 디바이스 시뮬레이터의 디스플레이 부분의 방향을 변경하는 단계를 포함할 수 있다.
상기 방법은 또한 하나 이상의 제어들 중 제 1 제어를 통해, 디바이스 유형 입력을 수신하는 단계 및 상기 디바이스 유형 입력에 응답하여, 상기 디바이스 시뮬레이터의 외관을 수정하는 단계를 포함할 수 있으며, 상기 디바이스 시뮬레이터는 이동 디바이스 프레임 및 디스플레이 영역을 포함한다. 상기 방법은 또한, 상기 디바이스 유형 입력에 응답하여, 이동 디바이스 시뮬레이터에 의해 제공된 현재 사용자 인터페이스를 리프레싱하는 단계를 포함할 수 있다. 상기 방법은 또한, 상기 컴퓨팅 디바이스의 프로세서에 의해, 다수의 프리젠테이션 파일들 중 적어도 제 2 프리젠테이션 파일에서의 변화를 식별하는 단계, 및 상기 제 2 프리젠테이션 파일로부터 정보를 포함하기 위해 상기 이동 디바이스 시뮬레이터에 의해 제공된 현재 사용자 인터페이스를 리프레싱하는 단계를 포함할 수 있다.
몇몇 실시예들에서, 제 1 프리젠테이션 파일을 별개의 컴퓨팅 디바이스에 제공하는 단계는 상기 컴퓨팅 디바이스의 사용자로부터 요청을 수신하는 것에 응답하여 제 1 프리젠테이션 파일을 제공하는 단계를 포함한다. 상기 요청은 하나 이상의 컴퓨팅 디바이스들을 식별할 수 있으며, 여기에서 상기 하나 이상의 컴퓨팅 디바이스들은 별개의 컴퓨팅 디바이스를 포함한다.
상기 방법은 또한 콘텐트 파일들을 제공하기 이전에, 상기 콘텐트 파일들을 포함하는 설치 파일을 준비하는 단계를 포함할 수 있다. 상기 설치 파일을 준비하는 단계는 상기 설치 파일에 디지털 서명을 부가하는 단계를 포함할 수 있다.
몇몇 실시예들에서, 상기 방법은 또한 버전-제어 프로젝트 디렉토리에 콘텐트 파일들을 저장하는 단계를 포함한다. 상기 방법은 또한 적어도 상기 제 1 프리젠테이션 파일에 대한 요청을, 저장 어드레스에서 수신하는 단계를 포함할 수 있으며, 여기에서 상기 제 1 프리젠테이션 파일을 제공하는 단계는 상기 저장 어드레스에서 다운로드를 위해 상기 제 1 프리젠테이션 파일을 제공하는 단계를 포함한다. 상기 저장 어드레스는 URL을 포함할 수 있다. 상기 제 1 프리젠테이션 파일을 제공하는 단계는 상기 제 2 컴퓨팅 디바이스와의 파일 업데이트 연결을 개방하는 단계를 포함할 수 있다. 상기 제 2 컴퓨팅 디바이스는 이전 설치된 윈도우리스 브라우저 애플리케이션 내에서 소프트웨어 애플리케이션을 실행할 수 있다.
하나의 양태에서, 본 개시는 컴퓨팅 디바이스의 프로세서에 의해, 다수의 콘텐트 파일들을 획득하는 단계를 포함하는 방법에 관한 것이며, 상기 콘텐트 파일들은 하나 이상의 프리젠테이션 파일들을 포함한다. 상기 방법은, 상기 컴퓨팅 디바이스 상에서 실행하는 동반 애플리케이션에 의해, 상기 다수의 콘텐트 파일들에 액세스하는 단계; 및 상기 동반 애플리케이션에 의해, 상기 하나 이상의 프리젠테이션 파일들 중 적어도 제 1 프리젠테이션 파일을 해석하는 단계를 포함할 수 있으며, 여기에서 상기 제 1 프리젠테이션 파일을 해석하는 단계는 소프트웨어 애플리케이션의 (a) 기능 및 (b) 사용자 인터페이스 중 적어도 하나를 렌더링하는 단계를 포함한다. 상기 방법은 상기 동반 애플리케이션에 의해, 하나 이상의 교체 콘텐트 파일들을 획득하기 위해 요청을 식별하는 단계, 및 상기 요청에 응답하여, 상기 동반 애플리케이션에 의해, 적어도 제 1 교체 프리젠테이션 파일에 액세스하는 단계를 포함할 수 있으며, 여기에서 상기 제 1 교체 프리젠테이션 파일은 상기 제 1 프리젠테이션 파일을 교체하도록 구성된다. 상기 방법은, 상기 동반 애플리케이션에 의해, 상기 제 1 교체 프리젠테이션 파일로부터 해석된 정보를 제공하기 위해 상기 소프트웨어 애플리케이션의 사용자 인터페이스를 리프레싱하는 단계를 포함할 수 있다.
몇몇 실시예들에서, 상기 요청은 별개의 컴퓨팅 디바이스의 터치 스크린 인터페이스 상에서 수행된 제스처를 포함한다. 상기 요청은 별개의 컴퓨팅 디바이스의 스캔 특징에 의해, 기계 판독가능한 표식을 스캔하는 것을 통해 획득된 스캔 데이터를 포함할 수 있다. 상기 스캔 데이터는 네트워크 어드레스를 포함할 수 있다. 상기 교체 프리젠테이션 파일에 액세스하는 단계는 상기 교체 프리젠테이션 파일을 획득하기 위해 네트워크 어드레스에 액세스하는 단계를 포함할 수 있다. 상기 동반 애플리케이션은 윈도우리스 브라우저를 포함할 수 있으며, 여기에서 상기 소프트웨어 애플리케이션의 사용자 인터페이스는 상기 윈도우리스 브라우저 내에서 렌더링된다.
하나의 양태에서, 본 개시는 프로세서 및 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 다수의 콘텐트 파일들을 획득하게 하는 지시들의 세트를 저장한 비-일시적 컴퓨터 판독가능한 매체를 포함하는 시스템에 관한 것이며, 상기 콘텐트 파일들은 하나 이상의 프리젠테이션 파일들을 포함하고, 여기에서 상기 하나 이상의 프리젠테이션 파일들의 각각의 프리젠테이션 파일은 별개의 컴퓨팅 디바이스의 프로세서에 의해 런타임 시 해석될 때, 별개의 컴퓨팅 디바이스 상에서 실행하는 (a) 기능 및 (b) 소프트웨어 애플리케이션의 사용자 인터페이스 중 적어도 하나를 제공하도록 구성된다. 상기 지시들은, 실행될 때, 상기 프로세서가 콘텐트 파일들을 다수의 별개의 컴퓨팅 디바이스들에 제공하게 하고, 상기 콘텐트 파일들을 제공한 후, 상기 다수의 프리젠테이션 파일들 중 적어도 제 1 프리젠테이션 파일에서의 변화를 식별하게 하며 적어도 상기 제 1 프리젠테이션 파일을 상기 다수의 별개의 컴퓨팅 디바이스들 중 적어도 제 1 컴퓨팅 디바이스에 제공하게 할 수 있으며, 여기에서 상기 소프트웨어 애플리케이션은 상기 소프트웨어 애플리케이션을 재-설치 또는 재-로딩하기 위한 요구 없이 소프트웨어 애플리케이션의 (a) 기능 및 (b) 사용자 인터페이스 중 적어도 하나로서 상기 제 1 프리젠테이션 파일을 실행하도록 구성된다.
몇몇 실시예들에서, 상기 제 1 컴퓨팅 디바이스는 유선 연결을 통해 시스템과 통신한다. 상기 적어도 제 1 프리젠테이션 파일을 제공하는 단계는 상기 적어도 제 1 프리젠테이션 파일을 제 2 컴퓨팅 디바이스에 제공하는 단계를 포함할 수 있으며, 여기에서 상기 제 2 컴퓨팅 디바이스는 무선 연결을 통해 상기 시스템과 통신한다. 상기 지시들은, 실행될 때, 또한 상기 프로세서로 하여금 상기 적어도 제 1 프리젠테이션 파일을 제공하기 전에, 무선 네트워크 상에서 다수의 컴퓨팅 디바이스들 중 적어도 하나의 컴퓨팅 디바이스를 식별하게 할 수 있으며, 여기에서 상기 적어도 하나의 컴퓨팅 디바이스는 상기 제 1 컴퓨팅 디바이스를 포함한다. 상기 제 1 프리젠테이션 파일을 상기 제 1 컴퓨팅 디바이스에 제공하는 단계는 상기 무선 네트워크에 걸쳐 상기 제 1 프리젠테이션 파일을 제공하는 단계를 포함할 수 있다. 상기 제 1 프리젠테이션 파일을 상기 제 1 컴퓨팅 디바이스에 제공하는 단계는 상기 제 1 컴퓨팅 디바이스 상에서 실행하는 다운로드 에이전트와의 파일 공유 연결을 개방하는 단계를 포함할 수 있다.
몇몇 실시예들에서, 상기 시스템은 또한 입력 디바이스를 포함하고, 여기에서 상기 지시들은, 실행될 때, 상기 프로세서로 하여금 상기 적어도 제 1 프리젠테이션 파일을 제공하기 전에, 상기 입력 디바이스를 통해, 상기 다수의 컴퓨팅 디바이스들 중 적어도 하나의 컴퓨팅 디바이스의 표시를 수신하게 하고, 여기에서 상기 적어도 하나의 컴퓨팅 디바이스는 상기 제 1 컴퓨팅 디바이스를 포함한다. 상기 제 1 프리젠테이션 파일을 제공하는 단계는 상기 표시에 응답하여, 상기 제 1 프리젠테이션 파일을 상기 적어도 하나의 컴퓨팅 디바이스에 제공하는 단계를 포함할 수 있다.
하나의 양태에서, 본 개시는 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 다수의 콘텐트 파일들을 획득하게 하는 지시들의 세트를 저장한 비-일시적 컴퓨터 판독가능한 매체에 관한 것이며, 여기에서 상기 콘텐트 파일들은 하나 이상의 프리젠테이션 파일들을 포함하고, 여기에서 상기 하나 이상의 프리젠테이션 파일들의 각각의 프리젠테이션 파일은 별개의 컴퓨팅 디바이스의 프로세서의 의해 런타임 시 해석될 때, 상기 별개의 컴퓨팅 디바이스 상에서 실행하는 소프트웨어 애플리케이션의 (a) 기능 및 (b) 사용자 인터페이스 중 적어도 하나를 제공하도록 구성되는 각각의 지시들을 포함한다. 상기 지시들은, 실행될 때, 또한 상기 프로세서로 하여금 상기 콘텐트 파일들을 상기 별개의 컴퓨팅 디바이스에 제공하게 하고, 상기 콘텐트 파일들을 제공한 후, 상기 다수의 프리젠테이션 파일들 중 적어도 제 1 프리젠테이션 파일에서의 변화를 식별하게 하고, 적어도 상기 제 1 프리젠테이션 파일을 별개의 컴퓨팅 디바이스에 제공하게 할 수 있으며, 여기에서 상기 소프트웨어 애플리케이션은 상기 별개의 컴퓨팅 디바이스 상에서 상기 소프트웨어 애플리케이션을 재-설치하거나 재-로딩하기 위한 요구 없이 상기 소프트웨어 애플리케이션의 (a) 상기 기능 및 (b) 사용자 인터페이스 중 적어도 하나로서 상기 제 1 프리젠테이션 파일을 실행하도록 구성된다.
몇몇 실시예들에서, 상기 다수의 콘텐트 파일들을 획득하는 단계는 네트워크를 통해, 원격 컴퓨팅 디바이스로부터 상기 다수의 콘텐트 파일들의 적어도 일부를 획득하는 단계를 포함한다. 상기 지시들은, 실행될 때, 또한 상기 프로세서로 하여금, 상기 제 1 프리젠테이션 파일에서의 변화를 식별하는 것에 응답하여, 상기 원격 컴퓨팅 디바이스에 액세스가능한 저장 리포지터리에서 상기 제 1 프리젠테이션 파일의 복제를 야기하게 할 수 있다. 상기 제 1 프리젠테이션 파일을 상기 별개의 컴퓨팅 디바이스에 제공하는 단계는 상기 제 1 프리젠테이션 파일이 상기 네트워크를 통해 상기 별개의 컴퓨팅 디바이스에 액세스가능하게 하는 단계를 포함할 수 있다.
본 개시의 앞서 말한 것 및 다른 목적들, 양태들, 특징들, 및 이점들은 첨부한 도면들과 함께 취해진 다음의 설명을 참조함으로써 보다 명백해지고 보다 양호하게 이해될 것이다.
도 1a 내지 도 1f는 컴퓨팅 디바이스들에 대한 소프트웨어 애플리케이션들을 생성하기 위해 사용될 수 있는 소프트웨어 개발 환경을 도시한 시스템도들.
도 2a 내지 도 2c는 컴퓨팅 디바이스들에 대한 소프트웨어 애플리케이션들을 개발하기 위해 사용될 수 있는 예시적인 방법들을 도시한 흐름도들.
도 3a 및 도 3b는 컴퓨팅 디바이스들에 대한 소프트웨어 애플리케이션들을 개발하기 위해 사용될 수 있는 부가적인 예시적인 방법들을 도시한 흐름도들.
도 4a 및 도 4b는 컴퓨팅 디바이스들에 대한 소프트웨어 애플리케이션들을 개발하기 위해 사용될 수 있는 추가 예시적인 방법들을 도시한 흐름도들.
도 5a 내지 도 5h는 컴퓨팅 디바이스들에 대한 소프트웨어 애플리케이션들을 생성하기 위해 사용될 수 있는 소프트웨어 개발 환경을 위한 예시적인 사용자 인터페이스들을 도시한 도면들.
도 6은 컴퓨팅 디바이스들에 대한 소프트웨어 애플리케이션들을 생성하기 위한 또 다른 예시적인 네트워크 환경의 블록도.
도 7은 컴퓨팅 디바이스 및 이동 컴퓨팅 디바이스의 블록도.
본 개시의 특징들 및 이점들은 도면들과 함께 취해질 때, 이하에 제시된 상세한 설명으로부터 보다 명백해질 것이며, 여기에서 유사한 참조 문자들은 전체에 걸쳐 대응하는 요소들을 식별한다. 도면들에서, 유사한 참조 번호들은 일반적으로 동일한, 기능적으로 유사한, 및/또는 구조적으로 유사한 요소들을 표시한다.
몇몇 구현들에서,본 개시는 컴퓨팅 디바이스들을 위한 소프트웨어의 개발을 위한 환경들 및 방법들에 관한 것이다. 개발 프로세스는, 몇몇 구현들에서, 둘 이상의 컴퓨팅 디바이스 플랫폼들 상에서의 배치를 위한 소프트웨어 애플리케이션의 크로스-플랫폼 개발을 포함할 수 있다. 컴퓨팅 디바이스 플랫폼은, 몇몇 예들에서, 디바이스 운영 체제(예를 들면, 워싱턴, 레드몬드의 마이크로소프트 코포레이션에 의한 Microsoft® 윈도우즈®, 캘리포니아, 쿠퍼티노의 애플 인크..에 의한 애플® MAC™ OS, 온타리오, 워털루의 모션 리미티드에서의 연구소에 의한 움직임에서의 연구(Research in Motion; RIM) 블랙베리® OS 등), 운영 체제 버전, 디바이스 애플리케이션 포맷(예를 들면, 애플 인크.에 의한 애플® iOS™, 캘리포니아, 멘로 파크의 구글 인크.에 의한 안드로이드™, 마이크로소프트 코포레이션에 의한 윈도우즈® Phone, 캘리포니아, 팔로 알토의 휴렛-패커드 컴퍼니에 의한 Palm™webOS™, 아일랜드, 더블린의 액센츄어 피엘씨에 의한 심비안™, 한국, 서울의 삼성 전자에 의한 바다™ 등), 및 디바이스 주변장치 구성(예를 들면, 몇몇 예들에서, 센서들, 스피커들, 마이크로폰들, 가상 및/또는 소형화된 키보드, 버튼들 및 다른 물리적 제어 입력들 등과 같은 입력 및 출력 디바이스들) 중 하나 이상과 같은 특정한 세트의 구성 파라미터들을 나타낼 수 있다.
여기에 설명된 바와 같이, 통합 클라우드 환경(ICE)은, 몇몇 구현들에서, 둘 이상의 컴퓨팅 디바이스 플랫폼들 상에서 구동하도록 컴파일링될 수 있는 크로스-플랫폼 소프트웨어 애플리케이션을 개발하기 위한 인터페이스를 제공할 수 있다. 몇몇 구현들에서, 통합 클라우드 환경은 다수의 무선 컴퓨팅 디바이스 플랫폼들에 대한 소프트웨어 애플리케이션들을 설계, 구성, 컴파일, 검사, 및/또는 분배하기 위한 특징들을 포함할 수 있다. 몇몇 구현들에서, 통합 클라우드 환경은 부가적으로 웹-기반 애플리케이션들(예를 들면, 브라우저-기반 웹 애플리케이션들, 매사추세츠, 캠브리지의 페이스북, 인크.에 의한 Facebook®과 호환 가능한 애플리케이션들, 마이크로소프트에 의한 ASP.NET과 같은 서버-측 웹 애플리케이션들 등)에 대한 소프트웨어 애플리케이션들을 설계, 구성, 컴파일, 검사, 및/또는 분배하기 위한 특징들을 제공할 수 있다. 통합 클라우드 환경은, 몇몇 구현들에서, 무선 컴퓨팅 디바이스들 및 웹 애플리케이션들의 다양한 플랫폼들에 대한 소프트웨어 애플리케이션들을 개발하기 위해 통상적으로 사용된 개개의 소프트웨어 개발 키트들(SDK들) 또는 통합 개발 환경들(IDE들)(예를 들면, 애플, 인크.에 의한 xCode™, 캐나다, 오타와의 이클립스 재단에 의한 이클립스, 마이크로소프트에 의한 비주얼 스튜디오®, 뉴욕, 아몽크의 인터내셔널 비즈니스 머신즈 코포레이션.(IBM)에 의한 웹스피어® 소프트웨어를 위한 합리적 응용 개발자 등) 및/또는 프로그래밍 언어들(예를 들면, 오브젝티브-C, 자바, C# 등)로부터 제거되는 개발 환경을 개발자에게 제공할 수 있다. 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션들의 개발을 위한 통합 클라우드 환경은 크로스-플랫폼 소프트웨어 애플리케이션의 플랫폼-독립적 버전을 개발 및 시뮬레이팅하기 위한 로컬 개발 컴퓨팅 디바이스 상에 설치된 애플리케이션 개발자 인터페이스를 수반할 수 있다. 크로스-플랫폼 소프트웨어 애플리케이션들의 개발을 위한 통합 클라우드 환경은, 몇몇 구현들에서, 인터넷 브라우저 프로그램을 통해 개발자에게 제공된 애플리케이션 개발자 인터페이스를 수반할 수 있다. 애플리케이션 개발자 인터페이스는 예를 들면, 특정한 컴퓨팅 디바이스 플랫폼들을 향해 애플리케이션 개발을 위해 제공된 다양한 소프트웨어 개발 키트들 또는 통합 개발 환경들의 양태들을 사용하여, 플랫폼-특정 파일들을 갖고 플랫폼-독립적 개발 파일들을 컴파일링하기 위해 통합 클라우드 환경에 대한 통신 채널을 개발자에게 제공할 수 있다.
몇몇 구현들에서, 다양한 컴퓨팅 디바이스들을 위한 크로스-플랫폼 개발은 개발자가 몇몇 예들에서 하이퍼텍스트 마크업 언어(HTML)와 같은 마크-업 언어들, 자바스크립트와 같은 해석 언어들, 및 캐스케이딩 스타일 시트들(CSS)과 같은 스타일 시트 언어들과 같은, 비-컴파일 리소스 파일들(예를 들면, 여기에 사용된 바와 같이, "프리젠테이션 파일들")을 통해 애플리케이션의 많은 행동을 정의하도록 허용하는 추상화 계층을 통해 인에이블될 수 있다. 프리젠테이션 파일들은, 예를 들면, 센서들, 제어들, 및 입력/출력 메커니즘들과 같은, 디바이스 주변 장치들과 상호 작용하기 위한 명령어들을 포함할 수 있다. 몇몇 구현들에서, 프리젠테이션 파일들은 또한 디바이스 또는 플랫폼-특정 애플리케이션 프로그래밍 인터페이스들(API들)과 같은 웹-기반 서비스들과 상호 작용하기 위한 명령어들을 포함할 수 있다. 몇몇 구현들에서, 프리젠테이션 파일들을 플랫폼-특정 무선 컴퓨팅 디바이스 명령어들로 변환하기 위한 추상화 계층이 메릴랜드, 포레스트 힐의 아파치 소프트웨어 재단에 의한 아파치 코도바 플랫폼을 사용하여 개발될 수 있다.
프리젠테이션 파일들은, 몇몇 구현들에서, 사용자 및 컴퓨팅 디바이스 사이에서의 상호 작용들을 가능하게 하기 위해 컴퓨팅 디바이스 상에서 런-타임시 해석될 수 있다. 몇몇 구현들에서, 프리젠테이션 파일들은 컴퓨팅 디바이스의 브라우저 엔진 특징에 의해 해석될 수 있다. 몇몇 구현들에서, 프리젠테이션 파일들은 컴퓨팅 디바이스 상에서 렌더링된 "윈도우리스"(예를 들면, 브라우저 경계를 정의하지 않고, 전체 스크린 등) 웹-브라우저 인터페이스에서의 프리젠테이션을 위해 제공될 수 있다. 몇몇 구현들에서, 프리젠테이션 파일들은 프리젠테이션 파일들에 통합된 미디어 파일들로의 링크들을 통해 애플리케이션의 실행 동안 액세스되며 제공될 수 있는 오디오, 이미지, 및 비디오 파일들과 같은, 다수의 미디어 파일들과 조합될 수 있다. 미디어 파일들 및 프리젠테이션 파일들의 조합은, 몇몇 구현들에서, 크로스-플랫폼 애플리케이션 프로젝트의 "콘텐트 파일들"로서 불리울 수 있다.
도 1a 내지 도 1f는, 몇몇 구현들에서, 둘 이상의 디바이스 플랫폼들을 포함하는 다수의 컴퓨팅 디바이스들에 대한 배치를 위한 크로스-플랫폼 소프트웨어 애플리케이션들을 개발하기 위한 통합 클라우드 환경의 변화들을 예시할 수 있다. 도 1a 내지 도 1c는 예를 들면, 크로스-플랫폼 소프트웨어 애플리케이션들의 배치를 위해 데스크탑 클라이언트 애플리케이션을 사용한 통합 클라우드 환경을 예시할 수 있는 반면, 도 1d 내지 도 1f는 크로스-플랫폼 소프트웨어 애플리케이션들의 개발을 위해 클라우드-구현(예를 들면, 브라우저-기반) 애플리케이션을 사용한 통합 클라우드 환경을 예시할 수 있다.
도 1a로 가면, 통합 클라우드 환경(100)은 클라우드 네트워크(104)와 통신하는 개발 컴퓨팅 디바이스(102)(예를 들면, 랩탑 컴퓨터, 데스크탑 컴퓨터, 태블릿 컴퓨터, 노트북 컴퓨터, 또는 소프트웨어 개발 목적을 위해 구성가능한 다른 컴퓨팅 디바이스)를 포함할 수 있다. 클라우드 네트워크(104)는, 몇몇 구현들에서, 플랫폼-특정 컴퓨팅 디바이스 애플리케이션들의 생성을 위한 개발 서버(106), 예를 들면, 프로젝트 디렉토리(112)에 수집된 바와 같이 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트와 관련 있는 프로젝트 파일들(110)(예를 들면, 콘텐트 파일들 및 다른 파일들)을 저장하기 위한 프로젝트 리포지터리(108), 및 개발 컴퓨팅 디바이스(102) 및 클라우드 네트워크(104) 사이에서 개발 환경 인터페이스를 가능하게 하는 웹 서버(114)를 포함할 수 있다.
통합 클라우드 환경(100)에서의 개발을 시작하기 위해, 몇몇 구현들에서, 개발자는 먼저 개발 컴퓨팅 디바이스(102) 상에서 개발 클라이언트 애플리케이션(116)을 다운로딩 및 설치할 수 있다. 개발 클라이언트 애플리케이션(116)은, 몇몇 예들에서, 네트워크 클라우드(104)(예를 들면, 예시된 바와 같이)로부터 다운로딩되고, 또 다른 네트워크를 통해 다운로딩되거나(예를 들면, 웹 브라우저 또는 웹-기반 애플리케이션 저장소 등을 통해) 몇몇 예들에서, 콤팩트 디스크(CD), 디지털 비디오 디스크(DVD), 또는 범용 직렬 버스(USB) 메모리 디바이스와 같은 개발 컴퓨팅 디바이스(102)에 액세스가능한 착탈가능한 컴퓨터-판독가능한 매체를 통해 설치될 수 있다.
몇몇 구현들에서, 개발 클라이언트 애플리케이션(116)은 개발 컴퓨팅 디바이스(102) 상에서 개발 인터페이스(118)의 로컬 프리젠테이션을 가능하게 할 수 있다. 개발 클라이언트 애플리케이션(116)은, 몇몇 구현들에서, 개발 인터페이스(118)를 통해 프리젠테이션 파일들 및 다른(예를 들면, 미디어, 메타데이터 등) 파일들을 사용하여 크로스-플랫폼 소프트웨어 애플리케이션을 프로그램하며 디버깅하기 위해 기능들을 포함하거나 클라우드-기반 기능들에 대한 액세스(예를 들면, 웹 서버(114)를 통해 제공된)를 포함한다.
몇몇 구현들에서, 개발 클라이언트 애플리케이션(116)은 또한 개발 인터페이스(118)를 통해 둘 이상의 컴퓨팅 디바이스 플랫폼들 상에서 소프트웨어 애플리케이션을 시뮬레이팅하기 위해 기능들을 포함하거나 클라우드-기반 기능들에 대한 액세스(예를 들면, 웹 서버(114)를 통해 제공된)를 포함할 수 있다. 예를 들면, 제 1 스크린 크기 및 제 1 주변 장치 및 제어 기능들을 가진 제 1 디바이스 시뮬레이터는 제 1 디바이스 플랫폼(예를 들면, 개발 인터페이스(118)에 제공된 디바이스 시뮬레이터(120)와 같은)을 시뮬레이팅하기 위해 제공될 수 있으며, 제 2 스크린 크기 및 제 2 주변 장치 및 제어 기능들을 가진 제 2 디바이스 시뮬레이터는 제 2 디바이스 플랫폼을 시뮬레이팅하기 위해 제공될 수 있다.
몇몇 구현들에서, 디바이스 시뮬레이터(120)는 시뮬레이팅된 디바이스 플랫폼 상에서 센서들, 입력/출력 요소들, 및 다른 기능들의 행동들을 시뮬레이팅하기 위해 하나 이상의 센서 입력/출력 시뮬레이션 기능들을 포함할 수 있다. 이러한 기능들은, 예를 들면, 도 5a 내지 도 5h에 예시된 사용자 인터페이스들에 관하여 상세히 논의될 것이다.
일단 개발자가 시뮬레이팅된 애플리케이션의 성능을 만족한다면, 몇몇 구현들에서, 개발자는 임의의 국소적으로-저장된 프로젝트 파일들(122)(예를 들면, 프리젠테이션 파일들, 미디어 파일들 등)을 예를 들면, 프로젝트 디렉토리(112)에서의 프로젝트 파일들(110)의 일부로서, 그것들이 저장될 수 있는 프로젝트 리포지터리(108)에 업로딩할 수 있다. 몇몇 구현들에서, 개발 클라이언트 애플리케이션(116)은 크로스-플랫폼 소프트웨어 애플리케이션의 개발 동안 프로젝트 리포지터리(108)에서의 프로젝트 파일들(112) 중 하나 이상을 복제 및/또는 유지할 수 있다. 예를 들면, 파일을 저장할 때, 개발 클라이언트 애플리케이션(116)은 프로젝트 리포지터리(108)로의 새로운 또는 수정된 파일의 업로딩을 개시할 수 있다. 몇몇 구현들에서, 프로젝트 파일들(122)은 개발자가 하나 이상의 플랫폼-특정 애플리케이션 파일들(예를 들면, 실행 파일, 설치 파일, 집 파일과 같은 다운로드가능한 번들의 런타임 파일들 등)의 생성을 요청하는 시간까지 개발 컴퓨팅 디바이스(102)에 국소적인 채로 있을 수 있다.
플랫폼-특정 애플리케이션 파일의 생성을 가능하게 하기 위해, 몇몇 구현들에서, 개발 클라이언트 애플리케이션(116)은 국소적으로-저장된 프로젝트 파일들(122)의 일부를 프로젝트 리포지터리(108)로 복제할 수 있다. 프로젝트 리포지터리(108)로부터, 예를 들면, 프로젝트 파일들(110)은 플랫폼-특정 애플리케이션 파일을 생성하기 위해 플랫폼-특정 파일들(124)과 조합될 수 있다. 몇몇 구현들에서, 업데이트 에이전트(126)는 예를 들면, 타겟 컴퓨팅 디바이스 상에서 검사하는 동안 콘텐트 파일들의 부분적인 업데이트들을 가능하게 하기 위해 플랙폼-특정 애플리케이션 파일에 포함될 수 있다. 몇몇 구현들에서, 플랫폼-특정 애플리케이션 파일은 예를 들면, 특정한 타겟 컴퓨팅 디바이스로 하여금 멀웨어 또는 잠재적인 바이러스보다는 신뢰된 파일로서 플랫폼-특정 애플리케이션 파일을 인식하도록 허용하기 위해, 플랫폼-특정 또는 디바이스-특정 전자 서명을 포함할 수 있다. 몇몇 구현들에서, 개발 클라이언트 애플리케이션(116)은 몇몇 예들에서, 디바이스 브랜드, 모델, 운영 체제, 운영 체제 버전, 또는 고유 디바이스 식별자를 포함하는 타겟 무선 컴퓨팅 디바이스 정보를 업로딩할 수 있다. 몇몇 구현들에서, 개발 클라이언트 애플리케이션(116)은, 몇몇 구현들에서, 개발자에 관한 인구학 정보(예를 들면, 이름, 접촉 정보 등)와 같은 개발자 정보 및 특정한 무선 디바이스 플랫폼에 대응하는 서명 기관과 같이, 서명 기관에 의해 제공된 바와 같은 인증의 증명서를 업로딩할 수 있다.
몇몇 구현들에서, 개발자 클라이언트 애플리케이션(116)은 플랫폼-특정 애플리케이션 파일의 형성시 업데이트 에이전트(126)를 포함할지의 여부에 대한 표시를 개발자로부터 제공할 수 있다. 예를 들면, 개발자는 플랫폼-특정 애플리케이션 파일(들)의 각각으로 하여금 각각의 타겟 컴퓨팅 디바이스 상에서의 애플리케이션의 실행 동안 부분적으로 업데이트되도록 허용하기 위해 플랫폼-특정 애플리케이션 파일(들)에서의 업데이트 에이전트(126)의 포함을 특정할 수 있다. 또 다른 예에서, 개발자는 디버깅-모드 애플리케이션 파일(예를 들면, 업데이트 에이전트(126)를 포함한) 또는 생성-모드 애플리케이션 파일(예를 들면, 애플리케이션 저장소, 웹-기반 다운로드 사이트, 또는 다른 분배 메커니즘을 통해 최종 사용자들에게 분배되도록)을 생성하는 옵션을 가질 수 있다.
도 1b로 가면, 통합 클라우드 환경(130)은 또한, 몇몇 구현들에서, 스마트 폰(132a), 플립 폰(132b), 및 개인 휴대용 정보 단말기(PDA)(132c)와 같은 타겟 무선 컴퓨팅 디바이스들(132)의 세트를 포함할 수 있다. 예시된 바와 같이, 타겟 무선 컴퓨팅 디바이스들(132)의 각각은 개별적으로 예를 들면 개발 컴퓨팅 디바이스(102)의 포트로 플러깅된 코드 또는 와이어에 의해, 개발 컴퓨팅 디바이스(102)에 테더링된다. 몇몇 구현들에서, 유선 연결을 통해, 개발 컴퓨팅 디바이스(102)에 연결되기보다는, 타겟 무선 컴퓨팅 디바이스들(132) 중 하나 이상은 무선 메커니즘을 통해 개발 컴퓨팅 디바이스(102)에 액세스가능할 수 있다. 예를 들면, 타겟 무선 컴퓨팅 디바이스들(132) 중 하나 이상은 개발 컴퓨팅 디바이스(102)로서 동일한 근거리 네트워크(LAN), 캠퍼스 네트워크, Wi-Fi™ 네트워크, 또는 다른 무선 네트워킹 연결에 연결될 수 있다. 몇몇 구현들에서, 특정한 타겟 무선 컴퓨팅 디바이스(132) 및 개발 컴퓨팅 디바이스(102) 사이에서의 직접 또는 무선 연결의 선택은 개발 목적들을 위해 새로운 실행가능한 파일들의 업로드에 관하여 타겟 무선 컴퓨팅 디바이스(132)의 특정한 브랜드 또는 플랫폼의 허가들에 부분적으로 기초할 수 있다. 예를 들면, 특정한 브랜드들 또는 플랫폼들은 개발-모드 애플리케이션 파일의 무선 다운로드를 위한 기회를 제공하지 않을 수 있다.
예시된 바와 같이, 몇몇 구현들에서, 플랫폼-특정 실행가능한 파일들(134)(예를 들면, 설치 파일들, 애플리케이션 파일들 등)의 세트는 클라우드 네트워크(104)로부터 개발 컴퓨팅 디바이스(102)에 전달될 수 있다. 몇몇 구현들에서, 플랫폼-특정 실행가능한 파일들(134)은 각각 특정한 타겟 무선 컴퓨팅 디바이스(132)에 맞춰질 수 있다. 개발 클라이언트 애플리케이션(116)은, 몇몇 구현들에서, 타겟 무선 컴퓨팅 디바이스들(132) 중 특정한 하나에 속하는 것으로서 플랫폼-특정 실행가능한 파일들(134)의 각각을 식별하며 연관된 플랫폼-특정 실행가능한 파일(134)을 각각의 개별적인 타겟 무선 컴퓨팅 디바이스(132)에 다운로딩할 수 있다. 예를 들면, 제 1 플랫폼-특정 개발 실행가능한 파일(134a)은 개발 클라이언트 애플리케이션(116)에 의해 스마트 폰(132a)에 푸싱될 수 있는 반면, 제 2 플랫폼-특정 실행가능한 파일(134b)은 플립 폰(132b)에 푸싱될 수 있으며 제 3 플랫폼-특정 실행가능한 파일(134c)은 PDA(132c)에 푸싱될 수 있다. 몇몇 구현들에서, 플랫폼-특정 실행가능한 파일들(134)의 각각은 개발 클라이언트 애플리케이션(116)으로부터 플랫폼-특정 실행가능한 파일들(134)의 업로드시 각각의 타겟 무선 컴퓨팅 디바이스(132) 상에 자동으로 설치할 수 있다. 다른 구현들에서, 개발자는 각각의 타겟 무선 컴퓨팅 디바이스(132) 상에서 설치를 개시할 수 있다.
도 1c로 가면, 업데이트된 개발 클라이언트 애플리케이션(140)은 또한, 몇몇 구현들에서, 타겟 무선 컴퓨팅 디바이스들(132)의 각각 및 개발 컴퓨팅 디바이스(102) 사이에서의 무선 통신을 포함할 수 있다. 예를 들면, 타겟 무선 컴퓨팅 디바이스들(132)의 각각은 개발 컴퓨팅 디바이스(102)와 동일한 무선 네트워크에 연결될 수 있는 반면, 반드시 타겟 무선 컴퓨팅 디바이스들(132)의 각각 사이에서 동일한 무선 네트워크에 연결되는 것은 아니다. 예를 들면, 플립 폰(132b)은 Wi-Fi™ 네트워크에 연결될 수 있는 반면, PDA(132c)는 블루투스® 네트워크에 연결될 수 있다. 몇몇 구현들에서, 업데이트 에이전트(126)는 개발 클라이언트 애플리케이션(116)이 주어진 네트워크 상에서 타겟 무선 컴퓨팅 디바이스들(132)의 각각을 인식할 수 있게 하기 위해 고유 무선 식별자를 포함할 수 있다. 몇몇 구현들에서, 업데이트 에이전트(126)는 개발 클라이언트 애플리케이션(116)이 각각의 개별적인 타겟 무선 컴퓨팅 디바이스(132) 상에서 구동하는 특정한 플랫폼-특정 개발 애플리케이션(142)(예를 들면, 도 1b에 관하여 설명된 바와 같이 특정한 플랫폼-특정 실행가능한 파일(134)을 사용하여 설치된)을 인식할 수 있게 하기 위해 고유 식별자를 포함할 수 있다.
타겟 무선 컴퓨팅 디바이스들(132)의 각각 상에서 플랫폼-특정 개발 애플리케이션들(142)을 검사하는 동안, 몇몇 구현들에서, 개발자는 콘텐트 파일들(144) 중 하나 이상을 수정하기 위해 선택할 수 있다(예를 들면, 개발 컴퓨팅 디바이스(102) 상에서 개발 인터페이스(118)를 통해). 콘텐트 파일들(144)은 예를 들면 프리젠테이션 파일에 의해 런 타임 동안 액세스되는 하나 이상의 프리젠테이션 파일들 또는 미디어 파일들을 포함할 수 있다. 몇몇 구현들에서, 콘텐트 파일들(144)에 대한 변화들은 예를 들면, 각각의 수정된 콘텐트 파일(144)을 저장할 때 또는 플랫폼-특정 애플리케이션들(142)이 수정된 콘텐트 파일들(144)을 갖고 업데이트되도록 요청할 때, 클라우드 네트워크(104)에 제공될 수 있다. 콘텐트 파일들(144)에 대해 이루어진 수정들은, 몇몇 구현들에서, 프로젝트 리포지터리(108)에서 프로젝트 파일들(110)에 부가될 수 있다. 몇몇 구현들에서, 업데이트된 콘텐트 파일들(144)은 프로젝트 리포지터리(108)에 저장된 기존의 프로젝트 파일들(110)을 대신할 수 있다. 업데이트된 콘텐트 파일들(144) 중 하나 이상은, 몇몇 구현들에서, 기존의 프로젝트 파일(110)의 새로운 버전으로서 프로젝트 디렉토리(112)에 부가될 수 있다.
수정된 콘텐트 파일들(144)이, 이진 실행 파일로 컴파일링되기보다는, 런타임 동안 해석된다면, 몇몇 구현들에서, 수정된 콘텐트 파일들(144)은 각각의 플랫폼-특정 개발 애플리케이션(142)에 의한 사용을 위해 타겟 무선 컴퓨팅 디바이스들(132) 중 하나 이상에 푸싱될 수 있다. 몇몇 구현들에서, 개발 클라이언트 애플리케이션(116)은 타겟 무선 컴퓨팅 디바이스들(132)의 각각과의 파일 전달 연결을 개방할 수 있다. 예를 들면, 플랫폼-특정 개발 애플리케이션들(142)의 각각을 통해 구동하는 업데이트 에이전트(126)는, 몇몇 구현들에서, 개발 클라이언트 애플리케이션(116)과의 파일-공유 세션의 생성을 가능하게 할 수 있다. 무선 연결에 걸친 전달로서 예시되지만, 몇몇 구현들에서, 타겟 무선 컴퓨팅 디바이스들(132) 중 하나 이상은 개발 컴퓨팅 디바이스(102)에 테더링될 수 있다. 부가적으로, 타겟 무선 컴퓨팅 디바이스들(132)의 각각이 콘텐트 파일들(144)의 사본들을 수신하는 것으로서 예시되지만, 몇몇 구현들에서, 개발자는 콘텐트 파일들(144)의 수신을 위해 타겟 무선 컴퓨팅 디바이스들(132)의 일부를 선택할 수 있다. 예를 들면, 개발자는 업데이트된 콘텐트 파일들(144)을 플립 폰(132b) 및 PDA(132c)에 제공하지 않고 스마트 폰(132a) 상에서의 기능을 검증할 수 있다.
플랫폼-특정 개발 애플리케이션들(142)의 각각을 통해 구동하는 업데이트 에이전트(126)는, 몇몇 구현들에서, 콘텐트 파일들의 부가 또는 업데이팅을 인식하기 위해 각각의 타겟 무선 컴퓨팅 디바이스(132) 상에서 콘텐트 파일 디렉토리를 모니터링할 수 있다. 몇몇 구현들에서, 새로운 또는 업데이트된 콘텐트 파일의 인식 시, 업데이트 에이전트(126)는 플랫폼-특정 개발 애플리케이션(142)의 현재 프리젠테이션을 리프레싱할 수 있다. 이러한 방식으로, 예를 들면, 개발자에 의해 이루어진 수정은 각각의 플랫폼-특정 개발 애플리케이션(142)을 재로딩하거나 재시작하기 위한 요구 없이 각각의 업데이트된 타겟 무선 컴퓨팅 디바이스(132) 상에서 사용자 인터페이스에 즉시 반영될 수 있다.
유사한 통합 클라우드 환경(150)에서, 몇몇 구현들에서, 개발자는 웹 클라이언트 애플리케이션(156) 내에서 동작하도록 클라우드 네트워크(104)에서 웹 서버(114)에 연결함으로써 크로스-플랫폼 소프트웨어 애플리케이션을 개발 및 검사할 수 있다. 웹 클라이언트 애플리케이션(156)은, 몇몇 구현들에서, 서버-측 개발 클라이언트 애플리케이션(164)을 전달하기 위한 브라우저-기반 프로그램일 수 있다. 예를 들면, 웹 클라이언트 애플리케이션 프리젠테이션 파일들(151)은 개발 인터페이스(118)를 통해 개발을 가능하게 하기 위해 개발 컴퓨팅 디바이스(102)에 제공(예를 들면, 다운로딩)될 수 있다. 몇몇 구현들에서, 웹 클라이언트 애플리케이션(156)은 웹 서버(114)에 의해 제공된 개발 클라이언트 애플리케이션(164)과 통합할 수 있는 데스크 탑 또는 이동 디바이스 애플리케이션일 수 있다. 도 1a에 관하여 설명된 통합 클라우드 환경(100)과 마찬가지로, 웹 클라이언트 애플리케이션(156) 및/또는 개발 클라이언트 애플리케이션(164)은, 몇몇 구현들에서, 디바이스 시뮬레이터(120)를 포함하는 개발 인터페이스(118)를 제공하기 위해 사용될 수 있다.
크로스-플랫폼 소프트웨어 애플리케이션을 개발하는 동안, 개발자는 하나 이상의 콘텐트 파일들을 생성하고/생성하거나 하나 이상의 콘텐트 파일들을 웹 서버(114)에 업로딩할 수 있다. 콘텐트 파일들은, 몇몇 구현들에서, 예를 들면, 프로젝트 리포지터리(108) 내에서 프로젝트 디렉토리(112)의 프로젝트 파일들(110) 내에 저장될 수 있다.
몇몇 구현들에서, 개발자는 동반 애플리케이션 설치 실행 파일(152)을 타겟 무선 컴퓨팅 디바이스들(132) 중 하나 이상으로 다운로딩할 수 있다. 동반 애플리케이션 설치 실행 파일(152)은, 몇몇 구현들에서, 이동 디바이스 애플리케이션 서버(158)를 통해, 예를 들면, 구매를 위해 또는 무료로 제공된 다수의 이동 디바이스 애플리케이션들을 포함하는 애플리케이션 저장소(160)를 경유하여, 이용가능할 수 있다. 몇몇 구현들에서, 둘 이상의 이동 디바이스 애플리케이션 서버들은 동반 애플리케이션 설치 실행 파일(152)에 대한 액세스를 제공할 수 있다. 예를 들면, 애플리케이션 저장소(160)는 애플 인크.에 의한, iPhone™을 위한 애플® 앱 스토어와 같은, 플랫폼-특정 앱 저장소일 수 있다. 몇몇 구현들에서, 이동 디바이스 애플리케이션 서버(158)는 클라우드 네트워크(104)로부터 별개의 네트워크(166) 내에서 제공될 수 있다. 다른 구현들에서, 네트워크(166)는 클라우드 네트워크(104) 내에 포함될 수 있다. 동반 애플리케이션 실행 파일들(152a, 152b, 및 152c)의 각각은 특정한 운영 체제 및/또는 디바이스 플랫폼과 함께 동작하기 위해 생성될 수 있다. 예를 들면, 동반 애플리케이션 실행 파일(152a)은 타겟 무선 컴퓨팅 디바이스(132a)의 디바이스 플랫폼 상에서의 설치를 위해 생성될 수 있다.
동반 애플리케이션 설치 실행 파일들(152)의 다운로드시, 각각의 동반 애플리케이션(162a, 162b, 162c)은 각각의 타겟 무선 컴퓨팅 디바이스(132a, 132b, 132c) 상에 설치될 수 있다. 동반 애플리케이션들(162)은 몇몇 구현들에서, 개발 클라이언트 애플리케이션(164) 및 웹 클라이언트 애플리케이션(156)을 통해 개발된 콘텐트 파일들(144)을 제공하기 위한 셸 환경을 생성하기 위해 사용될 수 있다. 몇몇 구현들에서, 동반 애플리케이션들(162)은 콘텐트 파일들(144)을 제공하기 위한 윈도우리스 브라우저 기능을 포함할 수 있다. 동반 애플리케이션들(162)은, 몇몇 구현들에서, 예를 들면, 요청시 및/또는 자동으로, 클라우드 네트워크(104)로부터 콘텐트 파일들을 수신할 수 있는 수신 에이전트(예시되지 않음) 및 콘텐트 파일들이 동반 애플리케이션들(162) 내에서 업데이트되도록 허용하기 위해 구성된 업데이트 에이전트(예시되지 않음)와 같은, 부가적인 기능을 포함할 수 있다.
도 1e로 가면, 동반 애플리케이션들(162)을 설치한 후, 현재 프로젝트와 관련 있는 콘텐트 파일들(122)(예를 들면, 프로젝트 디렉토리(112)에 누적된, 개발 클라이언트 애플리케이션(164) 및 웹 클라이언트 애플리케이션(156)을 통해 개발된 바와 같이)은 동반 애플리케이션들(162) 내에서 다운로딩 및 렌더링될 수 있다. 예를 들면, 동반 애플리케이션들(162)은 개발 클라이언트 애플리케이션(164) 및 웹 클라이언트 애플리케이션(156) 내에서 개발된 크로스-플랫폼 소프트웨어 애플리케이션의 기능을 론칭하기 위한 셸로서 행동할 수 있다. 이러한 기능, 예를 들면, 개발 애플리케이션(170a, 170b, 170c)은 동반 애플리케이션들(162) 내에서 론칭될 수 있다. 몇몇 구현들에서, 동반 애플리케이션들(162)은 둘 이상의 개발 애플리케이션들(예를 들면, 둘 이상의 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트들에 대응하는), 또는 크로스-플랫폼 소프트웨어 애플리케이션들의 진행 중인 검사 및 개발을 위한 단일 개발 애플리케이션의 둘 이상의 버전들을 조직할 수 있다.
도 1f에 예시된 바와 같이, 하나 이상의 콘텐트 파일들(144)은 크로스-플랫폼 개발 애플리케이션이 타겟 무선 컴퓨팅 디바이스들(132)로 배치된 후 수정되고, 업데이트되거나 부가될 수 있다. 몇몇 구현들에서, 콘텐트 파일들(144)은 타겟 무선 컴퓨팅 디바이스들(132)로 풀링될 수 있다. 예를 들면, 메뉴 선택, 사전 설정된 터치 스크린 제스처, 또는 네트워크 위치로의 액세스시, 타겟 무선 컴퓨팅 디바이스들(132)의 각각은 하나 이상의 콘텐트 파일들(144)을 수신할 수 있다. 콘텐트 파일들(144)의 다운로드는, 몇몇 구현들에서, 동반 애플리케이션(162)에 형성된 기능에 의해 지원될 수 있다. 몇몇 구현들에서, 콘텐트 파일들(144)은 타겟 무선 컴퓨팅 디바이스들(132) 중 하나 이상에 자동으로 푸싱될 수 있다. 예를 들면, 클라우드 네트워크(104)와의 네트워크 연결을 통해 또는 컴퓨팅 디바이스(102)와의 무선 연결을 경유하여, 콘텐트 파일들(144)은 타겟 무선 컴퓨팅 디바이스들(132) 중 하나 이상에 전달될 수 있다.
몇몇 구현들에서, 콘텐트 파일들(144)의 다운로드시, 동반 애플리케이션(162)은 콘텐트 파일들(144) 내에 제공된 새로운 콘텐트를 자동으로 검색하기 위해 현재 디스플레이를 재생성할 수 있다. 예를 들면, 도 1a 내지 도 1c에 관하여 설명된, 업데이트 에이전트(126)와 유사한 기능이 동반 애플리케이션(162)에 형성될 수 있다. 이러한 방식으로, 동반 애플리케이션들(162a, 162b, 및 162c)은 각각 업데이트된 개발 애플리케이션들(170'a, 170'b, 및 170'c)을 제공할 수 있다.
일단 개발자가 원하는 대로 검사 애플리케이션이 기능하고 있다고 결정한다면, 몇몇 구현들에서, 프로젝트 파일들(110)은 배치 애플리케이션을 형성하기 위해, 예를 들면, 개발 서버(106) 내에서, 플랫폼 특정 파일들(124)과 병합될 수 있다. 배치 애플리케이션은, 몇몇 구현들에서, 컴퓨팅 디바이스(102)에 제공될 수 있거나 도 1d에 관하여 설명된 애플리케이션 저장소(158)와 같은 애플리케이션 저장소로 전달될 수 있다.
도 2a 내지 도 2c는 크로스-플랫폼 소프트웨어 애플리케이션을 개발하기 위한 방법들(200, 270, 280)의 세트를 도시한 흐름도들을 보여준다. 상기 방법(200)은 예를 들면, 방법(270)(예를 들면, 클라이언트-설치 개발 솔루션을 수반한 환경들에서) 또는 방법(280)(예를 들면, 브라우저-기반 개발 환경을 수반한 환경들에서)과 조합될 수 있다.
도 2a로 가면, 몇몇 구현들에서, 방법(200)은 크로스-플랫폼 소프트웨어 애플리케이션들을 개발하기 위해 개발 클라이언트 애플리케이션을 액세스하는 것으로 시작할 수 있다(202). 몇몇 구현들에서, 개발 클라이언트 애플리케이션을 액세스하는 것은 통합 클라우드 개발 환경과 인터페이스하기 위해 클라이언트 애플리케이션을 설치하는 것을 포함할 수 있다. 개발 클라이언트 애플리케이션은, 몇몇 구현들에서, 라이트 클라이언트(light client) 또는 브라우저 인터페이스를 통해 제공될 수 있다.
몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트가 생성될 수 있다(204). 상기 프로젝트는, 몇몇 구현들에서, 하나 이상의 개발 파일들, 타겟 컴퓨팅 디바이스들, 및 크로스-플랫폼 소프트웨어 애플리케이션을 개발하기 위한 다른 리소스들과 연관될 수 있다. 새로운 프로젝트의 생성시, 몇몇 구현들에서, 하나 이상의 기본 프리젠테이션 파일들이 프로젝트 디렉토리(예를 들면, 네트워크 클라우드를 통해 국소적인 및/또는 액세스가능한)에 부가될 수 있다. 기본 프리젠테이션 파일은 예를 들면, 애플리케이션 인터페이스의 프리젠테이션을 위한 대략적인 프레임워크를 제공하기 위해 표준 포함들 및 구조를 갖고 구성될 수 있다. 몇몇 구현들에서, 기본 프리젠테이션 파일들은 몇몇 예들에서, 테스트, 제어들, 및 이미지들을 포함하는 애플리케이션의 프리젠테이션을 기술하는 적어도 하나의 마크-업 언어 파일을 포함할 수 있다. 더욱이, 몇몇 구현들에서, 기본 프리젠테이션 파일들은 런-타임시 프리젠테이션에 적용될 수 있는 스타일들을 설명하기 위한 하나 이상의 스타일 시트 파일들 더하기 몇몇 예들에서 사용자 개시 동작들(예를 들면, 제어 선택들, 텍스트 입력, 음성 입력 등)에 대한 응답들 및 디바이스 이벤트들(예를 들면, 디바이스 센서 이벤트에 대한 응답)에 대한 응답들과 같이 수행될 프로그램적 동작들을 지원할 수 있는 하나 이상의 해석 언어를 포함할 수 있다. 특정한 예에서, 기본 프리젠테이션 파일들은 윈도우리스 브라우저 프리젠테이션 엔진과 인터페이스하기 위한 자바스크립트, 기본 디스플레이 설정들을 수립하기 위한 style.css 파일, 및 다양한 프리젠테이션 파일들을 함께 연결하기 위한 index.html 파일을 포함할 수 있다.
몇몇 구현들에서, 추상화 계층 라이브러리가 특정한 무선 컴퓨팅 디바이스 플랫폼에 포함된 기능들, 입력/출력 요소들, 센서들, 및/또는 주변 디바이스들에 대한 호출들을 가능하게 하기 위해 포함될 수 있다. 예를 들면, 아파치 코도바는 무선 컴퓨팅 디바이스 플랫폼의 기능들에 대한 액세스를 제공하기 위해 포함될 수 있다. 추상화 계층을 사용하여 이용가능한 일반 기능들은 예를 들면, 특정 센서 디바이스들, 입력/출력 디바이스들, 또는 개개의 컴퓨팅 디바이스 플랫폼들의 다른 기능들에 매핑될 수 있어서(예를 들면, 애플리케이션 프로그래밍 인터페이스를 통해), 개발자가 플랫폼 단위 레벨로 구현되는 바와 같이 상기 기능에 관한 특정 정보를 알지 않고 이들 기능들과 상호 작용하도록 허용한다. 몇몇 예들에서, 추상화 계층은 스피커 요소, 가속도계 요소, 전역적 위치 결정 시스템(GPS) 요소, 또는 많은 컴퓨팅 디바이스들에 공통적인 다른 요소에 대한 일반적인 호출들을 포함할 수 있다.
몇몇 구현들에서, 개발자는 통합 클라우드 환경에 새로운 사용자 계정을 등록하거나 새로운 프로젝트를 생성하기 전에 통합 클라우드 환경을 가진 기존의 계정으로 로깅할 수 있다. 프로젝트 생성 동안, 하나 이상의 프로젝트 디렉토리들이 크로스-플랫폼 소프트웨어 애플리케이션의 개발에 사용된 프로젝트 재료들(예를 들면, 메타데이터, 프리젠테이션 파일들, 미디어 파일들, 실행가능한 파일들 등)을 저장하기 위해 생성될 수 있다.
몇몇 구현들에서, 애플리케이션 개발 사용자 인터페이스는 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트(206)에 대한 프리젠테이션 파일들을 개발하기 위해 제공될 수 있다. 프리젠테이션 파일들은, 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션의 사용자 인터페이스로서 런 타임시 해석될 플랫폼-독립적 콘텐트 파일들의 세트의 일부를 형성할 수 있다. 애플리케이션 개발 사용자 인터페이스는, 몇몇 구현들에서, 프리젠테이션 파일들(예를 들면, HTML, CSS 및 자바스트립트 파일들 등)을 편집하기 위한 편집기를 포함할 수 있다. 편집기는, 몇몇 구현들에서, 개발자가 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트에 대한 서로 관계가 있는 콘텐트 파일들의 세트를 쉽게 생성 및 수정할 수 있게 하기 위한 문법 컬러링, 문법 포맷팅, 리팩토링, 및/또는 코드 내비게이션 능력들을 포함할 수 있다.
몇몇 구현들에서, 프로젝트 파일 내비게이션 인터페이스는 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트에 콘텐트 파일들(208)을 부가하기 위해 제공될 수 있다. 몇몇 구현들에서, 프로젝트 파일 내비게이션 인터페이스는 프리젠테이션 파일들 및 미디어 파일들과 같은 플랫폼-독립적 콘텐트의 파일들 및 디렉토리들뿐만 아니라 하나 이상의 컴퓨팅 디바이스 플랫폼들과 관련 있는 네이티브 플랫폼 코드 파일들을 포함하는 여러 개의 파일들 및 디렉토리들을 포함할 수 있다. 몇몇 구현들에서, 네이티브 플랫폼 코드 파일들은 네트워크 클라우드에서 관리될 수 있는 반면, 플랫폼-독립적 파일들은 개발 컴퓨팅 디바이스 상에서 국소적으로 복제될 수 있다. 몇몇 구현들에서, 개발자는 새로운 크로스-플랫폼 소프트웨어 애플리케이션을 개발하는데 사용하기 위해 다른 프로젝트 디렉토리들로부터 현재 프로젝트 디렉토리로 파일들을 복사할 수 있다. 예를 들면, 개발자는 통합 클라우드 환경에서 하나 이상의 크로스-플랫폼 소프트웨어 애플리케이션들을 이미 생성하였을 수 있다. 개발자는, 몇몇 구현들에서, 오디오, 이미지, 및 비디오 파일들과 같은 하나 이상의 국소적으로 저장된 미디어 파일들을 프로젝트 파일 내비게이션 인터페이스로 드래그하며 드롭시킬 수 있다.
몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션의 시뮬레이션은 디바이스 시뮬레이터(210)에서 구동될 수 있다. 예를 들면, 콘텐트 파일들에서 이슈들을 연결하는 것과 같이, 프로젝트 콘텐트에서 임의의 사전-컴파일러 에러들을 생성, 편집, 및 해결한 후, 개발자는 개발 클라이언트 애플리케이션에서 검사하기 위한 크로스-플랫폼 소프트웨어 애플리케이션의 시뮬레이터 버전을 형성하기 위해 선택할 수 있다. 디바이스 시뮬레이터는, 몇몇 구현들에서,개발 클라이언트 애플리케이션에서의 오버레이로서 렌더링될 수 있다. 몇몇 구현들에서, 디바이스 시뮬레이터는 개발 컴퓨팅 디바이스의 디스플레이 영역(예를 들면, 내장된 또는 외부 모니터 등) 상에서 별개의 애플리케이션으로서 론칭할 수 있다. 디바이스 시뮬레이터는, 몇몇 구현들에서, 다수의 상이한 컴퓨팅 디바이스 플랫폼들을 시뮬레이팅하도록 구성될 수 있다. 몇몇 예들에서, 디바이스 시뮬레이터는 스마트 폰들, PDA들, 태블릿 컴퓨터들, 휴대용 멀티미디어 디바이스들, 및 다른 컴퓨팅 디바이스들 또는 디바이스 플랫폼들의 다양한 브랜드들 및 모델들에 대한 시뮬레이션 구조들을 포함할 수 있다. 몇몇 구현들에서, 시뮬레이터는 시뮬레이터는 상이한 유형, 브랜드, 및/또는 모델의 디바이스 또는 디바이스 플랫폼을 시뮬레이팅하기 위해 시뮬레이션 구조를 변경하기 위한 제어를 포함할 수 있다.
몇몇 구현들에서, 개발자는 시뮬레이션 구조상에 예시된 제어들을 통해 시뮬레이션과 상호작용할 수 있다. 예를 들면, 개발자는 시뮬레이션 구조에서 렌더링된, 내장 키보드의 키들과 같은, 버튼들 또는 다른 제어들을 선택할 수 있다(예를 들면, 터치 스크린 상에서의 제스처, 마우스 또는 다른 포인팅 디바이스를 가진 클릭 등을 통해). 몇몇 구현들에서, 개발자는 디바이스 시뮬레이터에 의해 렌더링된 시뮬레이팅된 애플리케이션에 입력(예를 들면, 로긴 정보, 터치 스크린 기반 제어들에 대한 "터치들" 등)을 제공하기 위해, 키보드 및/또는 마우스와 같은, 개발 컴퓨팅 디바이스에 연결된 입력 디바이스를 사용할 수 있다.
몇몇 구현들에서, 개발자는 디바이스 시뮬레이터에 입력 "명령어들"의 파일을 공급할 수 있다. 예를 들면, 검사 프리젠테이션 파일은 몇몇 예들에서, 지오로케이션 위치 정보 및 가속도계 판독들과 같은, 크로스-플랫폼 소프트웨어 애플리케이션의 시뮬레이션에 대한 입력을 시뮬레이팅하기 위해 다수의 입력 명령어들을 포함할 수 있다.
몇몇 구현들에서, 디바이스 시뮬레이터는 센서 데이터 및 디바이스 방향과 같은 사용자 입력을 시뮬레이팅하기 위한 기능들을 포함할 수 있다. 예를 들면, 디바이스 시뮬레이터는 지오로케이션 정보, 가속도 정보, 광센서 입력, 마이크로폰 입력, 또는 다른 시뮬레이팅된 입력을 제공하기 위해 입력 메커니즘을 포함할 수 있다.
시뮬레이팅된 애플리케이션의 기능에 기초하여, 시뮬레이션 동안(212), 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트에 대한 업데이트들이 수신될 수 있다(214). 예를 들면, 개발자는 시뮬레이팅된 애플리케이션의 행동을 조정하기 위해 하나 이상의 콘텐트 파일들을 업데이트하는 것 및 디바이스 시뮬레이터와 상호작용하는 것 사이에서 스위칭할 수 있다. 몇몇 구현들에서, 런 타임 동안 해석될 수 있는 하나 이상의 콘텐트 파일들에 대한 업데이트들은 시뮬레이팅된 애플리케이션이 디바이스 시뮬레이터에 의해 실행되는 동안 시뮬레이팅된 애플리케이션에 적용될 수 있다. 몇몇 구현들에서, 디바이스 시뮬레이터의 디스플레이는 개발자에 의해 제공된 변화를 포함하는 시뮬레이팅된 애플리케이션의 보기를 개발자에게 제공하기 위해 업데이트된 콘텐트 파일(들)에 응답하여 리프레싱될 수 있다. 몇몇 예들에서, 업데이트된 콘텐트 파일(들) 내에 이루어진 변화는 렌더링된 텍스트의 크기, 위치, 컬러 또는 폰트 스타일에 영향을 미치고, 대화형 제어를 부가하거나 제거하고, 배경 이미지를 스크린에 부가하거나, 시뮬레이팅된 디바이스 구조 또는 다른 시뮬레이팅된 입력과의 상호작용에 응답하여 시뮬레이팅된 애플리케이션의 행동을 수정할 수 있다.
몇몇 포인트에서, 개발자는 타겟 컴퓨팅 디바이스 상에서 크로스-플랫폼 소프트웨어 애플리케이션을 구동하기로 결정할 수 있다. 도 2b로 가면, 국소적 개발 클라이언트 애플리케이션을 수반한 구현들과 같은, 몇몇 구현들에서, 방법(200)은 하나 이상의 타겟 컴퓨팅 디바이스들의 선택을 수신하는 것(216)으로 시작하는 방법(270)으로 이어질 수 있다. 몇몇 구현들에서, 개발자는 타겟 컴퓨팅 디바이스들의 이용가능한 브랜드들 및/또는 모델들의 리스트로부터 하나 이상의 타겟 컴퓨팅 디바이스들을 선택할 수 있다. 몇몇 구현들에서, 타겟 컴퓨팅 디바이스 플랫폼은 컴퓨팅 디바이스의 특정한 브랜드 또는 모델의 표시보다는 개발자에 의해 공급될 수 있다.
몇몇 구현들에서, 개발자는 프로젝트에 또는 통합 클라우드 환경에(예를 들면, 사용자 계정을 통해) 하나 이상의 컴퓨팅 디바이스들을 등록할 수 있다. 몇몇 구현들에서, 컴퓨팅 디바이스들 중 하나 이상은 무선 컴퓨팅 플랫폼(예를 들면, 애플®iOS™, 구글 안드로이드™ 등)에 개발 디바이스들로서 등록될 수 있다. 예를 들면, 디바이스는 개발 프로세스 동안 개발자에 의한 개발 애플리케이션들의 직접 로딩을 가능하게 하기 위해 "개발 디바이스"로서 공급될 수 있다. 개발 디바이스의 프로비저닝은, 예를 들면, 특정한 컴퓨팅 디바이스 플랫폼의 재량일 수 있다. 몇몇 구현들에서, 프로비전 또는 증명서가 통합 클라우드 환경을 갖고 디바이스를 인증하기 위해 개발자에 의해 업로딩될 수 있다. 공급된 프로비전 또는 증명서는, 몇몇 구현들에서, 사용자 계정과 연관될 수 있으며, 따라서 컴퓨팅 디바이스는 개발자와 연관된 임의의 프로젝트에 관하여 사용될 수 있다.
이러한 등록에 관한 정보는, 몇몇 구현들에서 프로젝트와 연관될 통합 클라우드 환경에 메타데이터로서 제공될 수 있다. 개발자는, 몇몇 구현들에서, 등록된 타겟 컴퓨팅 디바이스들의 리스트로부터 하나 이상의 타겟 컴퓨팅 디바이스들을 선택할 수 있다.
다른 구현들에서, 개발 클라이언트 애플리케이션은 개발 컴퓨팅 디바이스와 통신하는 하나 이상의 컴퓨팅 디바이스들을 식별할 수 있다. 예를 들면, 개발 클라이언트 애플리케이션은 개발 컴퓨팅 디바이스와 통신하는 각각의 컴퓨팅 디바이스에 대한 정보(예를 들면, 식별자, 플랫폼 정보 등)를 검색하며 이것들을 타겟 컴퓨팅 디바이스들로서 선택을 위한 후보들로서 사용자에게 제공할 수 있다. 몇몇 구현들에서, 컴퓨팅 디바이스의 검출 시, 통합 클라우드 환경은 컴퓨팅 디바이스의 플랫폼이 개발 디바이스로서 프로비저닝을 요구하는지의 여부를 결정할 수 있다. 그렇다면, 몇몇 구현들에서, 통합 클라우드 환경은 연관된 플랫폼에 대한 개발 디바이스로서 컴퓨팅 디바이스의 프로비저닝의 증거를 공급하도록 개발자를 촉구할 수 있다.
몇몇 구현들에서, 개발 애플리케이션 실행가능한 파일들의 구축이 개시될 수 있다(218). 개발자는, 몇몇 구현들에서, 개발 클라이언트 애플리케이션의 사용자 인터페이스를 통해, 선택 타겟 컴퓨팅 디바이스들 상에 크로스-플랫폼 소프트웨어 애플리케이션을 설치하기 위한 애플리케이션 실행가능한 파일들의 생성을 개시하는 제어(예를 들면, "타겟 컴퓨팅 디바이스 상에서 구동", "타겟 컴퓨팅 디바이스를 위한 검사 애플리케이션을 컴파일링" 등)를 선택할 수 있다. 이러한 제어의 선택에 응답하여, 예를 들면, 개발 클라이언트 애플리케이션은 선택된 각각의 타겟 컴퓨팅 디바이스에 대한 플랫폼-특정 애플리케이션 실행가능한 파일(예를 들면, 실행가능한 애플리케이션 파일, 설치 파일 등)의 구축을 개시할 수 있다. 몇몇 구현들에서, 하나 이상의 콘텐트 파일들은 개발 애플리케이션 실행가능한 파일들의 구축ㅋ에서의 포함을 위한 통합 클라우드 환경으로 업로딩될 수 있다.
몇몇 구현들에서, 하나 이상의 개발 애플리케이션 실행가능한 파일들이 수신될 수 있다(220). 예를 들면, 개발 컴퓨팅 디바이스는 클라우드 네트워크로부터 하나 이상의 개발 애플리케이션 실행가능한 파일들을 수신할 수 있다. 몇몇 구현들에서, 개발 애플리케이션 실행가능한 파일들은 타겟 컴퓨팅 디바이스 상에 설치하며 그것과 인터페이스하기 위해 플랫폼-특정 기능들 및 프레임워크를 포함할 수 있다. 개발 애플리케이션 실행가능한 파일들은, 몇몇 구현들에서, 타겟 컴퓨팅 디바이스 플랫폼을 통한 검증 또는 인증을 위해 사용된 디지털 서명들을 포함할 수 있다. 개발 애플리케이션 실행가능한 파일들은, 몇몇 구현들에서, 타겟 컴퓨팅 디바이스 상에서의 설치 후 개발 애플리케이션의 부분적인 업데이팅을 위해 업데이트 에이전트를 포함할 수 있다.
몇몇 구현들에서, 하나 이상의 타겟 컴퓨팅 디바이스들이 식별될 수 있다(222). 예를 들면, 하나 이상의 타겟 컴퓨팅 디바이스들의 선택에 관하여 행해지지 않는다면, 개발 클라이언트 애플리케이션은 개발 컴퓨팅 디바이스와 통신하는 하나 이상의 타겟 컴퓨팅 디바이스들을 식별할 수 있다. 몇몇 구현들에서, 타겟 컴퓨팅 디바이스들은 개발 컴퓨팅 디바이스와 직접 통신할 수 있다(예를 들면, 테더링, 유선). 몇몇 구현들에서, 타겟 컴퓨팅 디바이스들 중 하나 이상은 개발 컴퓨팅 디바이스와 무선 통신할 수 있다.
각각의 식별된 타겟 컴퓨팅 디바이스(226)에 대해, 몇몇 구현들에서, 대응하는 애플리케이션 실행가능한 파일은 타겟 컴퓨팅 디바이스로 푸싱될 수 있다(224). 몇몇 구현들에서, 개발 클라이언트 애플리케이션은 각각의 타겟 컴퓨팅 디바이스로 각각의 실행가능한 파일을 푸싱할 수 있다. 개발자는, 몇몇 구현들에서, 대응하는 타겟 컴퓨팅 디바이스에 애플리케이션 실행가능한 파일을 수동으로 전달할 수 있다. 몇몇 구현들에서, 애플리케이션 실행가능한 파일은 타겟 컴퓨팅 디바이스로의 다룬도링시 자동으로 설치하도록 구성될 수 있다. 개발 클라이언트 애플리케이션은, 몇몇 구현들에서, 타겟 컴퓨팅 디바이스들 중 하나 이상에 다운로딩된 애플리케이션 실행가능한 파일의 설치의 실행을 개시할 수 있다. 몇몇 구현들에서, 애플리케이션 실행가능한 파일은 다운로드시 설치를 시작할 수 있다. 개발자는, 몇몇 구현들에서, 타겟 컴퓨팅 디바이스 상에서 애플리케이션 실행가능한 파일의 수동 설치를 개시할 수 있다.
몇몇 구현들에서, 하나 이상의 타겟 컴퓨팅 디바이스들은 무선 네트워크 상에서 식별될 수 있다(228). 예를 들면, 각각의 타겟 컴퓨팅 디바이스 상에서 개발 컴퓨팅 디바이스 애플리케이션의 다운로드 및 설치 후 몇몇 포인트에서, 개발자는 이전에 개발 컴퓨팅 디바이스와 직접 연결하는 타겟 컴퓨팅 디바이스들 중 적어도 하나를 연결 해제할 수 있다. 예에 덧붙여, 타겟 컴퓨팅 디바이스는 개발 컴퓨팅 디바이스와 동일한 무선 네트워크(예를 들면, Wi-Fi™, 블루투스® 등)와 통신할 수 있다.
몇몇 구현들에서, 하나 이상의 콘텐트 파일들에 대한 업데이트들 또는 그것의 부가가 수신될 수 있다(230). 예를 들면, 개발 클라이언트 애플리케이션 사용자 인터페이스를 통해, 개발자는 타겟 컴퓨팅 디바이스들 중 하나 이상에서 구동하는 개발 애플리케이션과의 상호 작용 동안 관찰된 행동들에 응답하여 콘텐트 파일들 중 하나 이상에 수정들을 적용할 수 있다. 예를 들면, 디스플레이의 일부는 예상된 대로 렌더링하지 않을 수 있거나, 제어가 예상된 방식으로 응답하지 않을 수 있다. 개발자는, 몇몇 구현들에서, 콘텐트 파일들 중 하나 이상의 수정 및/또는 하나 이상의 새로운 콘텐트 파일들의 부가를 통해 행동에 해결책을 적용할 수 있다. 수정된 및/또는 새로운 콘텐트 파일(들)이 단지 런타임 동안 해석되는 파일들만을 포함한다면, 몇몇 구현들에서, 개발 컴퓨팅 디바이스 애플리케이션에 포함된 업데이트 에이전트는 개발 컴퓨팅 디바이스 애플리케이션을 수신하고 그것과 업데이트된 콘텐트 파일들을 통합하도록 구성될 수 있다.
각각의 타겟 컴퓨팅 디바이스(238)에 대해, 타겟 컴퓨팅 디바이스와의 무선 연결이 이용가능하다면(232), 몇몇 구현들에서, 업데이트되고/업데이트되거나 부가된 콘텐트 파일(들)은 무선 연결을 통해 타겟 컴퓨팅 디바이스에 푸싱될 수 있다(234). 몇몇 구현들에서, 개발 애플리케이션에 내장된 업데이트 에이전트는 무선 네트워크를 통해 개발 컴퓨팅 디바이스와의 파일 공유 연결을 수립하도록 구성될 수 있다. 다른 구현들에서, 파일 공유 연결은 업데이트 에이전트의 도움 없이, 타겟 컴퓨팅 디바이스 및 개발 컴퓨팅 디바이스 사이에서 구성될 수 있다. 예를 들면, 무선 컴퓨팅 디바이스 플랫폼 통신 프로토콜들은 무선 타겟 컴퓨팅 디바이스 및 개발 컴퓨팅 디바이스 사이에서의 연결을 수립하기 위해 사용될 수 있다. 타겟 컴퓨팅 디바이스와의 어떤 무선 연결도 이용가능하지 않다면(232), 몇몇 구현들에서, 업데이트된 및/또는 부가된 콘텐트 파일(들)은 직접(예를 들면, 유선, 테더링된) 연결을 통해 타겟 컴퓨팅 디바이스로 푸싱될 수 있다(236). 유선 또는 무선 환경에서, 몇몇 구현들에서, 개발 클라이언트 애플리케이션은 개발 애플리케이션에 의해 사용된 콘텐트 파일들을 현재 포함하는 각각의 타겟 컴퓨팅 디바이스 상에서의 디렉토리 구조로 콘텐트 파일(들)을 푸싱할 수 있다. 몇몇 구현들에서, 개발 애플리케이션으로 컴파일링된 업데이트 에이전트는 임시 디렉토리로 푸싱된 하나 이상의 파일들을 검색하며 상기 파일들을 활성 디렉토리(예를 들면, 개발 애플리케이션에 의해 그로부터 판독된 디렉토리)로 파일들을 이동시킬 수 있다.
도 2c로 가면, 방법(200)은 다운로드 정보를 타겟 컴퓨팅 디바이스에 제공하는 것으로 시작하는(240), 방법(280)으로 계속될 수 있다. 예를 들면, 프로젝트의 콘텐트 파일들의 준비시, 기준이 콘텐트 파일들을 다운로딩하기 위해 네트워크 위치에 타겟 컴퓨팅 디바이스를 향하게 하도록 개발자를 위해 제공될 수 있다. 몇몇 구현들에서, 즉시 응답(Quick Response; QR) 코드가 개발 컴퓨팅 디바이스의 디스플레이 영역 내에 제공될 수 있다. 타겟 무선 컴퓨팅 디바이스의 스캐닝 기능이 예를 들면, 콘텐트 파일들이 획득될 수 있는, 범용 리소스 로케이터(URL)와 같은, 네트워크 위치를 검색하기 위해 QR 코드를 스캔하기 위해 사용될 수 있다. 몇몇 구현들에서, 위치는 예를 들면, 텍스트로서 또는 하이퍼링크로서, 개발 컴퓨팅 디바이스의 디스플레이 영역에 제공될 수 있다. 임의의 부가적인 디바이스들(242)에 대해, 몇몇 구현들에서, 다운로드 정보가 유사한 방식으로 제공될 수 있다.
몇몇 구현들에서, 타겟 컴퓨팅 디바이스(들)는 다운로드 정보를 사용하여 콘텐트 파일들을 다운로딩할 수 있다(246). 몇몇 구현들에서, 콘텐트 파일들은 개발 애플리케이션의 기능을 입증하기 위한 셸로서 행동하는 동반 애플리케이션으로 다운로딩될 수 있다. 개발자는 타겟 컴퓨팅 디바이스(들) 상에서 개발 애플리케이션을 검사하도록 진행할 수 있다.
어느 정도 시간이 지날 때, 몇몇 구현들에서, 하나 이상의 콘텐트 파일들의 부가 또는 하나 이상의 콘텐트 파일들에 대한 업데이트들이 수신될 수 있다(248). 예를 들면, 개발 클라이언트 애플리케이션 사용자 인터페이스를 통해, 개발자는 타겟 컴퓨팅 디바이스들 중 하나 이상에서 구동하는 개발 애플리케이션과의 상호 작용 동안 관찰된 행동들에 응답하여 콘텐트 파일들 중 하나 이상에 대한 수정들을 적용할 수 있다. 예를 들면, 디스플레이의 일부가 예상된 대로 렌더링하지 않을 수 있거나 제어가 예상된 방식으로 응답하지 않을 수 있다. 개발자는, 몇몇 구현들에서, 콘텐트 파일들 중 하나 이상의 수정 및/또는 하나 이상의 콘텐트 파일들의 부가를 통해 상기 행동에 해결책(fix)을 적용할 수 있다. 몇몇 구현들에서, 동반 애플리케이션은 업데이트된 및/또는 부가적인 콘텐트 파일들을 수신 및 통합하도록 구성될 수 있다.
특정한 타겟 컴퓨팅 디바이스와 수립된 연결이 있다면(250), 몇몇 구현들에서, 콘텐트 파일들은 타겟 컴퓨팅 디바이스(256)로 푸싱될 수 있다. 예를 들면, 콘텐트 파일들의 초기 다운로드시, 몇몇 구현들에서, 공유 네트워크 연결이 통합 클라우드 환경 및 타겟 컴퓨팅 디바이스 사이에서 수립될 수 있다. 다른 구현들에서, 하나 이상의 콘텐트 파일들은 개발 컴퓨팅 디바이스로부터 직접 타겟 컴퓨팅 디바이스로 푸싱될 수 있다(예를 들면, 클라우드 네트워크로부터 개발 컴퓨팅 디바이스로 콘텐트 파일들을 다운로딩한 후).
몇몇 구현들에서, 콘텐트 파일들은 다운로드를 위해 제공될 수 있다(252). 예를 들면, 콘텐트 파일들은 초기 세트의 콘텐트 파일들과 동일한 네트워크 위치에 또는 상이한 네트워크 위치에 다운로드를 위해 제공될 수 있다.
몇몇 구현들에서, 타겟 컴퓨팅 디바이스가 업데이트된 콘텐트 파일(들)을 풀링할 수 있다(254). 몇몇 구현들에서, 개발자는 QR 코드, URL, 또는 다른 입력 정보를 사용하여 다운로드를 개시할 수 있다. 다른 구현들에서, 네트워크 위치는 타겟 컴퓨팅 디바이스 내에서 저장될 수 있으며(예를 들면, 동반 애플리케이션의 기능에 의해), 콘텐트 파일들은 개발자로부터 특정한 입력을 수신할 때 자동으로 풀링될 수 있다. 예를 들면, 디스플레이 내에서의 메뉴 아이템의 선택 시 또는 타겟 컴퓨팅 디바이스의 터치 스크린을 통해 식별된 특정한 제스처 시, 콘텐트 파일들이 타겟 컴퓨팅 디바이스로 풀링될 수 있다. 각각의 부가적인 타겟 컴퓨팅 디바이스(258)에 대해, 콘텐트 파일들(256)의 자동 푸시를 위한 타겟 컴퓨팅 디바이스(250)에 대한 연결이 있는지 또는 콘텐트 파일들이 타겟 컴퓨팅 디바이스로 풀링되는지(254) 여부에 의존하여, 콘텐트 파일들이 타겟 컴퓨팅 디바이스들로 전달될 수 있다.
도 3a로 가면, 흐름도가 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션을 개발하기 위해 사용될 수 있는 방법(300)을 예시한다. 몇몇 구현들에서, 방법(300)은 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트에 관련 있는 콘텐트 파일들의 세트를 수신하는 것으로 시작할 수 있다(302). 몇몇 구현들에서, 콘텐트 파일들은 런-타임 동안 플랫폼-특정 개발 애플리케이션에 의해 해석될 정보로서 제공될 수 있다. 예를 들면, 콘텐트 파일들은 타겟 컴퓨팅 디바이스 상에서 실행하는 브라우저 엔진 특징(예를 들면, "윈도우리스" 브라우저 애플리케이션 내에서)을 통해 애플리케이션 그래픽 사용자 인터페이스를 제공하도록 구성된 프리젠테이션 파일들 및 미디어 파일들을 포함할 수 있다. 몇몇 구현들에서, 콘텐트 파일들은 콘텐트 파일들의 세트를 통합한 하나 이상의 플랫폼-특정 애플리케이션 실행가능한 파일들을 생성하기 위한 통합 클라우드 환경과 같은 네트워킹된 환경으로 업로딩될 수 있다. 콘텐트 파일들에 더하여, 몇몇 구현들에서, 몇몇 예들에서, 플랫폼-특정 애플리케이션 실행가능한 파일들, 미디어 또는 무선 컴퓨팅 디바이스 애플리케이션 코드와의 컴파일-시간 포함을 위한 다른 파일들(예를 들면, 애플리케이션 아이콘으로서 사용될 이미지 등)의 생성을 위한 타겟 컴퓨팅 디바이스 플랫폼들에 관한 정보, 크로스-플랫폼 소프트웨어 애플리케이션들의 개발을 위한 통합 클라우드 환경을 사용하기 위해 등록된 특정한 프로젝트 또는 개발자에 관한 정보, 및 개발자가 하나 이상의 특정한 컴퓨팅 디바이스 플랫폼들에 대한 컴퓨팅 디바이스 애플리케이션을 개발하기 위해 허가받은 증거를 제공하는 등록 정보, 프로비전 정보, 또는 증명 정보와 같은, 다른 파일들 또는 정보가 수신될 수 있다. 몇몇 구현들에서, 하나 이상의 다른 파일들은 몇몇 예들에서, 이름, 메타데이터, 또는 파일 구조 위치에 기초하여 해석 파일들보다는 컴파일-시간 파일들로서 식별될 수 있다.
콘텐트 파일들 및 임의의 다른 파일들의 목적 및 사용은, 몇몇 구현들에서, 디바이스 기능들(예를 들면, 센서들, 입력/출력 요소들 등)을 액세스하기 위한 플랫폼-특정 명령어들에 크로스-플랫폼 소프트웨어 애플리케이션을 매핑시키기 위해 사용된 추상화 계층의 디렉토리 구조를 통해 부분적으로 도출될 수 있다. 예를 들면, 아파치 코도바 추상화 계층을 사용하여 애플리케이션을 개발하기 위해, 콘텐트 파일들이 "www" 파일 디렉토리에서 제공될 수 있다. 몇몇 구현들에서, 추상화 계층의 디렉토리 구조는 크로스-플랫폼 소프트웨어 애플리케이션을 생성할 때, 개발자에 의해 액세스된 개발 환경에서 부분적으로 제공될 수 있다.
각각의 타겟 컴퓨팅 디바이스 플랫폼(308)에 대해, 몇몇 구현들에서, 콘텐트 파일들은 타겟 컴퓨팅 디바이스 플랫폼(304)에 대한 프로젝트 파일들의 세트를 생성하기 위해 특정한 타겟 컴퓨팅 디바이스 플랫폼에 플랫폼-특정적인 플랫폼-특정 파일들과 조합될 수 있다. 몇몇 구현들에서, 플랫폼-특정 파일들은 디바이스 기능들(예를 들면, 센서들, 입력/출력 요소들 등)과 인터페이스하기 위한 추상화 계층이 특정한 컴퓨팅 디바이스 플랫폼과 통신할 수 있게 하기 위해 플랫폼-특정 라이브러리들을 포함할 수 있다. 몇몇 구현들에서, 플랫폼-특정 파일들은 특정한 컴퓨팅 디바이스 플랫폼에 대한 컴퓨팅 디바이스 애플리케이션들을 생성하기 위해 소프트웨어 개발 키트(SDK)로부터 획득될 수 있다. 예를 들면, 하나 이상의 플랫폼-특정 SDK들은 크로스-플랫폼 소프트웨어 애플리케이션 파일들에 기초하여 플랫폼-특정 소프트웨어 애플리케이션 실행 파일들을 생성하기 위해 네트워크 클라우드 환경에, 전체적으로 또는 부분적으로 배치될 수 있다.
부가적으로, 몇몇 구현들에서, 콘텐트 파일들은 크로스-플랫폼 소프트웨어 애플리케이션의 기능을 가능하게 하기 위해 다른 크로스-플랫폼 파일들과 조합될 수 있다. 예를 들면, 콘텐트 파일들은 하나 이상의 컴퓨팅 디바이스 플랫폼들 상에서 크로스-플랫폼 소프트웨어 애플리케이션의 기능을 지원하기 위해 라이브러리들, 추상화 계층들, 또는 다른 구성들과 조합될 수 있다. 특정한 예에서, 콘텐트 파일들은 아파치 코도바 플랫폼을 통합한 디렉토리 구조로 복사될 수 있다.
몇몇 구현들에서, 업데이트 에이전트는 또한 타겟 컴퓨팅 디바이스 상에 설치될 때 플랫폼-특정 개발 애플리케이션을 업데이트하는 것을 가능하게 하기 위해 프로젝트 파일들과 병합될 수 있다(306). 업데이트 에이전트는, 몇몇 구현들에서, 타겟 컴퓨팅 디바이스 상에서 실행하는 플랫폼-특정 개발 애플리케이션을 식별하기 위해 개발 컴퓨팅 디바이스에 의해 사용된 식별 메커니즘을 제공하기 위한 하나 이상의 알고리즘들을 포함할 수 있다. 몇몇 구현들에서, 업데이트 에이전트는 개발 컴퓨팅 디바이스로부터 업데이트된 콘텐트 파일들을 수신하기 위한 개발 컴퓨팅 디바이스 및 타겟 컴퓨팅 디바이스 사이에 파일 공유 연결을 수립하기 위한 하나 이상의 알고리즘들을 포함할 수 있다. 업데이트 에이전트는, 몇몇 구현들에서, 개발 컴퓨팅 디바이스로부터 타겟 컴퓨팅 디바이스로 푸싱된 업데이트된 또는 새로운 파일들에 대한, 콘텐트 파일 디렉토리 또는 임시 디렉토리와 같은 디렉토리를 모니터링하기 위한 하나 이상의 알고리즘들을 포함할 수 있다.
각각의 타겟 컴퓨팅 디바이스 플랫폼(314)에 대해, 몇몇 구현들에서, 프로젝트 파일들은 타겟 컴퓨팅 디바이스 플랫폼을 위한 각각의 플랫폼-특정 개발 애플리케이션 실행가능한 파일을 생성하기 위해 컴파일링될 수 있다(310). 몇몇 구현들에서, 플랫폼-특정 개발 애플리케이션 실행가능한 파일(예를 들면, 설치 실행가능한 파일)은 플랫폼-특정 SDK의 부분들을 사용하여 통합 클라우드 환경에서 생성될 수 있다. 예를 들면, 플랫폼-특정 SDK들을 통해 제공된 컴파일 및 형성 동작들이 플랫폼-특정 개발 애플리케이션 실행가능한 파일을 컴파일 및 형성하기 위해 클라우드 네트워크를 통해 액세스될 수 있다.
각각의 타겟 컴퓨팅 디바이스 플랫폼(314)에 대해, 더욱이, 몇몇 구현들에서, 디지털 서명이 특정한 타겟 컴퓨팅 디바이스 플랫폼에 대한 개발 애플리케이션 실행가능한 파일에 부가될 수 있다(312). 몇몇 구현들에서, 코드 서명 기술은 코드의 무결성을 보장하기 위해 컴퓨팅 디바이스 플랫폼에 의해 사용될 수 있다. 예를 들면, 디지털 서명은 상기 컴퓨팅 디바이스 플랫폼과 함께 구성된 타겟 컴퓨팅 디바이스가 애플리케이션 코드의 소스(예를 들면, 개발자, 회사 등)를 인증하도록 허용하기 위해 플랫폼-특정 개발 실행가능한 파일에 적용될 수 있다. 몇몇 구현들에서, 디지털 서명은 코드와 연관된 의도에 관한 정보를 타겟 컴퓨팅 디바이스에 제공하기 위해 플랫폼-특정 개발 애플리케이션 실행가능한 파일에 적용될 수 있다. 상기 의도는, 몇몇 구현들에서, 어떤 디바이스 능력들이 플랫폼-특정 개발 애플리케이션(예를 들면, 지오로케이션, Wi-Fi™ 등)에 의해 액세스되는지를 포함할 수 있다. 상기 의도는, 예를 들면, 플랫폼-특정 개발 애플리케이션의 기능을 가능하게 하기 위해 플랫폼-특정 개발 애플리케이션에 공급된 액세스를 사용자에게 알리기 위해 사용자에게 제공될 수 있다. 특정한 예에서, 애플 iOS™는 의도의 서술을 포함하는 이동 프로비전 파일 및 인증된 개발자 증명서를 수용할 수 있다.
몇몇 구현들에서, 개발자에 의해 제공된 메타데이터는 디지털 서명을 갖고 상기 실행 파일을 인코딩하기 위해 사용될 수 있다. 몇몇 예들에서, 프로비전 또는 증명서는 개발자가 특정한 컴퓨팅 디바이스 플랫폼 상에서 새로운 컴퓨팅 디바이스 애플리케이션을 개발하기 위한 요청과 함께 제출되는 애플리케이션에 기초하여 개발자에게 공급될 수 있다. 프로비전 또는 증명서에 관한 정보, 또는 몇몇 구현들에서, 프로비전 또는 증명서 자체는 플랫폼-특정 개발 애플리케이션 실행가능한 파일에서의 포함을 위해 통합 클라우드 환경에 공급될 수 있다.
몇몇 구현들에서, 플랫폼-특정 개발 애플리케이션 실행가능한 파일(들)은 개발 컴퓨팅 디바이스에 제공될 수 있다(316). 예를 들면, 통합 클라우드 환경은 타겟 컴퓨팅 디바이스 상에서의 디렉토리로 개발 애플리케이션 실행가능한 파일(들)을 업로딩할 수 있다. 몇몇 구현들에서, 플랫폼-특정 개발 애플리케이션 실행가능한 파일(들)은 임시 디렉토리에 위치될 수 있다. 다른 구현들에서, 개발자는 플랫폼-특정 개발 애플리케이션 실행가능한 파일들의 다운로드를 요청할 수 있다.
몇몇 구현들에서, 콘텐트 파일들은 버전-제어 프로젝트 디렉토리에 저장될 수 있다(318). 예를 들면, 다수의 버전들의 콘텐트 파일들이 하나의 팀으로 부가적인 개발자들과 공유하기 위해 또는 개발의 이전 단계로 되돌리기 위해 통합 클라우드 환경에 유지될 수 있다. 몇몇 구현들에서, 프로젝트 파일들 및/또는 플랫폼-특정 개발 애플리케이션 실행가능한 파일(들)이 또한 버전-제어 프로젝트 디렉토리에 저장될 수 있다. 몇몇 구현들에서, 프로비전 또는 증명서 데이터와 같은, 디지털 서명 데이터가 프로젝트 디렉토리에서 유지될 수 있다. 다른 구현들에서, 프로비전 또는 증명서 데이터의 사본들은 예를 들면, 디지털 서명 데이터의 절도 및 오용에 대하여 개발자를 보호하기 위해, 디지털 서명으로서 포함 후 삭제될 수 있다.
도 3b로 가면, 흐름도가 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션을 개발하기 위해 사용될 수 있는 방법(330)을 예시한다. 몇몇 구현들에서, 방법(330)은 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트와 관련 있는 콘텐트 파일들의 세트를 검색하는 것으로 시작할 수 있다(332). 몇몇 구현들에서, 콘텐트 파일들은 런-타임 동안 플랫폼-특정 개발 애플리케이션에 의해 해석될 정보로서 제공될 수 있다. 예를 들면, 콘텐트 파일들은 타겟 컴퓨팅 디바이스 상에서 실행하는 브라우전 엔진 특징(예를 들면, "윈도우리스" 브라우저 애플리케이션 내에서)을 통해 애플리케이션 그래픽 사용자 인터페이스를 제공하도록 구성된 프리젠테이션 파일들 및 미디어 파일들을 포함할 수 있다. 콘텐트 파일들에 더하여, 몇몇 구현들에서, 몇몇 예들에서, 플랫폼-특정 애플리케이션 실행가능한 파일들, 미디어 또는 개발 애플리케이션 코드와 함께 컴파일-시간 포함을 위한 다른 파일들(예를 들면, 애플리케이션 아이콘으로서 사용될 이미지 등)의 생성을 위한 타겟 컴퓨팅 디바이스 플랫폼들에 관한 정보, 크로스-플랫폼 소프트웨어 애플리케이션들의 개발을 위한 통합 클라우드 환경을 사용하기 위해 등록된 특정한 프로젝트 또는 개발자에 관한 정보, 및 개발자가 하나 이상의 특정한 컴퓨팅 디바이스 플랫폼들에 대한 소프트웨어 애플리케이션들을 개발하기 위해 허가받은 증거를 제공하는 등록 정보, 프로비전 정보, 또는 증명서 정보와 같은 다른 파일들 또는 정보가 수신될 수 있다. 몇몇 구현들에서, 하나 이상의 다른 파일들이 몇몇 예들에서, 이름, 메타데이터, 또는 파일 구조 위치에 기초하여 해석 파일들보다는 컴파일-시간 파일들로서 식별될 수 있다.
콘텐트 파일들 및 임의의 다른 파일들의 목적 및 사용은, 몇몇 구현들에서, 디바이스 기능들(예를 들면, 센서들, 입력/출력 요소들 등)을 액세스하기 위한 플랫폼-특정 명령어들에 크로스-플랫폼 소프트웨어 애플리케이션을 매핑시키기 위해 사용된 추상화 계층의 디렉토리 구조를 통해 부분적으로 도출될 수 있다. 예를 들면, 아파치 코도바 추상화 계층을 사용하여 애플리케이션을 개발하기 위해, 콘텐트 파일들이 "www" 파일 디렉토리에서 제공될 수 있다. 몇몇 구현들에서, 추상화 계층의 디렉토리 구조는 크로스-플랫폼 소프트웨어 애플리케이션을 생성할 때, 개발자에 의해 액세스된 개발 환경에서 부분적으로 제공될 수 있다.
몇몇 구현들에서, 저장 어드레스가 결정될 수 있다(334). 예를 들면, 네트워크 위치 또는 URL은 네트워킹된 타겟 컴퓨팅 디바이스에 콘텐트 파일들을 제공하기 위해 식별될 수 있다. 저장 어드레스는, 몇몇 구현들에서, 단지 알려진 타겟 컴퓨팅 디바이스들에 대해서만 액세스가능한(예를 들면, 인식된 고유 식별자) 또는 요청자에 의해 통합 클라우드 환경의 보안 요소에 의해 인식된 식별 정보(예를 들면, 사용자 식별, 패스워드 등)를 가진 어드레스일 수 있다.
몇몇 구현들에서, 요청이 저장 어드레스에서 수신될 수 있다(336). 몇몇 구현들에서, 요청은 하나 이상의 콘텐트 파일들의 다운로드를 위한 것일 수 있다. 요청은, 몇몇 구현들에서, 알려진 또는 식별 가능한 타겟 컴퓨팅 디바이스에 의해 수신될 수 있다. 타겟 컴퓨팅 디바이스의 사용자는, 몇몇 구현들에서, 콘텐트 파일들을 다운로딩하도록 허용되기 전에 인증 정보를 제공할 수 있다.
몇몇 구현들에서, 콘텐트 파일들은 요청한 타겟 컴퓨팅 디바이스에 제공될 수 있다(338). 예를 들면, 타겟 컴퓨팅 디바이스 또는 타겟 컴퓨팅 디바이스에 의해 제공된 사용자 정보의 인증 시, 하나 이상의 콘텐트 파일들이 타겟 컴퓨팅 디바이스로 다운로딩될 수 있다.
나중 시간에, 몇몇 구현들에서, 콘텐트 파일들에 대한 업데이트들이 수신된다(340). 예를 들면, 개발자는 개발 클라이언트 애플리케이션 내에서 프로젝트에 대해 변경들을 할 수 있다. 업데이트된 콘텐트 파일들은, 몇몇 구현들에서, 하나 이상의 타겟 컴퓨팅 디바이스들에 의한 다운로딩을 위해 이용가능해질 수 있다.
특정한 타겟 컴퓨팅 디바이스가 업데이트된 콘텐트 파일들의 자동 수신을 위해 구성된다면(342), 몇몇 구현들에서, 콘텐트 파일들은 타겟 컴퓨팅 디바이스로 푸싱될 수 있다(338). 예를 들면, 수립된 네트워크 연결을 사용하여, 콘텐트 파일들이 타겟 컴퓨팅 디바이스로 자동으로 제공될 수 있다. 몇몇 구현들에서, 타겟 컴퓨팅 디바이스 상에서 실행하는 동반 애플리케이션은 통합 클라우드 환경과의 콘텐트 파일 공유 연결을 수립할 수 있다.
그 외, 몇몇 구현들에서, 업데이트된 콘텐트 파일들에 대한 요청이 저장 어드레스에서 수신될 수 있다(344). 몇몇 구현들에서, 저장 어드레스는 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트에 관련 있는 콘텐트 파일들을 제공하기 위해 처음에 결정된(334) 저장 어드레스와 동일할 수 있다. 저장 어드레스는, 몇몇 구현들에서, 타겟 컴퓨팅 디바이스의 디스플레이 영역 상에서, 예를 들면 QR 코드, URL, 또는 텍스트 메시지로서 결정되고 개발자에게 제공될 수 있다. 콘텐트 파일들은 몇몇 구현들에서, 저장 어드레스로부터 타겟 컴퓨팅 디바이스에 다운로딩될 수 있다.
도 4a는 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션의 개발 버전의 부분 업데이트들을 수행하기 위해 사용될 수 있는 방법(400)의 흐름도를 예시한다. 몇몇 구현들에서, 방법(400)은 개발 애플리케이션 실행 파일을 다운로딩하는 것으로 시작할 수 있다(402). 개발 애플리케이션 실행 파일은, 몇몇 구현들에서, 타겟 컴퓨팅 디바이스 상에서 개발 애플리케이션을 검사하는 동안 콘텐트 파일들을 자동으로 업데이트하기 위해 업데이트 에이전트 기능을 갖고 컴파일링된 개발 애플리케이션을 설치하기 위해 사용될 수 있다. 몇몇 구현들에서, 개발 애플리케이션 실행 파일은 개발 컴퓨팅 디바이스로부터 테더링된 타겟 컴퓨팅 디바이스에 푸싱될 수 있다. 다른 구현들에서, 개발 애플리케이션 실행 파일은 무선 네트워크 연결을 통해 개발 컴퓨팅 디바이스로부터 타겟 컴퓨팅 디바이스로 푸싱된다.
몇몇 구현들에서, 개발 애플리케이션 실행 파일은 개발 애플리케이션을 설치하기 위해 실행될 수 있다(404). 개발 애플리케이션은, 몇몇 구현들에서, 프리젠테이션 파일들의 세트로부터 사용자 인터페이스 지시들을 해석하는 브라우저 엔진 특징을 사용하여 생성된 인터페이스(예를 들면, "윈도우리스" 브라우저 인터페이스)를 포함할 수 있다. 프리젠테이션 파일들은, 몇몇 구현들에서, 개발 애플리케이션으로 코딩된 콘텐트 파일 디렉토리에 설치될 수 있다.
몇몇 구현들에서, 파일 업데이트 연결은 개발 컴퓨팅 디바이스를 갖고 개방될 수 있다(406). 몇몇 구현들에서, 개발 애플리케이션의 업데이트 에이전트 기능은 파일 공유 연결을 수립하기 위해 개발 컴퓨팅 디바이스와 통신할 수 있다. 업데이트 에이전트는, 몇몇 구현들에서, 타겟 컴퓨팅 디바이스 상에서 구동하도록 컴파일링된 개발 애플리케이션을 식별하는 고유 식별자를 개발 컴퓨팅 디바이스에 송신하거나 그 외 이용가능하게 만들 수 있다.
몇몇 구현들에서, 개발 애플리케이션이 구동할 수 있다(408). 예를 들면, 개발자는 개발 애플리케이션과 직접 상호작용하거나 그것과의 상호작용들을 야기할 수 있다(예를 들면, 타겟 컴퓨팅 디바이스에 검사 입력을 공급할 수 있다).
몇몇 구현들에서, 콘텐트 파일이 수정될 수 있다(410). 타겟 컴퓨팅 디바이스 상에서 개발 애플리케이션을 검사하는 동안, 몇몇 구현들에서, 개발자는 개발 애플리케이션의 성능이 가진 문제점을 발견할 수 있다. 몇몇 구현들에서, 개발자는 개발 애플리케이션의 성능을 변경하기 위해 하나 이상의 콘텐트 파일들을 업데이트하며 상기 업데이트된 콘텐트 파일(들)을 타겟 컴퓨팅 디바이스에 푸싱할 수 있다. 예를 들면, 개발자는 개발 애플리케이션의 사용자 인터페이스에서의 제어의 위치를 변경할 수 있다. 개발 클라이언트 애플리케이션 사용자 인터페이스에서의 저장 제어를 선택할 때, 업데이트된 콘텐트 파일(들)은 업데이트 에이전트 기능을 갖고 개발 애플리케이션을 구동하는 하나 이상의 타겟 컴퓨팅 디바이스들에 자동으로 푸싱될 수 있다. 몇몇 구현들에서, 개발자는 타겟 컴퓨팅 디바이스에 콘텐트 파일(들)을 푸싱하도록 개발 클라이언트 애플리케이션에 지시하는 제어를 능동적으로 선택할 수 있다.
몇몇 구현들에서, 타겟 컴퓨팅 디바이스 상에서 기능하는 업데이트 에이전트는 하나 이상의 콘텐트 파일들의 전달을 수용할 수 있다. 콘텐트 파일들은, 몇몇 구현들에서, 콘텐트 파일 디렉토리(예를 들면, 사용자 인터페이스 정보를 해석하기 위해 개발자 애플리케이션에 의해 사용되는 디렉토리)에 푸싱될 수 있다. 몇몇 구현들에서, 콘텐트 파일(들)은 임시 디렉토리로 푸싱될 수 있다. 예를 들면, 업데이트 에이전트는 하나 이상의 업데이트된 콘텐트 파일들의 수신을 인식할 수 있으며 개발 애플리케이션에 의해 그로부터 판독된 콘텐트 파일 디렉토리로 업데이트된 콘텐트 파일들을 이동시킬 수 있다. 몇몇 구현들에서, 단지 업데이트된 콘텐트 파일만을 수신하기보다는, 개발 클라이언트 애플리케이션은 타겟 컴퓨팅 디바이스로 업데이트된 프리젠테이션 파일 및 새로운 콘텐트 파일(예를 들면, 스크립트 언어 등으로 포함 서술을 통해 업데이트된 프리젠테이션 파일로 연결된)을 푸싱할 수 있다.
몇몇 구현들에서, 실행 개발 애플리케이션의 현재 페이지(예를 들면, 뷰, 사용자 인터페이스 이미지 등)는 수정된 콘텐트 파일의 수신에 응답하여 리프레싱하도록 강요될 수 있다(412). 몇몇 구현들에서, 업데이트 에이전트는 개발 애플리케이션이 동일한 포인트로부터 계속해서 구동하는 동안 개발 애플리케이션의 사용자 인터페이스를 리프레싱하기 위한 알고리즘을 포함할 수 있다. 예를 들면, 프리젠테이션 파일이 현재 디스플레이되는 사용자 인터페이스의 뷰에 대한 제어의 위치를 이동시키기 위해 업데이트된다면, 페이지의 리프레시는 사용자 인터페이스 내에서 제어의 새로운 위치의 즉각적인 디스플레이를 야기할 수 있다. 이러한 방식으로, 몇몇 구현들에서, 개발 애플리케이션의 행동에 대한 수정들이 개발 애플리케이션의 기능에서의 현저한 지연 또는 그것의 시작을 야기하지 않고 이루어질 수 있다. 다른 구현들에서, 업데이트 에이전트는 콘텐트 파일들이 업데이트되는 동안 개발 애플리케이션을 정지하거나 중단할 수 있으며, 그 후 업데이트된 콘텐트 파일들을 사용하여 시작하기 위해 개발 애플리케이션을 재시작하거나 개발 애플리케이션을 재로딩할 수 있다.
도 4b는 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션의 개발 버전의 부분 업데이트들을 수행하기 위해 사용될 수 있는 방법(420)의 흐름도를 예시한다. 몇몇 구현들에서, 방법(420)은 동반 애플리케이션이 타겟 컴퓨팅 디바이스 상에 설치되었는지의 여부를 결정하는 것으로 시작할 수 있다(422). 몇몇 구현들에서, 동반 애플리케이션 설치 파일, 애플리케이션 파일, 또는 다른 표시자가 타겟 컴퓨팅 디바이스 상에 위치되지 않는다면, 동반 애플리케이션 설치 실행 파일이 다운로딩될 수 있다(424). 몇몇 구현들에서, 동반 애플리케이션 설치 실행 파일은 예를 들면, 타겟 컴퓨팅 디바이스로부터 동반 애플리케이션을 브라우징하거나 탐색함으로써, 애플리케이션 저장소로부터 다운로딩될 수 있다. 몇몇 구현들에서, 동반 애플리케이션 설치 실행 파일은 네트워크 저장 위치에서 액세스될 수 있다. 예를 들면, URL은 동반 애플리케이션 설치 실행 파일을 다운로딩하는 것에 대한 정보를 제공받을 수 있다. 저장 위치는, 몇몇 예들에서, 개발 컴퓨팅 디바이스 및/또는 타겟 컴퓨팅 디바이스의 디스플레이 영역에 렌더링된 QR 코드 또는 텍스트 내에서 제공될 수 있다.
동반 애플리케이션은, 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션의 콘텐트 파일들을 렌더링하도록 구성된 윈도우리스 브라우저 기능을 포함할 수 있다. 윈도우리스 브라우저 기능은 또한, 몇몇 구현들에서, 특정한 컴퓨팅 디바이스 플랫폼에 포함된 기능들, 입력/출력 요소들, 센서들, 및/또는 주변 디바이스들에 대한 호출들을 가능하게 하기 위해 추상화 계층 라이브러리를 포함할 수 있다. 예를 들면, 아파치 코도바는 컴퓨팅 디바이스 플랫폼의 기능들에 대한 액세스를 제공하기 위해 포함될 수 있다. 윈도우리스 브라우저 내에서 렌더링된 콘텐트 파일들은 몇몇 구현들에서, 추상화 계층을 사용하여 이용가능한 일반 기능들에 대한 호출들을 포함할 수 있다. 몇몇 예들에서, 일반 기능들은 개개의 컴퓨팅 디바이스 플랫폼들의 특정 센서 디바이스들, 입력/출력 디바이스들, 또는 다른 기능들에 매핑될 수 있다(예를 들면, 애플리케이션 프로그래밍 인터페이스를 통해). 일반 기능들은, 예를 들면, 플랫폼-단위 레벨로 구현된 바와 같이 기능에 관한 특정한 정보를 알지 않고 이들 기능들과 상호 작용하도록 개발자에 대한 기회를 제공할 수 있다. 예를 들면, 추상화 계층은 스피커 요소, 가속도계 요소, 전역적 위치 시스템(GPS) 요소, 또는 많은 컴퓨팅 디바이스들에 공통적인 다른 요소에 대한 일반 호출들을 포함할 수 있다.
몇몇 구현들에서, 동반 애플리케이션은 크로스-플랫폼 소프트웨어 애플리케이션들의 개발을 위해 통합 클라우드 환경에 생성된 둘 이상의 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트들을 관리하기 위해 관리 기능을 포함할 수 있다. 예를 들면, 둘 이상의 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트들에 관련 있는 콘텐트 파일들은 타겟 컴퓨팅 디바이스에 다운로딩되며 동반 애플리케이션에 의해 관리될 수 있다.
동반 애플리케이션은, 몇몇 구현들에서, 하나 이상의 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트들에 대한 콘텐트 파일들을 다운로딩 및 관리하기 위한 기능을 포함할 수 있다. 예를 들면, 동반 애플리케이션은 콘텐트 파일들을 제공하는 개발 서버를 갖고 타겟 컴퓨팅 디바이스를 인증하기 위해 인증 정보를 관리할 수 있다. 몇몇 구현들에서, 동반 애플리케이션은 관리된 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트들의 각각에 대한 콘텐트 파일들을 다운로딩하기 위한 저장 위치를 추적할 수 있다.
몇몇 구현들에서, 개발 애플리케이션 콘텐트 파일들은 타겟 컴퓨팅 디바이스로 다운로딩될 수 있다(426). 몇몇 구현들에서, 타겟 컴퓨팅 디바이스의 디스플레이 영역에 렌더링된 QR 코드는 다운로드 어드레스를 획득하기 위해, 예를 들면, 타겟 컴퓨팅 디바이스의 스캐닝 기능을 사용하여, 스캐닝될 수 있다. 몇몇 구현들에서, 동반 애플리케이션은 네트워크 저장 위치로부터 콘텐트 파일들의 다운로드를 지원하기 위한 기능을 포함할 수 있다. 예를 들면, 사용자 크리덴셜들(예를 들면, 개발자 사용자 id, 패스워드, 프로젝트 명 등)에 기초하여, 동반 애플리케이션은 다운로드를 위한 옵션들로서 하나 이상의 프로젝트 식별자들을 풀링할 수 있다. 동반 애플리케이션은, 예를 들면, 동반 애플리케이션에 콘텐트 파일들을 다운로딩하기 위한 옵션들의 리스트를 도시한 메뉴를 포함할 수 있다. 콘텐트 파일들은, 몇몇 구현들에서, 다운로드시 동반 애플리케이션에 의해 조직될 수 있다. 예를 들면, 동반 애플리케이션은 둘 이상의 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트들에 관련 있는 콘텐트 파일들에 대한 별개의 디렉토리를 생성할 수 있다.
몇몇 구현들에서, 개발 애플리케이션의 콘텐트 파일들은 동반 애플리케이션 프레임워크 내에서 렌더링될 수 있다(428). 예를 들면, 동반 애플리케이션은 콘텐트 파일들이 렌더링될 수 있는 윈도우리스 브라우저 기능을 공급할 수 있다. 더욱이, 몇몇 구현들에서, 동반 애플리케이션은 추상화 계층 라이브러리를 포함할 수 있다. 추상화 계층 라이브러리는, 예를 들면, 특정한 디바이스 플랫폼에 포함된 기능들, 입력/출력 요소들, 센서들, 및/또는 주변 디바이스들에 대한 호출들을 가능하게 할 수 있다. 추상화 계층을 사용하여 이용가능한 일반 기능들은, 예를 들면, 개개의 컴퓨팅 디바이스 플랫폼들의 특정 센서 디바이스들, 입력/출력 디바이스들, 또는 다른 기능들에 매핑될 수 있어서(예를 들면, 애플리케이션 프로그래밍 인터페이스를 통해), 개발자가 플랫폼-단위 레벨로 구현된 바와 같이 기능에 관한 특정 정보를 알지 않고 이들 기능들과 상호 작용하도록 허용한다. 몇몇 예들에서, 추상화 계층은 스피커 요소, 가속도계 요소, 전역적 위치 시스템(GPS) 요소, 또는 많은 컴퓨팅 디바이스들에 공통인 다른 요소에 대한 일반 호출들을 포함할 수 있다.
나중에, 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션들의 개발을 위한 통합 클라우드 환경 내에서의 콘텐트 파일들이 수정될 수 있다(430). 몇몇 구현들에서, 개발자는 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트에 대한 수정들을 할 수 있다. 개발자는, 예를 들면, 프로비전을 위한 하나 이상의 콘텐트 파일들을 하나 이상의 타겟 컴퓨팅 디바이스들에 수동으로 제공할 수 있다. 또 다른 예에서, 하나 이상의 콘텐트 파일들은 예를 들면, 프로젝트 파일들을 저장할 때, 검색을 위해 저장 위치에 자동으로 위치될 수 있다.
몇몇 구현들에서, 자동 업데이트가 타겟 컴퓨팅 디바이스 상에서 이용가능할 수 있다. 예를 들면, 하나 이상의 콘텐트 파일들이 부가되거나 변경될 수 있다. 몇몇 구현들에서, 동반 애플리케이션은 수정된 콘텐트 파일들에 대한 저장 위치를 모니터링하기 위한 기능을 포함할 수 있다. 예를 들면, 동반 애플리케이션은 하나 이상의 콘텐트 파일들이 현재 실행하는 개발 애플리케이션에 대한 다운로딩된 콘텐트 파일들과 상이하다는 것을 결정할 수 있다. 자동 업데이팅이 이용가능하다면(432), 수정된 콘텐트 파일들이 자동으로 수신될 수 있다(436).
대신에, 자동 업데이트 옵션이 없다면, 또는 자동 업데이팅이 타겟 컴퓨팅 디바이스 상에서 활성화되지 않는다면, 몇몇 구현들에서, 수정된 콘텐트 파일들을 다운로딩하기 위한 요청을 표시하는 제스처가 수신될 수 있다(434). 사용자는, 몇몇 구현들에서, 개발 애플리케이션을 위한 콘텐트 파일들의 다운로드를 개시하기 위해 동반 애플리케이션 내에서 시행하는 동안 터치 스크린 제스처를 입력할 수 있다. 예를 들면, 사용자는 콘텐트 파일들의 다운로드를 개시하기 위해 3개의 손가락들을 갖고 탭핑하며 적어도 1초 동안 유지할 수 있다. 다른 예들에서, 사용자는 콘텐트 파일들의 다운로드를 개시하기 위해 특정한 드래깅 패턴 또는 탭핑 패턴을 사용할 수 있다. 몇몇 구현들에서, 개발 애플리케이션의 실행 동안, 개발자는 콘텐트 파일들의 다운로드를 개시하기 위해 동반 애플리케이션의 메뉴 모드를 입력할 수 있다. 예를 들면, 개발자는 콘텐트 파일들의 다운로드를 개시하기 위해 타겟 컴퓨팅 디바이스 상에서 메뉴 또는 옵션 키를 선택할 수 있다.
몇몇 구현들에서, 콘텐트 파일들이 수신될 수 있다(436). 예를 들면, 개발 애플리케이션 콘텐트 파일들의 이전 획득된 저장 위치를 사용하여, 타겟 컴퓨팅 디바이스가 업데이트 콘텐트 파일들을 다운로딩할 수 있다. 몇몇 구현들에서, 동반 애플리케이션은 업데이트된 콘텐트 파일들의 다운로드를 관리할 수 있다. 예를 들면, 동반 애플리케이션은 콘텐트 파일들에 액세스하기 위한 저장 위치의 표시(예를 들면, 어드레스 등)를 유지할 수 있다. 몇몇 구현들에서, 동반 애플리케이션은 콘텐트 파일들의 허가된 수신인으로서 타겟 컴퓨팅 디바이스들을 인증하는 인증 정보를 제공할 수 있다. 몇몇 구현들에서, 콘텐트 파일들의 전체 세트가 타겟 컴퓨팅 디바이스로 다운로딩될 수 있다. 콘텐트 파일들의 서브세트(예를 들면, 부가되고 및/또는 변경된 것들)는, 몇몇 구현들에서, 타겟 컴퓨팅 디바이스로 다운로딩될 수 있다.
몇몇 구현들에서, 실행한 개발 애플리케이션의 현재 페이지의 리프레시가 강요될 수 있다(438). 몇몇 구현들에서, 동반 애플리케이션은 개발 애플리케이션이 동일한 포인트로부터 계속해서 구동하는 동안 개발 애플리케이션의 사용자 인터페이스를 리프레싱하기 위한 리프레시 특징을 포함할 수 있다. 예를 들면, 프리젠테이션 파일이 현재 디스플레이되는 사용자 인터페이스의 페이지에 대한 제어의 위치를 이동시키기 위해 업데이트된다면, 페이지의 리프레시는 사용자 인터페이스 내에서 제어의 새로운 위치의 즉각적인 디스플레이를 야기할 수 있다. 이러한 방식으로, 몇몇 구현들에서, 개발 애플리케이션의 행동에 대한 수정들이 개발 애플리케이션의 기능에서의 현저한 지연 또는 그것의 재시작을 야기하지 않고 이루어질 수 있다. 다른 구현들에서, 동반 애플리케이션은 콘텐트 파일들이 업데이트되는 동안 개발 애플리케이션을 정지시키거나 중단할 수 있으며, 그 후 업데이트된 콘텐트 파일들을 사용하는 것을 시작하기 위해 개발 애플리케이션을 재시작하거나 개발 애플리케이션을 재로딩할 수 있다.
도 5a 내지 도 5h는 크로스-플랫폼 소프트웨어 애플리케이션들을 개발하기 위한 예시적인 사용자 인터페이스들의 일련의 스크린 샷들을 예시한다. 스크린 샷들은, 몇몇 구현들에서, 개발 클라이언트 애플리케이션에서 작동하는 개발자에 이용가능한 기능들을 표현할 수 있다. 몇몇 구현들에서, 스크린 샷들은 웹 클라이언트 애플리케이션을 통해 개발 클라이언트 애플리케이션에서 작동하는 개발자에 이용가능한 기능들을 표현할 수 있다. 예를 들면, 웹 클라이언트 애플리케이션은 개발 클라이언트 애플리케이션을 사용하여 개발자에 인터페이스를 제공하기 위해 웹 브라우저 프로그램 내에서 렌더링될 수 있다.
도 5a로 가면, 제 1 스크린 샷(500)은, 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션에 대한 새로운 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트를 생성하기 위한 사용자 인터페이스를 예시할 수 있다. 제 1 스크린 샷(500)과 상호 작용하는 개발자는, 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 스크린 샷들의 개발을 위한 통합 클라우드 환경을 가진 개발자 계정으로 로깅될 수 있다. 몇몇 구현들에서, 제 1 스크린 샷(500)은 인터넷 브라우저 내에 제공될 수 있다. 스크린 샷(500)은, 몇몇 구현들에서, 클라이언트 소프트웨어 애플리케이션의 부분으로서 제공될 수 있다. 메뉴 바(502)는 새로운 제어(504a) 및 마이 프로젝트들 제어(504b)를 포함한다. 새로운 제어(504a)의 선택은, 몇몇 구현들에서, 예를 들면, 제 1 스크린 샷(500)의 메인 패널(508)에서, 새로운 프로젝트 다이얼로그 박스(506)의 프리젠테이션을 야기할 수 있다. 몇몇 구현들에서, 개발자는 텍스트 입력 박스(510) 내에서 프로젝트 작업 공간 명을 부가할 수 있다. 예를 들면, 프로젝트 작업 공간 명은 크로스-플랫폼 소프트웨어 애플리케이션의 유형 또는 타이틀을 표시할 수 있다.
몇몇 구현들에서, 개발자는 새로운 프로젝트와 관련 있는 간단한 설명을 입력하기 위해 디스크립션 제어(512)를 선택할 수 있다. 몇몇 구현들에서, 프로젝트 명 및/또는 프로젝트 디스크립션은 새로운 컴퓨팅 디바이스 애플리케이션의 개발을 위해 컴퓨팅 디바이스 플랫폼으로부터 허가들을 획득하기 위해 통합 클라우드 환경에 제공될 수 있다. 예를 들면, 특정한 컴퓨팅 디바이스 플랫폼들은 컴퓨팅 디바이스 플랫폼 상에서의 설치를 위해 인증된 애플리케이션을 개발하도록 인증을 수신하기 위해 개발자 인명 정보 및 프로젝트 정보와 같은 메타데이터를 사용한 등록을 수반할 수 있다. 몇몇 구현들에서, 통합 클라우드 환경은 개발자가, 예를 들면, 요청 정보를 사전-구성함으로써 이러한 인증을 획득할 수 있게 할 것이다.
새로운 프로젝트를 생성하지 않고 다이얼로그 박스(506)를 닫기 위해, 몇몇 구현들에서, 개발자는 취소 제어를 선택할 수 있다(516). 새로운 프로젝트 다이얼로그 박스(506) 내에 포함된 정보를 수용하기 위해, 몇몇 구현들에서, 개발자는 OK 제어를 선택할 수 있다(514). OK 제어의 선택시(514), 몇몇 구현들에서, 통합 클라우드 환경은 몇몇 예들에서, 프로젝트 메타데이터, 로컬 메모리 및/또는 네트워킹된 파일 리포지터리에서의 프로젝트 디렉토리 구조, 및 크로스-플랫폼 소프트웨어 애플리케이션을 개발하기 위한 기본 프리젠테이션 파일들과 같은 하나 이상의 프로젝트 파일들과 같은, 개발자 대신에 프로젝트 콘텐트를 생성할 수 있다.
OK 제어(514)의 선택을 통한 새로운 프로젝트의 생성시, 몇몇 구현들에서, 프로젝트는 메뉴 바(502)에서 마이 프로젝트 제어(514b)의 선택을 통해 액세스가능할 수 있다.
도 5b로 가면, 제 2 스크린 샷(520)은, 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션을 개발하기 위한 기존의 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트를 개방하기 위한 사용자 인터페이스를 예시할 수 있다. 스크린 샷(520)에 예시된 바와 같이, 메뉴 바(502)에서의 마이 프로젝트들 제어(504b)가 선택된다. 개발 다이얼로그 박스(522)는 제 1 프로젝트 명(524), "Hello World"를 보여줄 수 있다. 몇몇 구현들에서, 임의의 수의 프로젝트 명들은 개방 다이얼로그 박스(522) 내에서 가시적일 수 있다. 예를 들면, 개발자는 이용가능한 프로젝트 명들의 리스트로부터 제 1 프로젝트 명(524)을 선택할 수 있다(예를 들면, 마우스 오버, 단일 클릭 등). 몇몇 구현들에서, 프로젝트는 도 5a에 관하여 설명된 바와 같이 새로운 다이얼로그 박스(506)를 사용하여 생성될 수 있다. 몇몇 구현들에서, 작업 공간 명("Hello World")은 도 5a의 텍스트 입력 박스(510)로 입력될 수 있다.
개발 다이얼로그 박스(522)는 디스크립션 제어(526)를 포함한다. 몇몇 구현들에서, 디스크립션 제어(526)는 새로운 다이얼로그 박스(506)를 통해 입력된 정보를 보여줄 수 있다(예를 들면, 디스크립션 제어(512)의 선택시 도 5a에 관하여 설명된 바와 같이). 예를 들면, 디스크립션 제어(526)는 선택된 프로젝트(예를 들면, 프로젝트 명(524)("Hello World"))에 관련 있는 간단한 설명을 보여주기 위해 선택될 수 있다. 몇몇 구현들에서, 간단한 설명은 또한, 몇몇 예들에서, 개발자 명 또는 식별자, 생성 날짜, 프로젝트에 대해 이루어진 마지막 수정의 시간스탬프 등과 같은 선택된 프로젝트에 관한 메타데이터를 포함할 수 있다.
몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트는 둘 이상의 개발자들에 의해 액세스되고 수정될 수 있다. 예를 들면, 개발 팀은 선택된 프로젝트 명(524) 내에 포함된 파일들에 대한 액세스를 공유할 수 있다. 이 경우에, 예를 들면, 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트와 연관된 메타데이터는 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트에 기여하도록 허가된 개발자들의 리스트를 포함할 수 있다. 몇몇 구현들에서, 다양한 개발자들이 다양한 허가들을 가질 수 있다. 예를 들면, 몇몇 개발자들은 판독-전용 액세스를 가질 수 있는 반면, 다른 개발자들은 선택된 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트의 파일들에 대한 기록/판독 액세스를 가질 수 있다.
크로스-플랫폼 소프트웨어 애플리케이션 프로젝트를 선택하지 않고 다이얼로그 박스(522)를 닫기 위해, 몇몇 구현들에서, 개발자는 취소 제어(529)를 선택할 수 있다. 개발 다이얼로그 박스(522) 내에서 선택된 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트를 열기 위해, 몇몇 구현들에서, 개발자는 OK 제어(528)를 선택할 수 있다. OK 제어(528)의 선택 시, 몇몇 구현들에서, 통합 클라우드 환경은 "Hello World"라 명명된 크로스-플랫폼 소프트웨어 애플리케이션에 관련 있는 프로젝트 파일들과 함께 작동하기 위한 인터페이스를 개발자에 제공할 수 있다.
도 5c로 가면, 제 3 스크린 샷(530)은, 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션을 생성, 편집, 및 시뮬레이팅하기 위해 개발자에 대한 개발 환경을 예시할 수 있다. 예시된 바와 같이, 제 3 스크린 샷(530)은 몇몇 구현들에서, 파일들을 부가하는 것, 프로젝트 콘텐트를 저장하는 것, 및 애플리케이션을 구동하는 것과 같은 특정한 동작들을 선택하기 위한 메뉴 바(532), 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트에 관련 있는 콘텐트를 편집하기 위한 편집 창(534), 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트와 연관된 콘텐트를 조직 및 선택하기 위한 파일 내비게이션 창(536), 및 개발 애플리케이션을 검사하기 위해 타겟 컴퓨팅 디바이스를 부가 또는 선택하기 위한 디바이스 창(538)을 포함할 수 있다. 상이한 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트를 열기 위해 또는 새로운 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트를 생성하기 위해, 몇몇 구현들에서 사용자는 예를 들면, 도 5a 및 도 5b에 의해 표현된 바와 같이 메인 사용자 인터페이스로 리턴하기 위해 메뉴 바(532)에서의 홈 제어(546a)를 선택할 수 있다.
프로젝트 내비게이션 창(536)으로 시작하면, 프로젝트 디렉토리("Hello World")(540)는 몇몇 구현들에서, 프리젠테이션 파일 디렉토리(542a), 이미지 파일 디렉토리(542b), 오디오 파일 디렉토리(542c), 및 비디오 파일 디렉토리(542d)를 포함할 수 있다. 몇몇 구현들에서, 파일 디렉토리들(542)은 크로스-플랫폼 소프트웨어 애플리케이션을 개발하기 위한 플랫폼-독립 파일들을 포함할 수 있다. 파일 디렉토리들(542) 내에 포함된 파일들은, 몇몇 구현들에서, 특정한 컴퓨팅 디바이스 플랫폼으로의 다운로드를 위해 설치 실행가능한 파일을 생성하기 위해 플랫폼-특정 파일들과 조합될 수 있다. 몇몇 구현들에서, 플랫폼-특정 파일들은 크로스-플랫폼 소프트웨어 애플리케이션들을 위한 통합 클라우드 환경의 클라우드 네트워크에 저장될 수 있다. 크로스-플랫폼 소프트웨어 애플리케이션은, 몇몇 예들에서, "윈도우리스", "무경계", 또는 그 외 "비가시적인" 브라우저 애플리케이션 내에서와 같이, 브라우저 엔진 특징을 통해 애플리케이션 기능들을 제공함으로써 기능할 수 있다. 예를 들면, 프리젠테이션 파일들(542a)은 브라우저 엔진 특징을 통해 정보를 제공하기 위해 런 타임시 해석될 수 있다. 몇몇 구현들에서, 브라우저 엔진 특징은 "동반" 소프트웨어 애플리케이션 내에서 제공될 수 있다. 예를 들면, 개발자는 크로스-플랫폼 소프트웨어 애플리케이션들을 검사하기 위한 개발 디바이스로서 타겟 컴퓨팅 디바이스르 가능하게 하기 위해 타겟 컴퓨팅 디바이스 상에 동반 애플리케이션을 다운로딩 및 설치할 수 있다. 프로젝트 파일들은 그 후 크로스-플랫폼 소프트웨어 애플리케이션을 검사하기 위해 동반 애플리케이션으로 다운로딩될 수 있다. 몇몇 구현들에서, 브라우저 엔진 특징은 개발 애플리케이션 실행 파일을 생성하기 위해 프리젠테이션 파일들(542), 플랫폼-특정 파일들, 및 다른 파일들과 조합될 수 있다(예를 들면, 그것을 갖고 컴파일링될 수 있다).
프리젠테이션 파일들(542a)은 예를 들면, 이미지 파일 디렉토리(542b), 오디오 파일 디렉토리(542c), 및/또는 비디오 파일 디렉토리(542d)에 저장된, 이미지들, 오디오, 및/또는 비디오와 같은 미디어 아이템들에 연결할 수 있다. 몇몇 구현들에서, 프리젠테이션 파일들(542a)은 몇몇 예들에서, HTML, 자바스크립트, 및 CSS와 같은 다수의 프리젠테이션 파일 포맷들에서 개발될 수 있다. 둘 이상의 프리젠테이션 파일 포맷들에 기록된 파일들은, 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션 인터페이스 및 기능을 생성하기 위해 함께 연결될 수 있다. 예를 들면, 제 3 스크린 샷(530)에 예시된 바와 같이, 프리젠테이션 파일 디렉토리(542a)는 CSS, 자바스크립트, 및 HTML에 기록된 파일들(544)을 포함한다.
몇몇 구현들에서, 개발자는, 몇몇 구현들에서, 편집 창(534)에서의 정보를 보고 편집하기 위해, 파일 내비게이션 창(536)에서 이용가능한 파일들(544) 중 하나를 선택할 수 있다. 예를 들면, style.css 파일(544d)은 편집 창(534) 내에서 style.css 파일(544d)의 콘텐트들을 보여주는, 파일 내비게이션 창(536)에서 선택될 수 있다. 몇몇 구현들에서, 다수의 파일들(544)은 편집 창(534) 내에서 개방될 수 있다. 예를 들면, style.css 파일(544d)은 편집 창(534) 내에서 탭으로서 나타날 수 있다.
기존의 파일(544)을 선택하기보다는, 몇몇 구현들에서, 개발자는 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트에 새로운 파일을 부가할 수 있다. 메뉴 바(532)로 가면, 부가 제어(546b)는 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트에 새로운 파일을 부가하기 위해 선택될 수 있다. 몇몇 구현들에서, 부가 제어(546b)의 선택은 몇몇 예들에서, HTML 파일, 자바스크립트 파일, 또는 CSS 파일과 같은 둘 이상의 유형들의 파일들의 옵션들을 제공할 수 있는 다이얼로그 인터페이스의 프리젠테이션을 야기할 수 있다. 몇몇 구현들에서, 부가 제어(546b)의 선택은 또 다른 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트(예를 들면, 개발자에 의해 생성되거나 그것에 가시적인 프로젝트), 로컬 하드 드라이브 또는 개발 컴퓨팅 디바이스에 액세스가능한 또 다른 저장 위치로부터 하나 이상의 파일들을 들여오기 위해 파일 내비게이션 창의 프리젠테이션을 야기할 수 있다. 예를 들면, 개발자는 이미지들, 오디오 파일들, 또는 비디오 파일들과 같은 하나 이상의 미디어 파일들을 Hello World 프로젝트에 부가하기 위해 부가 제어(546b)를 선택할 수 있다.
편집 창(534) 아래에서의 디바이스 창(538)으로 가면, "My iPad" 디바이스(549)와 같이, 열거된 하나 이상의 디바이스들은 몇몇 구현들에서 개발 클라이언트 애플리케이션에서 개발자에 의해 등록된 다수의 타겟 컴퓨팅 디바이스들을 표시할 수 있다. 몇몇 구현들에서, 개발 클라이언트 애플리케이션은 개발 컴퓨팅 디바이스에 연결된(예를 들면, 유선 또는 무선) 하나 이상의 타겟 컴퓨팅 디바이스들을 인식할 수 있다. 예를 들면, 개발 클라이언트 애플리케이션(예를 들면, 개발 클라이언트 애플리케이션이 플랫폼-특정 컴퓨팅 디바이스 애플리케이션을 생성할 수 있는 플랫폼 상에서 구동하는)과 호환 가능한 타겟 컴퓨팅 디바이스는 개발 컴퓨팅 디바이스에 연결될 때 식별될 수 있다. 예를 들면, 개발 컴퓨팅 디바이스의 USB 포트를 통해 개발 컴퓨팅 디바이스에 타겟 컴퓨팅 디바이스를 연결할 때, 개발 클라이언트 애플리케이션은 타겟 컴퓨팅 디바이스를 인식하며 타겟 컴퓨팅 디바이스에 관한 정보를 들여올 수 있다. 몇몇 구현들에서, 개발 클라이언트 애플리케이션은 식별된 타겟 컴퓨팅 디바이스에 관한 정보의 일부를 특정하기 위한 방법을 개발자에 제공하기 위해 다이얼로그 박스를 개방할 수 있다. 예를 들면, 개발 클라이언트 애플리케이션은 iPad 1.1의 타겟 컴퓨팅 디바이스 모델(549a), 고유 디바이스 식별자 코드(549c), 5.0.1의 플랫폼 운영 체제 버전(549d) 및 애플®의 플랫폼 벤더(549c), 및 명칭(549b)(예를 들면, "My iPad")을 인식할 수 있다. 몇몇 구현들에서, 자동 검출보다는, 개발 클라이언트 애플리케이션은 연결된 타겟 컴퓨팅 디바이스를 위치시키는 것으로 향해질 수 있다. 예를 들면, 사용자 인터페이스(예시되지 않은)에서의 제어는 "연결된 디바이스를 찾도록" 개발 클라이언트 애플리케이션에 지시하기 위해 액세스될 수 있다.
디바이스 창(538)을 갖고 예시되지만, 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션의 개발 동안, 디바이스 창(538)을 포함하는 제 3 스크린 샷(530)의 부분은 임의의 문법 및 연결 에러들의 위치를 찾고 바로 잡을 때 개발자를 도울 수 있는 툴 바로 대체될 수 있다. 예를 들면, 개발자는 편집 창(534)에서 작동할 수 있는 반면, 이하의 메시지 창은 몇몇 구현들에서, 개발되는 코드가 가진 잠재적인 문제점들의 위치를 찾기 위한 내비게이션 원조 뿐만 아니라, 에러들의 표시를 제공한다. 몇몇 구현들에서, 제어는 프로젝트 파일들 내에서 문법 및 잠재적인 링크 에러들을 증명하기 위해 개발자에게 제공될 수 있다. 몇몇 구현들에서, 프로젝트 파일들은 예를 들면, 저장 제어(546c)의 선택시 자동으로 검증될 수 있다.
저장 제어(546c)의 선택은, 몇몇 구현들에서, 스크린 샷(530)에 의해 예시된 사용자 인터페이스의 프리젠테이션을 야기하는 개발 클라이언트 애플리케이션과 통신하는 클라우드 네트워크와 같이, 네트워크 드라이브에 대한 저장된 파일(들)의 복제를 야기할 수 있다. 예를 들면, 파일 내비게이션 창(536) 내에 디스플레이된 파일들(544)은 클라우드 네트워크 리포지터리에 원격으로 위치될 수 있다. 몇몇 구현들에서, 프로젝트 파일들(544)은 예를 들면, 프로젝트 파일들(544)의 개발 동안, 개발 컴퓨팅 디바이스의 하드 드라이브 영역 내에서 국소적으로 저장될 수 있다. 몇몇 구현들에서, 파일들(544)은 구동 제어(546d)의 선택시 클라우드 네트워크로 업로딩될 수 있다. 예를 들면, 크로스-플랫폼 소프트웨어 애플리케이션 파일들(544)은 크로스-프랫폼 소프트웨어 애플리케이션 파일들(544)이 특정한 타겟 컴퓨팅 디바이스 플랫폼 상에서의 배치를 위해 개발 애플리케이션을 생성하기 위해 플랫폼-특정 파일들과 조합될 수 있는 통합 클라우드 환경으로 업로딩될 수 있다.
어느 시점에, 개발자는 프로젝트가 예를 들면 타겟 컴퓨팅 디바이스 상에서 또는 시뮬레이션에서 검사하기 위한 상태에 있음을 결정할 수 있다. 몇몇 구현들에서, 개발자는 온 디바이스 옵션(On Device option)(548a) 및 인 시뮬레이터 옵션(In Simulator option)(548b)을 포함하는 드롭-다운 메뉴 옵션들(548)의 세트를 제공받도록 구동 제어(546d)를 선택할 수 있다. 온 디바이스 옵션(548a)은, 선택될 때, 몇몇 구현들에서, 디바이스 창(538) 내에 열거된 iPad™ 디바이스(549)로의 배치를 위한 애플리케이션을 포함하는 실행가능한 파일을 준비하는 옵션에 대해 보여줄 수 있다. 몇몇 구현들에서, 온 디바이스 옵션(548a)은, 선택될 때, iPad™ 디바이스(549)와 같은 타겟 컴퓨팅 디바이스 상에 설치된 동반 애플리케이션으로의 콘텐트 파일들을 다운로딩하기 위하 저장 위치를 제공하는 옵션을 보여줄 수 있다. 예시된 바와 같이, 인 시뮬레이터 옵션(548b)이 강조될 수 있다. 인 시뮬레이터 옵션(548b)의 선택시, 몇몇 구현들에서, 디바이스 시뮬레이터는 몇몇 예들을 위해, 편집 창(534), 스크린 샷(530)에 인접한 디스플레이, 스크린 샷(530)을 대신한 디스플레이, 또는 부분적으로 스크린 샷(530) 위에 놓인 디스플레이와 같은 디스플레이 영역에 제공될 수 있다.
예를 들면, 도 5d로 가면, 스크린 샷(551)은 시뮬레이터 제어 패널(550), 디바이스 방향 메뉴(552), 및 스마트 폰 스타일 디바이스 시뮬레이션(554)을 포함하는 시뮬레이터와 함께 위에 놓일 수 있다. 스마트 폰 스타일 디바이스 시뮬레이션(554)은, 몇몇 구현들에서, 예를 들면, 파일 내비게이션 창(536)에 열거된 콘텐트 파일들(544) 내에 포함된 정보에 기초하여, 스마트 폰 스타일 디바이스 시뮬레이션(554)의 디스플레이 영역(555)에 "Hello World" 크로스-플랫폼 소프트웨어 프로젝트의 시뮬레이션을 보여줄 수 있다. 예시된 바와 같이, 디스플레이(555)는 제 1 메시지(557a)("Find Me!"), 제 2 메시지(557b)("Say Hello!") 및 제 3 메시지(557c)("Enter your name:")를 특징으로 삼는다. 몇몇 구현들에서, 개발자는 예를 들면, 제어들(558) 중 하나의 선택(예를 들면, 클릭, 마우스-오버 등)을 통해 스마트 폰 디바이스 시뮬레이션(554)과 직접 상호 작용할 수 있다. 하나의 예에서, 개발자는 예를 들면, 개발 컴퓨팅 디바이스에 연결된 키보드를 사용하여, 정보에서의 유형 및 텍스트 박스 제어(558d)를 선택할 수 있다.
몇몇 구현들에서, 시뮬레이터는 타겟 컴퓨팅 디바이스 상에서 구동하는 크로스-플랫폼 소프트웨어 애플리케이션의 기능과 유사하게, 개발 컴퓨팅 디바이스의 디스플레이 영역 상에서 인터페이스를 렌더링하기 위해 윈도우리스 웹-브라우저 프레임워크와 같은 브라우저 엔진 특징을 사용하여 생성될 수 있다.
몇몇 구현들에서, 시뮬레이터는 프리젠테이션 파일 명령어들을 플랫폼-특정 컴퓨팅 디바이스 명령어들로 변환하기 위한 추상화 계층으로 향해지는 API 명령어들을 가로막기 위한 기능들을 포함할 수 있다. 몇몇 예들에서, 센서들, 입력/출력 디바이스들, 및 다른 디바이스-특정 기능들로 향해진 API 명령어들은 시뮬레이터에 의해 가로막혀질 수 있다. 반대로, 몇몇 구현들에서, 시뮬레이터는 디바이스-특정 기능들에 의해 생성될 입력을 제공하기 위해 하나 이상의 기능들을 포함할 수 있다. 몇몇 구현들에서, 시뮬레이터 제어 패널(550)은 방향, 지오로케이션, 카메라, 가속도계, 광 센서, 생물 측정, 및/또는 다른 컴퓨팅 디바이스 플랫폼 기능들을 시뮬레이팅하기 위한 메커니즘들에 대한 액세스를 포함할 수 있다.
몇몇 구현들에서, 시뮬레이터를 론칭할 때, 시뮬레이션 기능은 예를 들면, 개발 클라이언트 애플리케이션을 통해 개발자에 의해 설정된 사용자 옵션들에 기초하여, 특정한 유형의 컴퓨팅 디바이스 플랫폼에 대한 디폴트일 수 있다. 시뮬레이터에 의해 예시된 컴퓨팅 디바이스 플랫폼의 유형은, 몇몇 구현들에서, 디바이스 창(538) 내에 열거된 디바이스(들)에 부분적으로 기초할 수 있다. 예를 들면, 열거된 제 1 디바이스가 스마트 폰의 스타일이라면, 또는 디바이스 창(538)에서의 강조된 디바이스가 스마트 폰이라면, 시뮬레이터는 스마트 폰 유형 디바이스 플랫폼을 디스플레이하는 것에 대한 디폴트일 수 있다. 다른 구현들에서, 디폴트 유형의 컴퓨팅 디바이스 플랫폼에서의 크로스-플랫폼 소프트웨어 애플리케이션의 시뮬레이션을 디스플레이하기보다는, 사용자 인터페이스는 시뮬레이션을 위해 이용가능한 컴퓨팅 디바이스 플랫폼들의 유형들의 둘 이상의 옵션들을 디스플레이하는 인-시뮬레이터 메뉴 옵션(548b)(도 5c에 디스플레이된 바와 같이)의 서브-메뉴를 포함할 수 있다.
몇몇 구현들에서, 개발자는 디바이스 방향 메뉴(552)를 통해 스마트 폰 디바이스 시뮬레이션(554)과 상호 작용할 수 있다. 몇몇 구현들에서, 개발자는 90도 시계 반대 방향만큼 스마트 폰 디바이스 시뮬레이션(554)의 방향을 회전시키기 위한 제 1 제어(560a), 거꾸로 스마트 폰 디바이스 시뮬레이션(554)의 방향을 플립하기위한 제 2 제어(560b), 또는 90도 시계 방향으로 스마트 폰 디바이스 시뮬레이션(554)을 회전시키기 위한 제 3 제어(560c)를 선택할 수 있다.
몇몇 구현들에서, 개발자는 시뮬레이션 제어 창(550)을 통해 상이한 상호 작용 메커니즘들을 액세스할 수 있다. 예시된 바와 같이, 예를 들면, 방향 제어(562a)가 선택될 수 있다. 방향 제어(562a) 아래에, 지오로케이션 제어(562b)가, 선택될 때, 지오로케이션 메뉴(도 5e에 관하여 추가로 설명되는 바와 같이)로 디바이스 방향 메뉴(552)를 대신할 수 있다. 시뮬레이션 제어 창(550)의 최하부에, 디바이스 선택 제어(562c)가, 선택될 때, 스마트 폰 디바이스 시뮬레이션(554)으로부터 몇몇 예들에서, 태블릿 컴퓨팅 디바이스 시뮬레이션, PDA 디바이스 시뮬레이션, 또는 멀티미디어 플레이어 시뮬레이션과 같은 상이한 컴퓨팅 디바이스 유형 또는 컴퓨팅 디바이스 플랫폼 시뮬레이션으로 스위칭하기 위한 기회를 개발자에 제공할 수 있다.
도 5e로 가면, 스크린 샷(551)은, 몇몇 구현들에서, 시뮬레이션 제어 창(550), 디바이스 지오로케이션 메뉴(564), 및 PDA 스타일 디바이스 시뮬레이션(566)을 포함하는 시뮬레이터에 의해 오버레이될 수 있다. 몇몇 구현들에서, PDA 스타일 디바이스 시뮬레이션(566)은 디바이스 선택 제어(562c)를 사용하여 선택될 수 있다. 예를 들면, 디바이스 선택 제어(562c)의 선택시, 개발자는 시뮬레이터에 의한 프리젠테이션을 위해 디바이스 플랫폼의 유형을 선택하기 위해 다이얼로그 박스를 제공받을 수 있다. 몇몇 구현들에서, PDA 스타일 디바이스 시뮬레이션(566)은 새로운 디바이스(예를 들면, 디바이스 창(538)에 예시된 바와 같이 "My Bberry" 디바이스(568))의 부가에 기초하여 제공될 수 있다.
PDA 스타일 디바이스 시뮬레이션(566)의 디스플레이 영역(570)은 도 5d의 스마트 폰 스타일 디바이스 시뮬레이션(554) 상에 디스플레이된 시뮬레이션과 유사한 정보를 포함할 수 있다. 예를 들면, 제어들(558)은 도 5d의 스마트 폰 스타일 디바이스 시뮬레이션(554) 상에 예시된 바와 같이 디스플레이 영역(570)에 유사한 조직으로 배열될 수 있다. 그러나, 수정들이, 몇몇 예들에서, 스크린 크기, 상대적인 스크린 치수들, 스크린 분해능, 컬러 깊이, 이용가능한 시스템 폰트들, 또는 스마트 폰 스타일 디바이스 및 PDA 스타일 디바이스 사이에 내재하는 다른 시스템 차이들에 기초하여 존재할 수 있다. 예를 들면, PDA 스타일 디바이스 시뮬레이션(566)은 스마트 폰 스타일 디바이스 시뮬레이션(554)(예를 들면, 도 5d에 도시된 바와 같이)보다 훨씬 더 작은 스크린 면적을 갖는 것으로 보인다. 몇몇 구현들에서, 개발자는 렌더링이 디바이스에서 디바이스로 적절히 나타나는(예를 들면, 중첩 없고, 판독하기 어렵거나 부분적으로 스크린-외 정보 등) 것을 증명하기 위해 다양한 컴퓨팅 디바이스 유형들의 시뮬레이션들 시 기능을 검토할 수 있다.
PDA 스타일 디바이스 시뮬레이션(566)의 디스플레이 영역(570)은 제 1 메시지(557a)("Find Me!") 다음에 활성화 제어(558c)를 포함할 수 있다. 몇몇 구현들에서, 활성화 제어(558c)의 선택은 시뮬레이팅된 컴퓨팅 디바이스의 지오로케이션 기능을 활성화시킬 수 있어서, 시뮬레이팅된 컴퓨팅 디바이스의 현재 위치를 도출한다. 지오로케이션 다이얼로그 박스(564)를 사용하여, 몇몇 구현들에서, 개발자는 시뮬레이팅된 컴퓨팅 디바이스의 하나 이상의 지오로케이션 센서들에 대한 입력을 모방할 수 있다. 예를 들면, 지오로케이션 다이얼로그 박스(564)는 위도 입력 박스(572a), 경도 입력 박스(572b), 고도 입력 박스(572c), 정확도 입력 박스(572d), 및 고도 정확도 입력 박스(572c)와 같은, 위치 결정 입력 박스들(572)을 포함할 수 있다. 부가적으로, 지오로케이션 박스 다이얼로그(564)는 속도 입력 박스(574a) 및 헤딩 입력 박스(574b)와 같은, 움직임 입력 박스들(574)을 포함할 수 있다. 몇몇 구현들에서, 지오로케이션 다이얼로그 박스(564)는 특정한 위치를 선택하기 위한 맵(576)을 포함할 수 있다. 헤딩 정보 또는 맵 내비게이션은, 몇몇 구현들에서, 나침반 제어(578)를 사용하여 제공될 수 있다.
도 5f로 가면, 스크린 샷(551)은 시뮬레이션 제어 창(550) 및 스마트 폰 스타일 디바이스 시뮬레이션(554)을 포함하는 시뮬레이터와 함께 위에 놓일 수 있다. 스마트 폰 스타일 디바이스 시뮬레이션(554)의 디스플레이 영역(555)에 예시된 바와 같이, 이전에 "Say Hello!"를 디스플레이한(예를 들면, 도 5d 및 도 5e에 디스플레이된 바와 같이) 제 2 메시지(557b)는 "파일이 저장될 때 자동-업데이트를 변경하시오(Changes Auto-Update When the File is Saved!")를 서술하도록 업데이트될 수 있다. 메뉴 바(532)로 가면, 저장 제어(546c)는, 몇몇 구현들에서, 드롭-다운 메뉴(580)에 예시된 바와 같이, 콘텐트 파일들(544) 중 하나 이상에 대해 이루어진 수정들을 저장하기 위해 선택될 수 있다. 몇몇 구현들에서, 시뮬레이터에서 크로스-플랫폼 소프트웨어 애플리케이션의 성능을 검사하는 동안, 개발자는 하나 이상의 콘텐트 파일들(544)에 대한 수정들을 적용할 수 있다. 예를 들면, 개발자는 도 5f에 예시된 바와 같이 편집 창(534)에서 열린, 파일(style.css)(544d)에 대한 하나 이상의 변경들을 적용할 수 있다. 파일(style.css)(544d)에 대한 변경들을 저장할 때, 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션의 시뮬레이션은 변화를 반영하기 위해 자동으로 업데이트될 수 있다. 예를 들면, 프로그램을 리셋하거나 래로딩하지 않고, 업데이트된(및 훨씬 더 긴) 제 2 메시지(557b)에 대한 룸을 제공하기 위해 제 3 메시지(557c) 뿐만 아니라, 제어들(558a, 558b, 및 558d)의 재배치와 같은, 스마트 폰 스타일 디바이스 시뮬레이션(554)의 디스플레이 영역(555) 내에 예시된 하나 이상의 아이템들에 대한 즉각적인 수정이 디스플레이 영역(555)에서의 개발자에 제공될 수 있다. 몇몇 구현들에서, 개발 클라이언트 애플리케이션 또는 크로스-플랫폼 소프트웨어 애플리케이션의 시뮬레이션 내에서의 시뮬레이션 기능은 스마트 폰 스타일 디바이스 시뮬레이션(554)의 디스플레이 영역(555)의 즉각적인 재생성을 야기하기 위해 개발 컴퓨팅 디바이스의 디스플레이 영역의 스크린 리프레시를 수행할 수 있다.
몇몇 구현들에서, 유사한 메커니즘이 타겟 컴퓨팅 디바이스 상에서 검사될 때 크로스-플랫폼 소프트웨어 애플리케이션의 플랫폼-특정 버전을 업데이트하기 위해 이용가능할 수 있다. 예를 들면, 하나 이상의 콘텐트 파일들(544)에 대한 하나 이상의 변화들을 저장할 때, 개발 클라이언트 애플리케이션 또는 개발 애플리케이션(예를 들면, 웹 클라이언트 애플리케이션을 통해)은 타겟 컴퓨팅 디바이스로 업데이트된 콘텐트 파일들을 푸싱할 수 있으며, 여기에서 크로스-플랫폼 소프트웨어 애플리케이션의 플랫폼-특정 버전은 새로운 콘텐트 파일들을 인식하고 근-실 시간으로 개발자에 변화들을 제공하기 위해 타겟 컴퓨팅 디바이스의 디스플레이 영역을 리프레시하도록 구성된 업데이트 에이전트 또는 동반 애플리케이션을 포함할 수 있다. 또 다른 예에서, 통합 클라우드 환경은 타겟 컴퓨팅 디바이스에 다운로드를 위한 새로운 및/또는 업데이트된 콘텐트 파일들을 제공할 수 있다.
도 5g로 가면, 크로스-플랫폼 소프트웨어 애플리케이션의 이러한 검사를 수행하기 위해, 몇몇 구현들에서, 스크린 샷(590)에 예시된 바와 같이, 구동 제어(546d)가 선택될 수 있으며, 온 디바이스 드롭-다운 메뉴 옵션(548a)이 활성화될 수 있다. 몇몇 구현들에서, 온 디바이스 드롭-다운 메뉴 옵션(548a)의 선택은 하나 이상의 플랫폼-특정 애플리케이션 실행가능 파일들(예를 들면, 실행가능한 애플리케이션 파일, 설치 파일 등)이 하나 이상의 타겟 컴퓨팅 디바이스들로의 다운로딩을 위해 생성되게 할 수 있다. 몇몇 구현들에서, 예를 들면, 디바이스 창(538)에 열거된 "My iPad" 디바이스(549) 및 "My Bberry" 디바이스(568)와 같은 각각의 타겟 컴퓨팅 디바이스가 각각의 연관된 컴퓨팅 디바이스 플랫폼에 의해 개발 디바이스로서 증명되고, 프로비저닝되거나 그 외 허가될 수 있다. 몇몇 구현들에서, 온 디바이스 드롭-다운 메뉴 옵션(548a)의 선택 시, 애플리케이션 실행가능한 파일들은 디바이스 창(538) 내에 열거된 모든 타겟 컴퓨팅 디바이스들을 위해 생성될 수 있다. 다른 구현들에서, 온 디바이스 드롭-다운 메뉴 옵션(548a)의 선택 시, 애플리케이션 실행가능 파일들은 디바이스 창(538) 내에서 선택된 임의의 타겟 컴퓨팅 디바이스들(예를 들면, 도 5g의 디바이스 창(538)에 예시된 바와 같이, "My iPad" 디바이스(549) 및 "My Bberry" 디바이스(568) 양쪽 모두)에 대해 생성될 수 있다.
몇몇 구현들에서, 애플리케이션 실행가능 파일들의 생성은 통합 클라우드 환경에서 발생할 수 있다. 예를 들면, Hello World 프로젝트 디렉토리(540)에 저장된 콘텐트 파일들(542)은 클라우드 네트워크로 업로딩되며 각각의 타겟 컴퓨팅 디바이스 플랫폼에 대한 플랫폼-특정 파일들과 조합될 수 있다. 몇몇 구현들에서, 애플리케이션 실행가능 파일들은 하나 이상의 타겟 컴퓨팅 디바이스들로의 분배를 위해 개발 컴퓨팅 디바이스 상에서 임시 디렉토리로 다운로딩될 수 있다.
애플리케이션 실행가능 파일들은, 몇몇 구현들에서, 유선 연결을 통해 타겟 컴퓨팅 디바이스들에 분배될 수 있다. 몇몇 구현들에서, 애플리케이션 실행가능 파일들은 예를 들면, 다수의 테더링된 USB 연결들을 통해, 동시에 각각의 타겟 컴퓨팅 디바이스로 푸싱될 수 있다. 몇몇 구현들에서, 애플리케이션 실행가능 파일들은 예를 들면 유선 또는 무선 연결을 통해 각각의 타겟 컴퓨팅 디바이스에 순차적으로 분배될 수 있다.
몇몇 구현들에서, 동반 애플리케이션은 하나 이상의 타겟 컴퓨팅 디바이스들 상에서 설치될 수 있다. 동반 애플리케이션과 함께 설치된 타겟 컴퓨팅 디바이스들에 대한 실행가능한 파일을 형성하기보다는, 몇몇 구현들에서, 통합 클라우드 환경은 타겟 컴퓨팅 디바이스로의 다운로드를 위해 콘텐트 파일들의 세트를 제공할 수 있다. 예를 들면, 동반 애플리케이션은 콘텐트 파일들을 수신하며 개발자로 하여금 동반 애플리케이션 셸 내에서 개발 애플리케이션 기능을 실행할 수 있게 할 것이다.
도 5h로 가면, 온 디바이스 드롭-다운 메뉴 옵션(548a)의 선택 후, 팝-업 창(592)이 스크린 샷(590) 위에 놓일 수 있다. 몇몇 구현들에서, 팝-업 창(592) 내에서, QR 코드(594)가 "당신의 디바이스 상에 모바일 패키지를 설치하기 위해 다음의 QR 코드를 스캔하시오"를 사용자에게 지시하는 메시지(595)와 함께 제공될 수 있다. 몇몇 구현들에서, 타겟 컴퓨팅 디바이스의 스캐너 기능은 QR 코드(594)를 스캔하며 그 안에 코딩된 저장 위치를 결정하기 위해 사용될 수 있다. QR 코드(594)를 제공하기보다는, 다른 구현들에서, 텍스트, 하이퍼링크, URL, 또는 개발 컴퓨팅 디바이스의 디스플레이 영역에 저장 위치를 제공하는 다른 형태가 사용될 수 있다. 몇몇 예들에서, 저장 위치는 네트워크 어드레스 또는 URL을 포함할 수 있다.
몇몇 구현들에서, QR 코드(594)는 몇몇 예들에서, 개발자와 연관된 하나 이상의 크로스-플랫폼 소프트웨어 애플리케이션 프로젝트들을 식별하는 애플리케이션 식별자(예를 들면, 콘텐트 파일들을 포함하는 프로젝트를 포함한), 허가받은 타겟 컴퓨팅 디바이스 정보(예를 들면, 개발자에 의해 개발을 위해 프로비저닝된 타겟 컴퓨팅 디바이스들의 세트를 고유하게 식별하는 정보), 및 콘텐트 파일들을 검색하기 위한 인증 정보와 같은 부가적인 정보를 포함할 수 있다. 몇몇 구현들에서, 동반 애플리케이션은 저장 위치로부터 콘텐트 파일들을 검색할 때 부가적인 정보의 일부를 사용하도록 구성될 수 있다.
팝-업 창(592) 내에 예시된 바와 같이, QR 코드(594) 위에, 드롭-다운 메뉴(596)가, 몇몇 구현들에서, 개발 애플리케이션을 위한 타겟 컴퓨팅 디바이스 플랫폼을 선택하기 위한 기회를 사용자에게 제공할 수 있다. 몇몇 구현들에서, 하나 이상의 플랫폼-특정 파일들이 제공될 수 있다. 드롭-다운 메뉴(596)를 통해 타겟 컴퓨팅 디바이스 플랫폼을 제공함으로써, 개발자는 임의의 플랫폼-특정 파일들이 QR 코드(594)로 코딩된 저장 위치에서 이용가능하다는 것을 보장할 수 있다. 몇몇 구현들에서, 개발자는 예를 들면, 체크 박스(597)를 선택함으로써 디폴트 형성 플랫폼으로서 드롭-다운 메뉴(596) 내에 선택된 타겟 컴퓨팅 디바이스 플랫폼을 설정할 수 있다.
팝-업 윈도우(592) 내에 예시된 바와 같이, QR 코드(594) 아래에, 하이퍼링크들(598, 599)의 세트가, 몇몇 구현들에서, 개발 애플리케이션에 대한 검사 디바이스로서 타겟 컴퓨팅 디바이스를 구성하기 위한 부가적인 옵션들을 사용자에게 제공할 수 있다. 몇몇 구현들에서, "프로비전들을 사용하고 싶어(I want to use provisions)"로 라벨링된 제 1 하이퍼링크(598)가, 선택될 때, 이전에 설명된 바와 같이, 하나 이상의 타겟 컴퓨팅 디바이스들에 대한 프로비전을 위한 개발 애플리케이션 실행 파일을 형성하기 위한 기회를 사용자에게 제공할 수 있다.
몇몇 구현들에서, "설치된 동반 앱을 갖고 있지 않다(I don't have the companion app installed)"라고 라벨링된 제 2 하이퍼링크(599)는, 선택될 때, 어떻게 동반 애플리케이션을 액세스하고 설치하는지에 대한 지시들을 사용자에게 제공할 수 있다. 몇몇 구현들에서, 사용자는 동반 애플리케이션의 저장 위치를 포함하는 QR 코드(예시되지 않음)를 제공받을 수 있다. 사용자는, 다른 구현들에서, 동반 애플리케이션 설치 실행 파일의 사본을 검색하기 위해 하나 이상의 하이퍼링크들, URL들, 또는 다른 저장 위치 정보를 제공받을 수 있다.
도 5g로 가면, 개발 애플리케이션이 타겟 컴퓨팅 디바이스들의 각각 상에서 구동하는 동안, 몇몇 구현들에서, 개발자는 프리젠테이션 파일들(544) 중 하나 이상을 업데이트할 수 있다. 몇몇 구현들에서, 개발자는 새로운 콘텐트 파일을 부가하고 그것을 기존의 프리젠테이션 파일들(544) 중 하나로 연결할 수 있다.
몇몇 구현들에서, 콘텐트 파일들의 업데이트들 및/또는 그것에 대한 부가들은 업데이트 에이전트를 포함하는 개발 애플리케이션을 구동하는 타겟 컴퓨팅 디바이스들의 각각으로 푸싱될 수 있다. 몇몇 구현들에서, 하나 이상의 콘텐트 파일들에 대한 업데이트들 및/또는 그것의 부가들은 예를 들면, 저장 제어(546c)를 사용하여 콘텐트 파일(들)을 저장할 때 타겟 컴퓨팅 디바이스들로 자동으로 푸싱될 수 있다. 몇몇 구현들에서, 디바이스 창(538) 내에서 선택된 단지 이들 타겟 컴퓨팅 디바이스들은 저장 제어(546c)의 선택을 통해 자동으로 그것들로 푸싱된 콘텐트 파일들을 가질 수 있다. 몇몇 구현들에서, 콘텐트 파일들 중 하나 이상에 대한 업데이트들은 개발자에 의한 수동 노력을 통해 선택된 타겟 컴퓨팅 디바이스(549, 568)로 푸싱될 수 있다(예를 들면, 선택된 타겟 컴퓨팅 디바이스(들) 상에서 우 클릭하며 업데이트된 콘텐트 파일들을 전송하기 위한 메뉴 옵션을 선택함으로써). 특정한 예에서, 파일(style.css)(544d)에 대한 수정이 유선 또는 무선 연결을 통해 "My iPad" 디바이스(549) 및 "My Bberry" 디바이스(568) 양쪽 모두로 동시에 푸싱될 수 있다. 몇몇 구현들에서, 타겟 컴퓨팅 디바이스들 중 하나가 물리적으로 개발 컴퓨팅 디바이스에 연결되지 않는다면, 타겟 컴퓨팅 디바이스는 플랫폼-특정 개발 애플리케이션에 내장된 고유 식별자에 의해 개발 클라이언트 애플리케이션에 의해 무선 네트워크 상에서 인식될 수 있다.
몇몇 구현들에서, 콘텐트 파일들의 업데이트들 및/또는 그것에 대한 부가들이 예를 들면, 통합 클라우드 환경을 통해 동반 애플리케이션을 구동하는 타겟 컴퓨팅 디바이스들의 각각으로 다운로딩될 수 있다. 몇몇 구현들에서, 콘텐트 파일들 중 하나 이상은 타겟 컴퓨팅 디바이스로의 다운로드를 위한 저장 위치로 전달될 수 있다. 예를 들면, 업데이트되고/업데이트되거나 부가된 콘텐트 파일들은 콘텐트 파일들을 타겟 컴퓨팅 디바이스(들)에 공급하기 위해 처음에 사용된 저장 위치로 전달될 수 있다. 몇몇 구현들에서, 저장 위치는 타겟 컴퓨팅 디바이스 상에서 실행한 개발자 또는 동반 애플리케이션에 전달될 수 있다. 예를 들면, 저장 위치를 포함하는 QR 코드가 도 5h에 관하여 이전에 설명된 바와 같이 개발 컴퓨팅 디바이스의 디스플레이 영역에 공급될 수 있다.
몇몇 구현들에서, 사용자는 콘텐트 파일들의 다운로드를 수동으로 요청할 수 있다. 예를 들면, 수동 요청은 타겟 컴퓨팅 디바이스의 사용자 인터페이스를 통해 제출될 수 있다. 예를 들면, 사용자는 타겟 컴퓨팅 디바이스로 업데이트된 콘텐트 파일들의 다운로드를 개시하기 위해, 특정한 터치 패턴 또는 스위핑 패턴과 같은, 제스처를 입력할 수 있다. 또 다른 예에서, 사용자는 선택될 때, 콘텐트 파일들의 다운로드를 개시할 수 있는 메뉴 옵션을 획득하기 위해 타겟 컴퓨팅 디바이스 상에서 제어를 선택할 수 있다.
몇몇 구현들에서, 콘텐트 파일들은 타겟 컴퓨팅 디바이스로 푸싱될 수 있다. 예를 들면, 동반 애플리케이션은 업데이트된 콘텐트 파일들에 대한 저장 위치를 모니터링하기 위한 기능을 포함할 수 있다. 업데이트된 콘텐트 파일들의 인식 시, 예를 들면, 동반 애플리케이션은 콘텐트 파일들을 자동으로 검색할 수 있다.
도 6에 도시된 바와 같이, 크로스-플랫폼 소프트웨어 애플리케이션의 개발을 위한 대표적인 클라우드 컴퓨팅 환경(600)의 구현이 도시되고 설명된다. 클라우드 컴퓨팅 환경(600)은 하나 이상의 리소스 제공자들(602a, 602b, 602c)(총괄하여, 602)을 포함할 수 있다. 각각의 리소스 제공자(602)는 컴퓨팅 리소스들을 포함할 수 있다. 몇몇 구현들에서, 컴퓨팅 리소스들은 데이터를 프로세싱하기 위해 사용된 임의의 하드웨어 및/또는 소프트웨어를 포함할 수 있다. 예를 들면, 컴퓨팅 리소스들은 알고리즘들, 컴퓨터 프로그램들, 및/또는 컴퓨터 애플리케이션들을 실행할 수 있는 하드웨어 및/또는 소프트웨어를 포함할 수 있다. 몇몇 구현들에서, 대표적인 컴퓨팅 리소스들은 저장 및 검색 능력들을 가진 애플리케이션 서버들 및/또는 데이터베이스들을 포함할 수 있다. 각각의 리소스 제공자(602)는 클라우드 컴퓨팅 환경(600)에서 임의의 다른 리소스 제공자(602)에 연결될 수 있다. 몇몇 구현들에서, 리로스 제공자들(602)은 컴퓨터 네트워크(608)를 통해 연결될 수 있다. 각각의 리소스 제공자(602)는 컴퓨터 네트워크(608)를 통해 하나 이상의 컴퓨팅 디바이스(604a, 604b, 604c)(총괄하여 604)에 연결될 수 있다.
클라우드 컴퓨팅 환경(600)은 리소스 관리기(606)를 포함할 수 있다. 리소스 관리기(606)는 컴퓨터 네트워크(608)를 통해 리소스 제공자들(602) 및 컴퓨팅 디바이스들(604)에 연결될 수 있다. 몇몇 구현들에서, 리소스 관리기(606)는 하나 이상의 컴퓨팅 디바이스들(604)로의 하나 이상의 리소스 제공자들(602)에 의한 컴퓨팅 리소스들의 프로비전을 용이하게 할 수 있다. 리소스 관리기(606)는 특정한 컴퓨팅 디바이스(604)로부터 컴퓨팅 리소스에 대한 요청을 수신할 수 있다. 리소스 관리기(606)는 컴퓨팅 디바이스(604)에 의해 요청된 컴퓨팅 리소스를 제공할 수 있는 하나 이상의 리소스 제공자들(602)을 식별할 수 있다. 리소스 관리기(606)는 컴퓨팅 리소스를 제공하기 위해 리소스 제공자(602)를 선택할 수 있다. 리소스 관리기(606)는 리소스 제공자(602) 및 특정한 컴퓨팅 디바이스(604) 사이에서의 연결을 가능하게 할 수 있다. 몇몇 구현들에서, 리소스 관리기(606)는 특정한 리소스 제공자(602) 및 특정한 컴퓨팅 디바이스(604) 사이에서 연결을 수립할 수 있다. 몇몇 구현들에서, 리소스 관리기(606)는 요청된 컴퓨팅 리소스를 가진 특정한 리소스 제공자(602)로 특정한 컴퓨팅 디바이스(604)를 리디렉팅할 수 있다.
도 7은 본 개시에서 설명된 기술들을 구현하기 위해 사용될 수 있는 컴퓨팅 디바이스(700) 및 이동 컴퓨팅 디바이스(750)의 일 예를 도시한다. 컴퓨팅 디바이스(700)는 랩탑들, 데스크탑들, 워크스테이션들, 개인 휴대용 정보 단말기들, 서버들, 블레이드 서버들, 메인프레임들, 및 다른 적절한 컴퓨터들과 같이, 다양한 형태들의 디지털 컴퓨터들을 표현하도록 의도된다. 이동 컴퓨팅 디바이스(750)는 개인 휴대용 정보 단말기들, 셀룰러 전화기들, 스마트-폰들, 및 다른 유사한 컴퓨팅 디바이스들과 같이, 다양한 형태들의 이동 디바이스들을 표현하도록 의도된다. 여기에 도시된 구성요소들, 그것들의 연결들 및 관계들, 및 그것들의 기능들은 단지 예들이도록 의도되며, 제한적인 것으로 의도되지 않는다.
컴퓨팅 디바이스(700)는 프로세서(702), 메모리(704), 저장 디바이스(706), 메모리(704) 및 다수의 고속 확장 포트들(710)에 연결한 고속 인터페이스(708), 및 저속 확장 포트(714) 및 저장 디바이스(706)에 연결한 저속 인터페이스(712)를 포함한다. 프로세스(702), 메모리(704), 저장 디바이스(706), 고속 인터페이스(708), 고속 확장 포트들(710), 및 지속 인터페이스(712)의 각각은 다양한 버스들을 사용하여 상호 연결되며 공통 마더보드 상에 또는 다른 방식들로 적절하게 장착될 수 있다. 프로세서(702)는 고속 인터페이스(708)에 결합된 디스플레이(716)와 같이, 외부 입력/출력 디바이스 상에서의 GUI를 위한 그래픽 정보를 디스플레이하기 위해 메모리(704)에 또는 저장 디바이스(706) 상에 저장된 지시들을 포함한, 컴퓨팅 디바이스(700) 내에서의 실행을 위한 지시들을 프로세싱할 수 있다. 다른 구현들에서, 다수의 프로세서들 및/또는 다수의 버스들은, 다수의 메모리들 및 유형들의 메모리와 함께, 적절하게 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들이, 필요한 동작들의 부분들을 제공하는 각각의 디바이스와(예를 들면, 서버 뱅크, 블레이드 서버들의 그룹, 또는 다중-프로세서 시스템으로서) 연결될 수 있다.
메모리(704)는 컴퓨팅 디바이스(700) 내에 정보를 저장한다. 몇몇 구현들에서, 메모리(704)는 휘발성 메모리 유닛 또는 유닛들이다. 몇몇 구현들에서, 메모리(704)는 비-휘발성 메모리 유닛 또는 유닛들이다. 메모리(704)는 또한 자기 또는 광 디스크와 같은, 또 다른 형태의 컴퓨터-판독가능한 매체일 수 있다.
저장 디바이스(706)는 컴퓨팅 디바이스(700)에 대한 대량 저장을 제공할 수 있다. 몇몇 구현들에서, 저장 디바이스(706)는 저장 영역 네트워크 또는 다른 구성들에서의 디바이스들을 포함하여, 플로피 디스크 디바이스, 하드 디스크 디바이스, 광 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 고체 상태 메모리 디바이스, 또는 디바이스들의 어레이와 같은, 컴퓨터-판독가능한 매체일 수 있거나 이를 포함할 수 있다. 지시들은 정보 캐리어에 저장될 수 있다. 지시들이, 하나 이상의 프로세싱 디바이스들(예를 들면, 프로세서(702))에 의해 실행될 때, 상기 설명된 것들과 같은, 하나 이상의 방법들을 수행한다. 지시들은 또한 컴퓨터- 또는 기계-판독가능한 매체들(예를 들면, 메모리(704), 저장 디바이스(706), 또는 프로세서 상에서의 메모리(702))과 같은 하나 이상의 저장 디바이스들에 의해 저장될 수 있다.
고속 인터페이스(708)는 컴퓨팅 디바이스(700)를 위한 대역폭-집중 동작들을 관리하는 반면, 저속 인터페이스(712)는 보다 낮은 대역폭-집중 동작들을 관리한다. 이러한 기능들의 할당은 단지 예이다. 몇몇 구현들에서, 고속 인터페이스(708)는 메모리(704), 디스플레이(716)(예를 들면, 그래픽 프로세서 또는 가속도계를 통해), 및 다양한 확장 카드들(도시되지 않음)을 수용할 수 있는, 고속 확장 포트들(710)에 결합된다. 상기 구현에서, 저속 인터페이스(712)는 저장 디바이스(706) 및 저속 확장 포트(714)에 결합된다. 다양한 통신 포트들(예를 들면, USB, 블루투스®, 무선 이더넷)을 포함할 수 있는 저속 확장 포트(714)가 키보드, 포인팅 디바이스, 스캐너, 또는 스위치 또는 라우터와 같은 네트워킹 디바이스와 같은 하나 이상의 입력/출력 디바이스들에, 예를 들면 네트워크 어댑터를 통해 결합될 수 있다.
컴퓨팅 디바이스(700)는 도면에 도시된 바와 같이, 다수의 상이한 형태들로 구현될 수 있다. 예를 들면, 그것은 표준 서버(720)로서, 또는 이러한 서버들의 그룹으로 다수 회 구현될 수 있다. 또한, 그것은 랩탑 컴퓨터(722)와 같은 개인용 컴퓨터에 구현될 수 있다. 그것은 또한 랙 서버 시스템(724)으로서 구현될 수 있다. 대안적으로, 컴퓨팅 디바이스(700)로부터의 구성요소들은 이동 컴퓨팅 디바이스(750)와 같이, 이동 디바이스(도시되지 않음)에서의 다른 구성요소들과 조합될 수 있다. 이러한 디바이스들의 각각은 컴퓨팅 디바이스(700) 및 이동 컴퓨팅 디바이스(750) 중 하나 이상을 포함할 수 있으며, 전체 시스템은 서로와 통신하는 다수의 컴퓨팅 디바이스들로 이루어질 수 있다.
이동 컴퓨팅 디바이스(750)는 다른 구성요소들 중에서, 프로세서(752), 메모리(764), 디스플레이(754)와 같은 입력/출력 디바이스, 통신 인터페이스(766), 및 트랜시버(768)를 포함한다. 이동 컴퓨팅 디바이스(750)는 또한 부가적인 저장을 제공하기 위해, 마이크로-드라이브 또는 다른 디바이스와 같은, 저장 디바이스를 제공받을 수 있다. 프로세서(752), 메모리(764), 디스플레이(754), 통신 인터페이스(766), 및 트랜시버(768)의 각각은 다양한 버스들을 사용하여 상호 연결되며, 구성요소들 중 여러 개가 공통 마더보드 상에 또는 다른 방식들로 적절하게 장착될 수 있다.
프로세서(752)는 메모리(764)에 저장된 지시들을 포함하여, 이동 컴퓨팅 디바이스(750) 내에서 지시들을 실행할 수 있다. 프로세서(752)는 별개의 및 다수의 아날로그 및 디지털 프로세서들을 포함하는 칩들의 칩셋으로서 구현될 수 있다. 프로세서(752)는, 예를 들면, 사용자 인터페이스들의 제어, 이동 컴퓨팅 디바이스(750)에 의해 구동된 애플리케이션들, 및 이동 컴퓨팅 디바이스(750)에 의한 무선 통신과 같이, 이동 컴퓨팅 디바이스(750)의 다른 구성요소들의 조정을 위해 제공할 수 있다.
프로세서(752)는 디스플레이(754)에 결합된 디스플레이 인터페이스(756) 및 제어 인터페이스(758)를 통해 사용자와 통신할 수 있다. 디스플레이(754)는 예를 들면, TFT(박막-트랜지스터 액정 디스플레이) 디스플레이 또는 OLED(유기 발광 다이오드) 디스플레이, 또는 다른 적절한 디스플레이 기술일 수 있다. 디스플레이 인터페이스(756)는 그래픽 및 다른 정보를 사용자에게 보여주도록 디스플레이(754)를 구동하기 위한 적절한 회로를 포함할 수 있다. 제어 인터페이스(758)는 사용자로부터 명령어들을 수신하며 제출을 위한 그것들을 프로세서(752)로 변환할 수 있다. 또한, 외부 인터페이스(762)는 프로세서(752)와의 통신을 제공할 수 있어서, 다른 디바이스들과의 이동 컴퓨팅 디바이스(750)의 근거리 통신을 가능하게 한다. 외부 인터페이스(762)는 예를 들면, 몇몇 구현들에서 유선 통신을 위해, 또는 다른 구현들에서 무선 통신을 위해 제공할 수 있으며, 다수의 인터페이스들이 또한 사용될 수 있다.
메모리(764)는 이동 컴퓨팅 디바이스(750) 내에 정보를 저장한다. 메모리(764)는 컴퓨터-판독가능한 매체 또는 미디어, 휘발성 메모리 유닛 또는 유닛들, 또는 비-휘발성 메모리 유닛 또는 유닛들 중 하나 이상으로서 구현될 수 있다. 확장 메모리(774)가 또한 제공될 수 있으며 예를 들면, SIMM(Single In Line Memory Module) 카드 인터페이스를 포함할 수 있는, 확장 인터페이스(772)를 통해 이동 컴퓨팅 디바이스(750)에 연결될 수 있다. 확장 메모리(774)는 이동 컴퓨팅 디바이스(750)를 위한 여분의 저장 공간을 제공할 수 있거나, 이동 컴퓨팅 디바이스(750)를 위한 애플리케이션들 또는 다른 정보를 또한 저장할 수 있다. 구체적으로, 확장 메모리(774)는 상기 설명된 프로세스들을 실행하거나 보완하기 위해 지시들을 포함할 수 있으며, 보안 정보를 또한 포함할 수 있다. 따라서, 예를 들면, 확장 메모리(774)는 이동 컴퓨팅 디바이스(750)에 대한 보안 모듈로서 제공될 수 있으며, 이동 컴퓨팅 디바이스(750)의 안전한 사용을 허용하는 지시들을 갖고 프로그래밍될 수 있다. 또한, 보안 애플리케이션들은 해킹 가능하지 않은 방식으로 SIMM 카드 상에 식별 정보를 위치시키는 것과 같이, 부가적인 정보와 함께, SIMM 카드들을 통해 제공될 수 있다.
메모리는, 예를 들면, 이하에 논의된 바와 같이, 플래시 메모리 및/또는 NVRAM 메모리(비-휘발성 랜덤 액세스 메모리)를 포함할 수 있다. 몇몇 구현들에서, 지시들은 상기 지시들이 하나 이상의 프로세싱 디바이스들(예를 들면, 프로세서(752))에 의해 실행될 때, 상기 설명된 것들과 같이, 하나 이상의 방법들을 수행하는 정보 캐리어에 저장된다. 지시들은 또한 하나 이상의 컴퓨터- 또는 기계-판독가능한 매체들(예를 들면, 메모리(764), 확장 메모리(774), 또는 프로세서(752) 상에서의 메모리)과 같은, 하나 이상의 저장 디바이스들에 의해 저장될 수 있다. 몇몇 구현들에서, 지시들은 예를 들면, 트랜시버(768) 또는 외부 인터페이스(762)를 통해, 전파 신호에서 수신될 수 있다.
이동 컴퓨팅 디바이스(750)는, 필요할 곳에 디지털 신호 프로세싱 회로를 포함할 수 있는 통신 인터페이스(766)를 통해 무선으로 전달할 수 있다. 통신 인터페이스(766)는 다른 것들 중에서, GSM 음성 호출들(이동 통신들을 위한 전역적 시스템), SMS(단문 메시지 서비스), EMS(강화된 메시징 서비스) 또는 MMS 메시징(멀티미디어 메시징 서비스), CDMA(코드 분할 다중 액세스), TDMA(시간 분할 다중 액세스), PDC(개인용 디지털 셀룰러), WCDMA(광대역 코드 분할 다중 액세스), CDMA2000, 또는 GPRS(일반 패킷 라디오 서비스)와 같은, 다양한 모드들 또는 프로토콜들 하에서 통신들을 위해 제공할 수 있다. 이러한 통신은, 예를 들면, 라디오-주파수를 사용하여 트랜시버(768)를 통해 발생할 수 있다. 또한, 단거리 통신은, 블루투스®, Wi-Fi™, 또는 다른 이러한 트랜시버(도시되지 않음)를 사용하여서와 같이, 발생할 수 있다. 또한, GPS(전역적 위치 결정 시스템) 수신기 모듈(770)은 부가적인 내비게이션- 및 위치-관련 무선 데이터를 이동 컴퓨팅 디바이스(750)에 제공할 수 있으며, 이것은 이동 컴퓨팅 디바이스(750) 상에서 구동하는 애플리케이션들에 의해 적절하게 사용될 수 있다.
이동 컴퓨팅 디바이스(750)는 또한, 사용자로부터 구어 정보를 수신하고 그것을 사용 가능한 디지털 정보로 변환할 수 있는, 오디오 코덱(760)을 사용하여 들을 수 있게 전달할 수 있다. 오디오 코덱(760)은 마찬가지로, 예를 들면, 이동 컴퓨팅 디바이스(750)의 핸드셋에서, 스피커를 통해서와 같이, 사용자를 위한 가청 사운드를 생성할 수 있다. 이러한 사운드는 음성 전화 호출들로부터의 사운드를 포함할 수 있고, 녹음된 사운드(예를 들면, 음성 메시지들, 음악 파일들 등)를 포함할 수 있으며, 또한 이동 컴퓨팅 디바이스(750) 상에서 동작하는 애플리케이션들에 의해 생성된 사운드를 포함할 수 있다.
이동 컴퓨팅 디바이스(750)는 도면에 도시된 바와 같이, 다수의 상이한 형태들로 구현될 수 있다. 예를 들면, 그것은 셀룰러 전화기(780)로서 구현될 수 있다. 그것은 또한 스마트 폰(782), 개인 휴대용 정보 단말기, 또는 다른 유사한 이동 디바이스의 일부를로서 구현될 수 있다.
여기에 설명된 시스템들 및 기술들의 다양한 구현들이 디지털 전자 회로, 집적 회로, 특수하게 설계된 ASIC들(주문형 반도체들), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 그것의 조합들로 실현될 수 있다. 이들 다양한 구현들은 저장 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스로부터 데이터 및 지시들을 수신하고, 그것으로 데이터 및 지시들을 송신하기 위해 결합된, 특수 또는 일반 목적일 수 있는, 적어도 하나의 프로그래밍가능한 프로세서를 포함하는 프로그래밍가능한 시스템상에서 실행가능하고/실행가능하거나 해석가능한 하나 이상의 컴퓨터 프로그램들에서의 구현을 포함할 수 있다.
이들 컴퓨터 프로그램들(또한 프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로서 알려진)은 프로그래밍가능한 프로세서를 위한 기계 지시들을 포함하고, 고-레벨 절차 및/또는 오브젝트-지향 프로그래밍 언어로, 및/또는 어샘블리/기계어로 구현될 수 있다. 여기에 사용된 바와 같이, 용어들(기계-판독가능한 매체 및 컴퓨터-판독가능한 매체)은 기계-판독가능한 신호로서 기계 지시들을 수신하는 기계-판독가능한 매체를 포함한, 프로그래밍가능한 프로세서에 기계 지시들을 및/또는 데이터를 제공하기 위해 사용된 임의의 컴퓨터 프로그램 제품, 장치, 및/또는 디바이스(예를 들면, 자기 디스크들, 광 디스크들, 메모리, 프로그래밍가능한 로직 디바이스들(PLD들))를 나타낸다. 용어(기계-판독가능한 신호)는 기계 지시들 및/또는 데이터를 프로그래밍가능한 프로세서에 제공하기 위해 사용된 임의의 신호를 나타낸다.
사용자와의 상호작용을 위해 제공하기 위해, 여기에 설명된 시스템들 및 기술들이 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스(예를 들면, CRT(음극선관) 또는 LCD(액정 디스플레이) 모니터) 및 사용자가 입력을 컴퓨터에 제공할 수 있는 키보드 및 포인팅 디바이스(예를 들면, 마우스 또는 트랙볼)를 가진 컴퓨터 상에 구현될 수 있다. 다른 종류들의 디바이스들이 또한 사용자와의 상호 작용을 위해 제공하도록 사용될 수 있으며; 예를 들면, 사용자에게 제공된 피드백은 임의의 형태의 감각 피드백(예를 들면, 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백)일 수 있으며; 사용자로부터의 입력은 음향, 스피치, 또는 촉각적 입력을 포함한, 임의의 형태로 수신될 수 있다.
여기에 설명된 시스템들 및 기술들은 백 엔드 구성요소(예를 들면, 데이터 서버로서)를 포함하거나 미들웨어 구성요소(예를 들면, 애플리케이션 서버)를 포함하거나, 프론트 엔드 구성요소(예를 들면, 사용자가 여기에 설명된 시스템들 및 기술들의 구현과 상호 작용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저를 가진 클라이언트 컴퓨터), 또는 이러한 백엔드, 미들웨어 또는 프론트 엔드 구성요소의 임의의 조합을 포함하는 컴퓨팅 디바이스에 구현될 수 있다. 시스템의 구성요소들은 임의의 형태 또는 매체의 디지털 데이터 통신(예를 들면, 통신 네트워크)에 의해 상호 연결될 수 있다. 통신 네트워크들의 예들은 근거리 네트워크(LAN), 광역 네트워크(WAN), 및 인터넷을 포함한다.
컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로로부터 원격이며 통상적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트 및 서버의 관계는 각각의 컴퓨터들 상에서 구동하며 서로에 대해 클라이언트-서버 관계를 가진 컴퓨터 프로그램들에 의해 발생한다.
여기에 설명된 시스템들 및 방법들의 구조, 기능들 및 장치들을 고려할 때, 몇몇 구현들에서, 크로스-플랫폼 소프트웨어 애플리케이션들을 개발하기 위한 환경들 및 방법들이 제공된다. 개발을 지원하고 무선 컴퓨팅 디바이스들에 대한 소프트웨어 애플리케이션들의 검사를 위한 방법들 및 장치의 특정한 구현들을 설명하지만, 본 개시의 개념들을 통합한 다른 구현들이 사용될 수 있다는 것이 이제 당업자에게 명백해질 것이다. 그러므로, 개시는 특정한 구현들에 제한되지 않아야 하고, 오히려 다음의 청구항들의 사상 및 범위에 의해서만 제한되어야 한다.
100, 130, 150: 통합 클라우드 환경 102: 개발 컴퓨팅 디바이스
104: 클라우드 네트워크 106: 개발 서버
108: 리포지터리 110, 122: 프로젝트 파일
112, 540: 프로젝트 디렉토리 114: 웹 서버
116: 개발 클라이언트 애플리케이션 118: 개발 인터페이스
120: 디바이스 시뮬레이터 124: 플랙폼-특정 파일
126: 업데이트 에이전트
132: 타겟 무선 컴퓨팅 디바이스
134: 플랫폼-특정 실행가능한 파일
142: 플랫폼-특정 개발 애플리케이션 144: 콘텐트 파일
152: 동반 애플리케이션 설치 실행 파일
156: 웹 클라이언트 애플리케이션
158: 이동 디바이스 애플리케이션 서버 160: 애플리케이션 저장소
164: 서버-측 개발 클라이언트 애플리케이션 166: 네트워크
502, 532: 메뉴 바 506: 다이얼로그 박스
508: 메인 패널 510: 텍스트 입력 박스
512, 526: 디스크립션 제어 522: 개발 다이얼로그 박스
528: OK 제어 529: 취소 제어
534: 편집 창 536: 파일 내비게이션 창
538: 디바이스 창 542: 파일 디렉토리
544: 파일 550: 시뮬레이터 제어 패널
552: 디바이스 방향 메뉴
554: 스마트 폰 스타일 디바이스 시뮬레이션 555, 570: 디스플레이 영역
558: 제어
564: 디바이스 지오로케이션 메뉴
566: PDA 스타일 디바이스 시뮬레이션 572: 위치 결정 입력 박스
574: 움직임 입력 박스 576: 맵
578: 나침반 제어 592: 팝-업 윈도우
594: QR 코드 596: 드롭-다운 메뉴
597: 체크 박스 598, 599: 하이퍼링크
600: 클라우드 컴퓨팅 환경 602: 리소스 제공자
604, 700: 컴퓨팅 디바이스 606: 리소스 관리기
608: 컴퓨터 네트워크 702, 752: 프로세서
704, 764: 메모리 706: 저장 디바이스
708: 고속 인터페이스 710: 고속 확장 포트
712: 저속 인터페이스 714: 저속 확장 포트
716, 754: 디스플레이 720: 표준 서버
722: 랩탑 컴퓨터 724: 랙 서버 시스템
750: 이동 컴퓨팅 디바이스 756: 디스플레이 인터페이스
758: 제어 인터페이스 760: 오디오 코덱
762: 외부 인터페이스 766: 통신 인터페이스
768: 트랜시버 770: 수신기 모듈
772: 확장 인터페이스 774: 확장 메모리
780: 셀룰러 전화기 782: 스마트 폰

Claims (44)

  1. 프로세서; 및
    지시들의 세트를 저장하는 메모리로서, 상기 지시들의 세트는 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    복수의 콘텐트 파일들을 획득하게 하는 것으로서,
    상기 콘텐트 파일들은 하나 이상의 프리젠테이션 파일들을 포함하고, 상기 하나 이상의 프리젠테이션 파일들의 각각의 프리젠테이션 파일은 별개의 컴퓨팅 디바이스의 프로세서에 의해 런타임 시 해석될 때 상기 별개의 컴퓨팅 디바이스 상에서 실행하는 소프트웨어 애플리케이션의 (a) 기능 및 (b) 사용자 인터페이스 중 적어도 하나를 제공하도록 구성되는 각각의 지시들을 포함하는, 상기 복수의 콘텐트 파일들을 획득하게 하고;
    복수의 별개의 컴퓨팅 디바이스들에 상기 콘텐트 파일들을 제공하게 하고;
    상기 콘텐트 파일들을 제공한 후:
    상기 복수의 프리젠테이션 파일들의 적어도 제 1 프리젠테이션 파일에서의 변화를 식별하게 하고,
    적어도 상기 제 1 프리젠테이션 파일을 상기 복수의 별개의 컴퓨팅 디바이스들의 적어도 제 1 컴퓨팅 디바이스에 제공하게 하는 것으로서, 상기 제 1 컴퓨팅 디바이스 상에서 실행하는 해석 소프트웨어는 상기 소프트웨어 애플리케이션을 재-설치하거나 재-로딩하기 위한 요구 없이 상기 소프트웨어 애플리케이션의 (a) 상기 기능 및 (b) 상기 사용자 인터페이스 중 적어도 하나로서 상기 제 1 프리젠테이션 파일을 실행하도록 구성되는, 상기 제 1 프리젠테이션 파일을 제공하게 하는, 상기 메모리를 포함하는, 시스템.
  2. 제 1 항에 있어서,
    상기 제 1 컴퓨팅 디바이스는 유선 연결을 통해 상기 시스템과 통신하는, 시스템.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 적어도 상기 제 1 프리젠테이션 파일을 제공하는 것은 상기 적어도 제 1 프리젠테이션 파일을 제 2 컴퓨팅 디바이스에 제공하는 것을 포함하고, 상기 제 2 컴퓨팅 디바이스는 무선 연결을 통해 상기 시스템과 통신하는, 시스템.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 지시들은, 실행될 때, 또한 상기 프로세서로 하여금:
    상기 적어도 제 1 프리젠테이션 파일을 제공하게 하기 전에, 무선 네트워크 상에서 상기 복수의 컴퓨팅 디바이스들 중 적어도 하나의 컴퓨팅 디바이스를 식별하게 하고, 상기 적어도 하나의 컴퓨팅 디바이스는 상기 제 1 컴퓨팅 디바이스를 포함하고,
    상기 제 1 프리젠테이션 파일을 상기 제 1 컴퓨팅 디바이스에 제공하는 것은 상기 무선 네트워크에 걸쳐 상기 제 1 프리젠테이션 파일을 제공하는 것을 포함하는, 시스템.
  5. 제 4 항에 있어서,
    상기 제 1 프리젠테이션 파일을 상기 제 1 컴퓨팅 디바이스에 제공하는 것은 상기 제 1 컴퓨팅 디바이스 상에서 실행하는 다운로드 에이전트와의 파일 공유 연결을 개방하는 것을 포함하는, 시스템.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    입력 디바이스를 추가로 포함하고, 상기 지시들은, 실행될 때, 또한 상기 프로세서로 하여금:
    상기 적어도 제 1 프리젠테이션 파일을 제공하게 하기 전에, 상기 입력 디바이스를 통해, 상기 복수의 컴퓨팅 디바이스들 중 적어도 하나의 컴퓨팅 디바이스의 표시를 수신하게 하고,
    상기 적어도 하나의 컴퓨팅 디바이스는 상기 제 1 컴퓨팅 디바이스를 포함하고,
    상기 제 1 프리젠테이션 파일을 제공하는 것은 상기 표시에 응답하여, 상기 제 1 프리젠테이션 파일을 상기 적어도 하나의 컴퓨팅 디바이스에 제공하는 것을 포함하는, 시스템.
  7. 컴퓨팅 디바이스의 프로세서에 의해, 복수의 콘텐트 파일들을 획득하는 단계로서, 상기 콘텐트 파일들은 하나 이상의 프리젠테이션 파일들을 포함하고, 상기 하나 이상의 프리젠테이션 파일들의 각각의 프리젠테이션 파일은 별개의 컴퓨팅 디바이스의 프로세서에 의해 런타임시 해석될 때, 상기 별개의 컴퓨팅 디바이스 상에서 실행하는 소프트웨어 애플리케이션의 (a) 기능 및 (b) 사용자 인터페이스 중 적어도 하나를 제공하도록 구성되는 각각의 지시들을 포함하는, 상기 획득하는 단계;
    상기 콘텐트 파일들을 상기 별개의 컴퓨팅 디바이스에 제공하는 단계;
    상기 콘텐트 파일들을 제공한 후:
    상기 컴퓨팅 디바이스의 프로세서에 의해, 상기 복수의 프리젠테이션 파일들 중 적어도 제 1 프리젠테이션 파일에서의 변화를 식별하는 단계, 및
    적어도 상기 제 1 프리젠테이션 파일을 상기 별개의 컴퓨팅 디바이스에 제공하는 단계로서, 상기 별개의 컴퓨팅 디바이스 상에서 실행하는 해석 소프트웨어는 상기 별개의 컴퓨팅 디바이스 상에서 상기 소프트웨어 애플리케이션을 재-설치하거나 재-로딩하기 위한 요구 없이 상기 소프트웨어 애플리케이션의 (a) 상기 기능 및 (b) 상기 사용자 인터페이스 중 적어도 하나로서 상기 제 1 프리젠테이션 파일을 실행하도록 구성되는, 상기 제공하는 단계를 포함하는, 방법.
  8. 제 7 항에 있어서,
    상기 콘텐트 파일들은 또한 하나 이상의 미디어 파일들을 포함하는, 방법.
  9. 제 7 항 또는 제 8 항에 있어서,
    상기 각각의 지시들은, 런타임시 해석될 때, 브라우저 애플리케이션 내에서 상기 소프트웨어 애플리케이션의 사용자 인터페이스를 제공하도록 구성되는, 방법.
  10. 제 9 항에 있어서,
    상기 브라우저 애플리케이션은 상기 사용자에게 비가시적이도록 구성되는, 방법.
  11. 제 7 항 내지 제 10 항 중 어느 한 항에 있어서,
    상기 콘텐트 파일들을 제공하는 단계는 무선 연결을 통해 상기 컴퓨팅 디바이스로부터 상기 별개의 컴퓨팅 디바이스로 상기 콘텐트 파일들을 푸싱하는 단계를 포함하는, 방법.
  12. 제 7 항 내지 제 11 항 중 어느 한 항에 있어서,
    상기 콘텐트 파일들을 제공하는 단계는 상기 별개의 컴퓨팅 디바이스에 액세스가능한 네트워크 저장 영역으로 상기 콘텐트 파일들을 업로딩하는 단계를 포함하는, 방법.
  13. 제 7 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 콘텐트 파일들을 제공하는 단계는 다운로드를 위해 상기 콘텐트 파일들을 포함하는 설치 실행 파일을 제공하는 단계를 포함하는, 방법.
  14. 제 13 항에 있어서,
    상기 설치 실행 파일은 상기 해석 소프트웨어를 포함하는, 방법.
  15. 제 13 항 또는 제 14 항에 있어서,
    상기 설치 실행 파일은 윈도우리스 브라우저 애플리케이션을 포함하는, 방법.
  16. 제 13 항 내지 제 15 항 중 어느 한 항에 있어서,
    상기 설치 실행 파일은 업데이트 에이전트를 포함하고, 상기 업데이트 에이전트는, 상기 소프트웨어 애플리케이션의 실행 동안:
    하나 이상의 부가적인 콘텐트 파일들을 수신하는 것으로서, 상기 하나 이상의 부가적인 콘텐트 파일들 중 적어도 하나는 상기 콘텐트 파일들 중 제 1 콘텐트 파일에 대한 대체 파일을 포함하는, 상기 하나 이상의 부가적인 콘텐트 파일들을 수신하고,
    상기 제 1 콘텐트 파일을 상기 교체 파일로 교체하도록 구성되는, 방법.
  17. 제 16 항에 있어서,
    상기 업데이트 에이전트는 또한, 상기 제 1 콘텐트 파일을 상기 교체 파일로 교체한 후, 상기 교체 파일을 이용하기 위해 상기 소프트웨어 애플리케이션의 현재 사용자 인터페이스를 리프레싱하도록 구성되는, 방법.
  18. 제 7 항 내지 제 17 항 중 어느 한 항에 있어서,
    이동 디바이스 시뮬레이터 내에서 상기 소프트웨어 애플리케이션의 시뮬레이션을 제공하는 단계를 추가로 포함하고, 상기 이동 디바이스 시뮬레이터는 이동 디바이스 상에서 상기 소프트웨어 애플리케이션의 기능을 시뮬레이팅하기 위해 상기 하나 이상의 프리젠테이션 파일들 중 적어도 하나의 상기 지시들을 해석하는, 방법.
  19. 제 18 항에 있어서,
    상기 이동 디바이스 시뮬레이터는 하나 이상의 제어부들을 포함하고, 상기 하나 이상의 제어부들은 상기 컴퓨팅 디바이스의 사용자에 의해 활성화될 때, 상기 소프트웨어 애플리케이션에 입력을 공급하도록 구성되는, 방법.
  20. 제 19 항에 있어서,
    상기 하나 이상의 제어부들의 제 1 제어를 통해, 방향 입력을 수신하는 단계; 및
    상기 방향 입력에 응답하여, 상기 이동 디바이스 시뮬레이터의 디스플레이 부분의 방향을 변경하는 단계를 추가로 포함하는, 방법.
  21. 제 19 항 또는 제 20 항에 있어서,
    상기 하나 이상의 제어부들의 제 1 제어를 통해, 디바이스 유형 입력을 수신하는 단계; 및
    상기 디바이스 유형 입력에 응답하여, 상기 디바이스 시뮬레이터의 외관을 수정하는 단계를 추가로 포함하고, 상기 디바이스 시뮬레이터는 이동 디바이스 프레임 및 디스플레이 영역을 포함하는, 방법.
  22. 제 21 항에 있어서,
    상기 디바이스 유형 입력에 응답하여, 상기 이동 디바이스 시뮬레이터에 의해 제공된 현재 사용자 인터페이스를 리프레싱하는 단계를 추가로 포함하는, 방법.
  23. 제 18 항 내지 제 22 항 중 어느 한 항에 있어서,
    상기 컴퓨팅 디바이스의 프로세서에 의해, 상기 복수의 프리젠테이션 파일들 중 적어도 제 2 프리젠테이션 파일에서의 변화를 식별하는 단계; 및
    상기 제 2 프리젠테이션 파일로부터의 정보를 포함하기 위해 상기 이동 디바이스 시뮬레이터에 의해 제공된 현재 사용자 인터페이스를 리프레싱하는 단계를 추가로 포함하는, 방법.
  24. 제 7 항 내지 제 23 항 중 어느 한 항에 있어서,
    상기 제 1 프리젠테이션 파일을 상기 별개의 컴퓨팅 디바이스에 제공하는 단계는 상기 컴퓨팅 디바이스의 사용자로부터 요청을 수신하는 것에 응답하여 상기 제 1 프리젠테이션 파일을 제공하는 단계를 포함하는, 방법.
  25. 제 24 항에 있어서,
    상기 요청은 하나 이상의 컴퓨팅 디바이스들을 식별하고, 상기 하나 이상의 컴퓨팅 디바이스들은 상기 별개의 컴퓨팅 디바이스를 포함하는, 방법.
  26. 제 7 항 내지 제 25 항 중 어느 한 항에 있어서,
    상기 콘텐트 파일들을 제공하기 전에, 상기 콘텐트 파일들을 포함하는 설치 파일을 준비하는 단계를 추가로 포함하는, 방법.
  27. 제 26 항에 있어서,
    상기 설치 파일을 준비하는 단계는 상기 설치 파일에 디지털 서명을 부가하는 단계를 포함하는, 방법.
  28. 제 7 항 내지 제 27 항 중 어느 한 항에 있어서,
    버전-제어 프로젝트 디렉토리에 상기 콘텐트 파일들을 저장하는 단계를 추가로 포함하는, 방법.
  29. 제 7 항 내지 제 28 항 중 어느 한 항에 있어서,
    저장 어드레스에서, 적어도 상기 제 1 프리젠테이션 파일에 대한 요청을 수신하는 단계를 추가로 포함하고, 상기 제 1 프리젠테이션 파일을 제공하는 단계는 상기 저장 어드레스에서의 다운로드를 위해 상기 제 1 프리젠테이션 파일을 제공하는 단계를 포함하는, 방법.
  30. 제 29 항에 있어서,
    상기 저장 어드레스는 URL을 포함하는, 방법.
  31. 제 7 항 내지 제 30 항 중 어느 한 항에 있어서,
    상기 제 1 프리젠테이션 파일을 제공하는 단계는 상기 제 2 컴퓨팅 디바이스와의 파일 업데이트 연결을 개방하는 단계를 포함하는, 방법.
  32. 제 7 항 내지 제 31 항 중 어느 한 항에 있어서,
    상기 제 2 컴퓨팅 디바이스는 이전에 설치된 윈도우리스 브라우저 애플리케이션 내에서 상기 소프트웨어 애플리케이션을 실행하는, 방법.
  33. 지시들의 세트를 저장하는 비-일시적 컴퓨터 판독가능한 매체에 있어서,
    상기 지시들은 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
    복수의 콘텐트 파일들을 획득하게 하는 것으로서,
    상기 콘텐트 파일들은 하나 이상의 프리젠테이션 파일들을 포함하고, 상기 하나 이상의 프리젠테이션 파일들의 각각의 프리젠테이션 파일은 별개의 컴퓨팅 디바이스의 프로세서에 의해 런타임 시 해석될 때 상기 별개의 컴퓨팅 디바이스 상에서 실행하는 소프트웨어 애플리케이션의 (a) 기능 및 (b) 사용자 인터페이스 중 적어도 하나를 제공하도록 구성되는 각각의 지시들을 포함하는, 상기 복수의 콘텐트 파일들을 획득하게 하고;
    상기 콘텐트 파일들을 상기 별개의 컴퓨팅 디바이스에 제공하게 하고;
    상기 콘텐트 파일들을 제공한 후:
    상기 복수의 프리젠테이션 파일들의 적어도 제 1 프리젠테이션 파일에서의 변화를 식별하게 하고,
    적어도 상기 제 1 프리젠테이션 파일을 상기 별개의 컴퓨팅 디바이스에 제공하게 하는 것으로서, 상기 별개의 컴퓨팅 디바이스 상에서 실행하는 해석 소프트웨어는 상기 별개의 컴퓨팅 디바이스 상에서 상기 소프트웨어 애플리케이션을 재-설치하거나 재-로딩하기 위한 요구 없이 상기 소프트웨어 애플리케이션의 (a) 상기 기능 및 (b) 사용자 인터페이스 중 적어도 하나로서 상기 제 1 프리젠테이션 파일을 실행하도록 구성되는, 상기 적어도 상기 제 1 프리젠테이션 파일을 제공하게 하는, 비-일시적 컴퓨터 판독가능한 매체.
  34. 제 33 항에 있어서,
    상기 복수의 콘텐트 파일들을 획득하는 것은 원격 컴퓨팅 디바이스로부터, 네트워크를 통해, 상기 복수의 콘텐트 파일들의 적어도 일부를 획득하는 것을 포함하는, 비-일시적 컴퓨터 판독가능한 매체.
  35. 제 34 항에 있어서,
    상기 지시들은, 실행될 때 또한 상기 프로세서로 하여금, 상기 제 1 프리젠테이션 파일에서의 상기 변화를 식별하는 것에 응답하여, 상기 원격 컴퓨팅 디바이스에 액세스가능한 저장 리포지터리에서 상기 제 1 프리젠테이션 파일의 복제를 야기하게 하는, 비-일시적 컴퓨터 판독가능한 매체.
  36. 제 34 항 또는 제 35 항에 있어서,
    상기 제 1 프리젠테이션 파일을 상기 별개의 컴퓨팅 디바이스에 제공하는 것은 상기 제 1 프리젠테이션 파일로 하여금 상기 네트워크를 통해 상기 별개의 컴퓨팅 디바이스에 액세스가능하게 하는 것을 포함하는, 비-일시적 컴퓨터 판독가능한 매체.
  37. 컴퓨팅 디바이스의 프로세서에 의해, 복수의 콘텐트 파일들을 획득하는 단계로서, 상기 콘텐트 파일들은 하나 이상의 프리젠테이션 파일들을 포함하는, 상기 획득하는 단계;
    상기 컴퓨팅 디바이스 상에서 실행하는 동반 애플리케이션에 의해, 상기 복수의 콘텐트 파일들에 액세스하는 단계;
    상기 동반 애플리케이션에 의해, 상기 하나 이상의 프리젠테이션 파일들 중 적어도 제 1 프리젠테이션 파일을 해석하는 단계로서, 소프트웨어 애플리케이션의 (a) 기능 및 (b) 사용자 인터페이스 중 적어도 하나를 렌더링하는 단계를 포함하는, 상기 해석하는 단계;
    상기 동반 애플리케이션에 의해, 하나 이상의 대체 콘텐트 파일들을 획득하기 위해 요청을 식별하는 단계;
    상기 요청에 응답하여,
    상기 동반 애플리케이션에 의해, 적어도 제 1 대체 프리젠테이션 파일에 액세스하는 단계로서, 상기 제 1 대체 프리젠테이션 파일은 상기 제 1 프리젠테이션 파일을 대체하도록 구성되는, 상기 액세스하는 단계, 및
    상기 동반 애플리케이션에 의해, 상기 제 1 대체 프리젠테이션 파일로부터 해석된 정보를 제공하기 위해 상기 소프트웨어 애플리케이션의 사용자 인터페이스를 리프레싱하는 단계를 포함하는, 방법.
  38. 제 37 항에 있어서,
    상기 요청은 상기 별개의 컴퓨팅 디바이스의 터치 스크린 인터페이스 상에서 수행된 제스처를 포함하는, 방법.
  39. 제 37 항 또는 제 38 항에 있어서,
    상기 요청은 상기 별개의 컴퓨팅 디바이스의 스캔 특징에 의해, 기계 판독가능한 표식을 스캔하는 것을 통해 획득된 스캔 데이터를 포함하는, 방법.
  40. 제 39 항에 있어서,
    상기 스캔 데이터는 네트워크 어드레스를 포함하는, 방법.
  41. 제 37 항 내지 제 40 항 중 어느 한 항에 있어서,
    상기 교체 프리젠테이션 파일에 액세스하는 단계는 상기 대체 프리젠테이션 파일을 획득하기 위해 네트워크 어드레스에 액세스하는 단계를 포함하는, 방법.
  42. 제 37 항 내지 제 41 항 중 어느 한 항에 있어서,
    상기 동반 애플리케이션은 윈도우리스 브라우저를 포함하고, 상기 소프트웨어 애플리케이션의 사용자 인터페이스는 상기 윈도우리스 브라우저 내에서 렌더링되는, 방법.
  43. 프로세서; 및
    지시들의 세트를 저장하는 메모리로서, 상기 지시들의 세트는 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 콘텐트 파일들을 해석하기 위한 동반 애플리케이션을 실행하게 하고, 상기 동반 애플리케이션은:
    복수의 콘텐트 파일들을 획득하는 단계로서,
    상기 콘텐트 파일들은 하나 이상의 프리젠테이션 파일들을 포함하고,
    상기 콘텐트 파일들은, 상기 동반 애플리케이션에 의한 해석 시, 소프트웨어 애플리케이션을 실행하는, 상기 획득하는 단계;
    상기 복수의 콘텐트 파일들에 액세스하는 단계;
    상기 하나 이상의 프리젠테이션 파일들 중 적어도 제 1 프리젠테이션 파일을 해석하는 단계로서, 상기 제 1 프리젠테이션 파일을 해석하는 단계는 소프트웨어 애플리케이션의 (a) 기능 및 (b) 사용자 인터페이스 중 적어도 하나를 렌더링하는 단계를 포함하는, 상기 해석하는 단계;
    하나 이상의 대체 콘텐트 파일들을 획득하기 위해 요청을 식별하는 단계;
    상기 요청에 응답하여,
    적어도 제 1 대체 프리젠테이션 파일에 액세스하는 단계로서, 상기 제 1 대체 프리젠테이션 파일은 상기 제 1 프리젠테이션 파일을 대체하도록 구성되는, 상기 액세스하는 단계; 및
    상기 제 1 대체 프리젠테이션 파일로부터 해석된 정보를 제공하기 위해 상기 소프트웨어 애플리케이션의 사용자 인터페이스를 리프레싱하는 단계를 포함하는, 상기 메모리를 포함하는, 시스템.
  44. 지시들이 저장된 비-일시적 컴퓨터 판독가능한 매체로서, 상기 지시들에서, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 콘텐트 파일들을 해석하기 위한 동반 애플리케이션을 실행하게 하는, 상기 비-일시적 컴퓨터 판독가능한 매체에 있어서,
    상기 동반 애플리케이션은:
    복수의 콘텐트 파일들을 획득하는 단계로서,
    상기 콘텐트 파일들은 하나 이상의 프리젠테이션 파일들을 포함하고,
    상기 콘텐트 파일들은, 상기 동반 애플리케이션에 의한 해석 시, 소프트웨어 애플리케이션을 실행하는, 상기 획득하는 단계;
    상기 복수의 콘텐트 파일들에 액세스하는 단계;
    상기 하나 이상의 프리젠테이션 파일들 중 적어도 제 1 프리젠테이션 파일을 해석하는 단계로서, 상기 제 1 프리젠테이션 파일을 해석하는 단계는 소프트웨어 애플리케이션의 (a) 기능 및 (b) 사용자 인터페이스 중 적어도 하나를 렌더링하는 단계를 포함하는, 상기 해석하는 단계;
    하나 이상의 대체 콘텐트 파일들을 획득하기 위해 요청을 식별하는 단계;
    상기 요청에 응답하여,
    적어도 제 1 대체 프리젠테이션 파일에 액세스하는 단계로서, 상기 제 1 대체 프리젠테이션 파일은 상기 제 1 프리젠테이션 파일을 대체하도록 구성되는, 상기 액세스하는 단계; 및
    상기 제 1 대체 프리젠테이션 파일로부터 해석된 정보를 제공하기 위해 상기 소프트웨어 애플리케이션의 사용자 인터페이스를 리프레싱하는 단계를 포함하는, 비-일시적 컴퓨터 판독가능한 매체.
KR1020147025170A 2012-02-07 2013-02-07 소프트웨어 애플리케이션들의 크로스-플랫폼 개발을 위한 환경 및 방법 KR20150047453A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261595945P 2012-02-07 2012-02-07
US61/595,945 2012-02-07
US201261642187P 2012-05-03 2012-05-03
US61/642,187 2012-05-03
US13/657,149 2012-10-22
US13/657,149 US20130205277A1 (en) 2012-02-07 2012-10-22 Environment and method for cross-platform development of software applications
PCT/IB2013/000447 WO2013117995A2 (en) 2012-02-07 2013-02-07 Environment and method for cross-platform development of software applications

Publications (1)

Publication Number Publication Date
KR20150047453A true KR20150047453A (ko) 2015-05-04

Family

ID=48904047

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147025170A KR20150047453A (ko) 2012-02-07 2013-02-07 소프트웨어 애플리케이션들의 크로스-플랫폼 개발을 위한 환경 및 방법

Country Status (10)

Country Link
US (1) US20130205277A1 (ko)
EP (1) EP2812797A4 (ko)
JP (1) JP2015510635A (ko)
KR (1) KR20150047453A (ko)
CN (1) CN104321745A (ko)
AU (1) AU2013217338A1 (ko)
BR (1) BR112014019336A2 (ko)
CA (1) CA2863882A1 (ko)
SG (1) SG11201404680SA (ko)
WO (1) WO2013117995A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210134610A (ko) * 2018-12-20 2021-11-10 로브록스 코포레이션 개발자 협업 제어 시스템

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8640097B2 (en) * 2009-03-16 2014-01-28 Microsoft Corporation Hosted application platform with extensible media format
US9584682B2 (en) * 2012-05-24 2017-02-28 Blackberry Limited System and method for sharing data across multiple electronic devices
US8966441B2 (en) * 2012-07-12 2015-02-24 Oracle International Corporation Dynamic scripts to extend static applications
US20140149966A1 (en) * 2012-11-27 2014-05-29 Inadev Corporation Application, build, integration, and release management system and method
US20140149243A1 (en) * 2012-11-29 2014-05-29 Red Hat, Inc. Vendor download integration
CN103024063A (zh) * 2012-12-24 2013-04-03 腾讯科技(深圳)有限公司 一种数据共享方法、客户端及系统
US9038019B2 (en) 2013-02-05 2015-05-19 Sap Se Paige control for enterprise mobile applications
US9244668B1 (en) * 2013-02-11 2016-01-26 Symantec Corporation Systems and methods for synchronizing mobile computing platforms
WO2014138187A1 (en) 2013-03-05 2014-09-12 Christmas Coy System and method for cubic graphical user interfaces
US9069375B2 (en) * 2013-04-30 2015-06-30 MobileDataForce, Inc. Method and system for platform-independent application development
CN104182241A (zh) * 2013-05-24 2014-12-03 华为终端有限公司 一种网页应用程序更新方法及通信设备
US9563415B2 (en) * 2013-05-28 2017-02-07 Sap Se Generating visually encoded dynamic codes for remote launching of applications
US20140359557A1 (en) * 2013-05-31 2014-12-04 Microsoft Corporation Creating applications
CA2918687C (en) 2013-07-18 2020-04-14 Luke Malpass System and method for multi-angle videos
CN103414765B (zh) * 2013-07-26 2017-04-12 华为技术有限公司 图形码中信息的分流方法、装置及系统
TWI488051B (zh) * 2013-08-27 2015-06-11 Benq Corp 媒體資料分享方法
EP2846514A1 (en) * 2013-09-05 2015-03-11 iMinds VZW Method for installing and configuring an application
US10095873B2 (en) 2013-09-30 2018-10-09 Fasetto, Inc. Paperless application
WO2015048684A1 (en) * 2013-09-30 2015-04-02 Fasetto, Llc Paperless application
US20150161087A1 (en) * 2013-12-09 2015-06-11 Justin Khoo System and method for dynamic imagery link synchronization and simulating rendering and behavior of content across a multi-client platform
US9584402B2 (en) 2014-01-27 2017-02-28 Fasetto, Llc Systems and methods for peer to peer communication
US20150268936A1 (en) * 2014-03-21 2015-09-24 Ptc Inc. System and method for testing computing devices in a heterogeneous environment
US9467533B2 (en) 2014-03-21 2016-10-11 Ptc Inc. System and method for developing real-time web-service objects
WO2015143416A1 (en) 2014-03-21 2015-09-24 Ptc Inc. Systems and methods for developing and using real-time data applications
WO2015152882A1 (en) * 2014-03-31 2015-10-08 Hewlett-Packard Development Company, L.P. Candidate services for an application
WO2015191828A1 (en) * 2014-06-11 2015-12-17 Arizona Board Of Regents For The University Of Arizona Adaptive web analytic response environment
CN105446980B (zh) * 2014-06-27 2018-12-14 北京金山安全软件有限公司 一种鉴别图片垃圾文件的方法及装置
CA2954650C (en) 2014-07-10 2022-08-30 Fasetto, Llc Systems and methods for message editing
US10963539B2 (en) 2014-09-10 2021-03-30 Mk Systems Usa Inc. Interactive web application editor
US20160077955A1 (en) * 2014-09-16 2016-03-17 International Business Machines Corporation Regression testing of responsive user interfaces
US8997081B1 (en) 2014-09-18 2015-03-31 Ensighten, Inc. Analytics for mobile applications
US11216253B2 (en) * 2014-10-03 2022-01-04 Kony, Inc. Application prototyping tool
CN107006063B (zh) 2014-10-06 2021-08-24 法斯埃托股份有限公司 用于便携式存储设备的系统和方法
US10437288B2 (en) 2014-10-06 2019-10-08 Fasetto, Inc. Portable storage device with modular power and housing system
US9880816B2 (en) * 2014-11-27 2018-01-30 Sap Se Simulator with local resource capabilities
WO2016123768A1 (en) * 2015-02-04 2016-08-11 Global Silicon Limited Updating firmware with audio
CN105989068A (zh) * 2015-02-10 2016-10-05 中国移动通信集团贵州有限公司 基于超文本标记语言的移动应用生成方法及装置
CN107852421B (zh) 2015-03-11 2021-02-05 法斯埃托股份有限公司 用于web api通信的系统和方法
US9645814B1 (en) * 2015-05-04 2017-05-09 Amazon Technologies, Inc. Generating and publishing applications for multiple platforms
CN104834530A (zh) * 2015-05-27 2015-08-12 百富计算机技术(深圳)有限公司 一种pos应用程序的开发方法及云端服务器
US10459600B2 (en) * 2015-06-24 2019-10-29 Microsoft Technology Licensing, Llc Conversion of platform-independent accessibility logic into platform-specific accessibility functionality
US9419857B1 (en) * 2015-07-24 2016-08-16 Accenture Global Services Limited Cloud-based multi-layer security architecture with hub and spoke development environment
US10303331B2 (en) * 2015-08-04 2019-05-28 Apptimize, Inc. Live mobile application visual editor demo
US10146512B1 (en) 2015-08-28 2018-12-04 Twitter, Inc. Feature switching kits
GB2555026A (en) * 2015-09-02 2018-04-18 Google Llc Software development and distribution platform
CN106559438B (zh) * 2015-09-24 2019-12-31 阿里巴巴集团控股有限公司 一种基于目标网络平台的程序上传方法和装置
WO2017096245A1 (en) 2015-12-03 2017-06-08 Fasetto, Llc Systems and methods for memory card emulation
US9674108B1 (en) * 2015-12-30 2017-06-06 Accenture Global Solutions Limited Hub-and-spoke connection architecture
CN106020845A (zh) * 2016-05-31 2016-10-12 广东能龙教育股份有限公司 一种客户端混合快速开发方法
US10496419B2 (en) * 2016-06-10 2019-12-03 Apple Inc. Editing inherited configurations
US10248412B2 (en) 2016-09-20 2019-04-02 Microsoft Technology Licensing, Llc Sharing applications by modifying attributes
US10372443B2 (en) 2016-10-18 2019-08-06 Oracle International Corporation Multi-platform pattern-based user interfaces
CN106533860A (zh) * 2016-11-18 2017-03-22 深圳Tcl智能家庭科技有限公司 一种智能家居交互软件总线系统及实现方法
WO2018098313A1 (en) 2016-11-23 2018-05-31 Fasetto, Llc Systems and methods for streaming media
US10282402B2 (en) 2017-01-06 2019-05-07 Justin Khoo System and method of proofing email content
US11708051B2 (en) 2017-02-03 2023-07-25 Fasetto, Inc. Systems and methods for data storage in keyed devices
CN106652613A (zh) * 2017-03-09 2017-05-10 南通理工学院 一种基于云计算的软件类课程移动学习平台
US10303462B2 (en) * 2017-05-31 2019-05-28 Microsoft Technology Licensing, Llc Windows support of a pluggable ecosystem for universal windows application stores
CN107346338B (zh) * 2017-06-30 2021-01-01 武汉斗鱼网络科技有限公司 文件目录排序方法及装置
CA3049032A1 (en) * 2017-09-21 2019-03-28 Oracle International Corporation Systems and methods for updating multi-tier cloud-based application stacks
WO2019079628A1 (en) 2017-10-19 2019-04-25 Fasetto, Inc. PORTABLE ELECTRONIC DEVICE CONNECTING SYSTEMS
TWI667613B (zh) * 2017-11-02 2019-08-01 聲達資訊股份有限公司 前端整合開發管理系統及其方法
CN108170606B (zh) * 2018-01-03 2022-02-15 中国工商银行股份有限公司 系统软件升级类应用的测试系统及方法
US11102316B1 (en) 2018-03-21 2021-08-24 Justin Khoo System and method for tracking interactions in an email
CN112292708B (zh) 2018-04-17 2022-06-17 法斯埃托股份有限公司 具有实时反馈的演示系统和方法
CN109471630B (zh) * 2018-11-16 2021-11-16 广州虎牙科技有限公司 一种应用处理方法和设备
CN109525584B (zh) * 2018-11-26 2020-12-04 竞技世界(北京)网络技术有限公司 一种构建移动端跨平台多类型应用容器的方法
US20200257523A1 (en) * 2019-02-11 2020-08-13 International Business Machines Corporation Application feature change detection
GB2589663B (en) 2019-06-10 2024-04-10 Fisher Rosemount Systems Inc Automatic load balancing and performance leveling of virtual nodes running real-time control in process control systems
US11249464B2 (en) * 2019-06-10 2022-02-15 Fisher-Rosemount Systems, Inc. Industrial control system architecture for real-time simulation and process control
CN112784293A (zh) * 2019-11-08 2021-05-11 游戏橘子数位科技股份有限公司 画面撷取的记录通知的方法
CN112860274A (zh) * 2019-11-27 2021-05-28 华为技术有限公司 程序包部署的方法、装置、终端设备和存储介质
US11487510B2 (en) * 2020-10-20 2022-11-01 Intuit, Inc. Dynamic web-based integrated development environment
US11487565B2 (en) * 2020-10-29 2022-11-01 Hewlett Packard Enterprise Development Lp Instances of just-in-time (JIT) compilation of code using different compilation settings
JP2022086158A (ja) 2020-11-30 2022-06-09 ブラザー工業株式会社 セットアッププログラム、情報処理装置、およびシステム
JP2022086157A (ja) 2020-11-30 2022-06-09 ブラザー工業株式会社 セットアッププログラム、情報処理装置、およびシステム
CN113157607B (zh) * 2021-05-20 2023-03-21 中国第一汽车股份有限公司 一种设备适配方法、装置、存储介质和计算机设备
CN113094033B (zh) * 2021-06-07 2021-08-27 南京沁恒微电子股份有限公司 一种mcu集成开发环境的工程结构适配方法
CN115145696B (zh) * 2022-08-30 2022-11-29 统信软件技术有限公司 确定进程虚拟机运行差异的方法、系统及计算设备

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040078787A1 (en) * 2002-07-19 2004-04-22 Michael Borek System and method for troubleshooting, maintaining and repairing network devices
US8108455B2 (en) * 2002-10-31 2012-01-31 Oracle America, Inc. Mobile agents in peer-to-peer networks
JP2007089136A (ja) * 2005-08-23 2007-04-05 Ricoh Co Ltd 画像処理方法、画像処理プログラム、記録媒体及び複合装置
US8190650B2 (en) * 2006-05-02 2012-05-29 Microsoft Corporation Efficiently filtering using a web site
WO2008035339A2 (en) * 2006-09-21 2008-03-27 Vringo, Inc. Personalized installation files
US20080294981A1 (en) * 2007-05-21 2008-11-27 Advancis.Com, Inc. Page clipping tool for digital publications
US20090119678A1 (en) * 2007-11-02 2009-05-07 Jimmy Shih Systems and methods for supporting downloadable applications on a portable client device
US20090228862A1 (en) * 2008-03-04 2009-09-10 Anders Bertelrud Modularized integrated software development environments
US20100281475A1 (en) * 2009-05-04 2010-11-04 Mobile On Services, Inc. System and method for mobile smartphone application development and delivery
US8984657B2 (en) * 2009-09-08 2015-03-17 Appcentral, Inc. System and method for remote management of applications downloaded to a personal portable wireless appliance
US8633902B2 (en) * 2009-11-23 2014-01-21 Microsoft Corporation Touch input for hosted applications
US8531487B2 (en) * 2010-08-24 2013-09-10 Adobe Systems Incorporated Software for displays with different pixel densities
EP2625624B1 (en) * 2010-10-08 2017-11-29 Lumi Technologies Limited Distribution of content and behavior to disparate platforms
US8903943B2 (en) * 2011-02-15 2014-12-02 Salesforce.Com, Inc. Integrating cloud applications and remote jobs
US8413884B2 (en) * 2011-03-03 2013-04-09 Life In Mobile, Inc. Method and apparatus for dynamically presenting content in response to successive scans of a static code
CN102184101B (zh) * 2011-04-27 2014-02-05 赵悦 一种面向智能手机的软件应用框架及其开发系统
US8635522B2 (en) * 2011-05-12 2014-01-21 Sybase, Inc. Hybrid web container for cross-platform mobile applications
US8612933B1 (en) * 2011-06-24 2013-12-17 Amazon Technologies, Inc. Cross-platform mobile application development
CN102323880A (zh) * 2011-06-30 2012-01-18 中兴通讯股份有限公司 基于浏览器解析方式的手机应用界面的开发方法和终端
CN102289374B (zh) * 2011-08-31 2017-06-30 南京中兴新软件有限责任公司 一种构建跨平台软件运行环境的方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210134610A (ko) * 2018-12-20 2021-11-10 로브록스 코포레이션 개발자 협업 제어 시스템

Also Published As

Publication number Publication date
WO2013117995A3 (en) 2013-10-31
BR112014019336A2 (pt) 2017-07-11
SG11201404680SA (en) 2014-09-26
CA2863882A1 (en) 2013-08-15
CN104321745A (zh) 2015-01-28
WO2013117995A2 (en) 2013-08-15
EP2812797A4 (en) 2016-01-27
US20130205277A1 (en) 2013-08-08
AU2013217338A1 (en) 2014-08-21
EP2812797A2 (en) 2014-12-17
JP2015510635A (ja) 2015-04-09

Similar Documents

Publication Publication Date Title
KR20150047453A (ko) 소프트웨어 애플리케이션들의 크로스-플랫폼 개발을 위한 환경 및 방법
Wargo PhoneGap essentials: Building cross-platform mobile apps
Meier Professional Android 4 application development
Felker Android application development for dummies
US8479154B1 (en) Interaction with partially constructed mobile device applications
Lee Beginning android 4 application Development
Meier et al. Professional Android
US11615581B2 (en) Systems and methods for securely providing virtual reality environments
CN109800135B (zh) 一种信息处理方法及终端
US11763527B2 (en) Systems and methods for providing virtual reality environment-based training and certification
Annuzzi et al. Advanced Android application development
Helal et al. Mobile platforms and development environments
Amatya Cross-platform mobile development: An alternative to native mobile development
Jaygarl et al. Professional Tizen Application Development
Phan Ionic cookbook
Steele et al. The Android Developer's Collection (Collection)
Johnson Using MVVM Light with your Xamarin Apps
Harwani Android Programming Unleashed
Singh Ionic cookbook: Recipes to create cutting-edge, real-time hybrid mobile apps with ionic
Harwani PhoneGap Build: Developing Cross Platform Mobile Applications in the Cloud
Cohen et al. The Android OS
Helal et al. Android
Dolce iOS Development with Flash: Your visual blueprint for developing Apple apps
Hansson Multi-Target Mobile App for eDOCS DM
Hossain et al. “NearHand” An Android Based Application

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid