WO2012138046A1 - 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하기 위한 단말장치 및 방법, 그리고 이를 위한 컴퓨터로 판독가능한 기록매체 - Google Patents

범용 운영체제 상에서 안드로이드 어플리케이션을 실행하기 위한 단말장치 및 방법, 그리고 이를 위한 컴퓨터로 판독가능한 기록매체 Download PDF

Info

Publication number
WO2012138046A1
WO2012138046A1 PCT/KR2012/000642 KR2012000642W WO2012138046A1 WO 2012138046 A1 WO2012138046 A1 WO 2012138046A1 KR 2012000642 W KR2012000642 W KR 2012000642W WO 2012138046 A1 WO2012138046 A1 WO 2012138046A1
Authority
WO
WIPO (PCT)
Prior art keywords
android
operating system
general
application
android application
Prior art date
Application number
PCT/KR2012/000642
Other languages
English (en)
French (fr)
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
Priority claimed from KR1020110032475A external-priority patent/KR101249735B1/ko
Application filed by 주식회사 인프라웨어테크놀러지 filed Critical 주식회사 인프라웨어테크놀러지
Publication of WO2012138046A1 publication Critical patent/WO2012138046A1/ko

Links

Images

Classifications

    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Definitions

  • the present invention relates to a technique for running an Android application on a general-purpose operating system.
  • the present invention discloses a technology for executing an Android application in the form of a plug-in or a general PC application of a web browser in a general personal computer or a kiosk terminal device installed with a general-purpose operating system other than the Google Android platform.
  • the present invention provides a Dalvik VM and Android Application Framework, which are ported for these operating systems so that Android applications can be run in a personal computer environment such as Windows or Linux. It provides the native libraries necessary for the framework to work by porting them to the general-purpose operating system base.
  • the present invention provides a plug-in type required by individual browsers such as ActiveX and NPAPI to be executed directly on a web browser in order to increase user convenience.
  • the Google Android platform is a software stack released by Google's OHA (Open Handset Alliance), which includes the Linux kernel, virtual machines (VMs), frameworks, and applications. Software package. It can only be applied to high-end handsets (ie smartphones) that offer relatively large displays and touch screen inputs, such as WVGA with a resolution of 800x480.
  • Google's OHA Open Handset Alliance
  • Android applications can generally only run on these Android platforms. However, running an Android application on a personal computer (PC) with a general purpose operating system is not entirely impossible.
  • the Android emulator has been provided in the past, and if the emulator emulates the personal computer as if it were the Google Android platform, it was possible to run the Android application developed for the Android platform on a general personal computer.
  • the Android emulator emulates the entire Android software stack installed on the terminal device at the processor level, which requires an initial loading time such as rebooting and thus requires considerable work.
  • Android emulator has a structure that emulates a processor (CPU), so it has to go through the initialization process for all the modules in the terminal device and emulate and execute different types of machine language, which results in a lot of performance and convenience.
  • An object of the present invention is to provide a technology that enables an Android application to be executed in the form of a plug-in or a general PC application of a web browser on a general personal computer or a kiosk terminal device having a general operating system other than the Google Android platform. will be.
  • the present invention provides a Dalvik VM and an Android application framework ported for these operating systems so that Android applications can be run in a personal computer environment such as Windows or Linux, and a native library required for the Android application framework to operate is provided. Provided by porting based on general purpose operating system.
  • the present invention provides a plug-in required by individual browsers such as ActiveAx and NPAPI to be executed directly on a web browser in order to increase user convenience.
  • the terminal device for executing the Android application in the general-purpose operating system Android class required for the execution of the Android application by providing a porting API for managing the hardware of the terminal device with code dependent on the general-purpose operating system
  • a PAF component unit 200 having an android framework for operating the library in a general-purpose operating system as a dynamic library, and loading the dynamic library to provide the android framework in real time when the android framework is requested; It manages the installation and removal of the Android application on the general-purpose operating system, and if the execution command for the Android application is provided in the terminal device, requests the PAF component unit to receive and use the Android framework in real time.
  • the Android application driver 100 for directly executing the Android application in the browser without going through the standby screen of the general-purpose operating system using the Android framework is configured.
  • the Android application driver 100 In the terminal device for executing the Android application in the general-purpose operating system according to the present invention, the Android application driver 100, Application control management unit 110 for managing the installation and removal of the Android application;
  • the Android application When the execution command for the installed Android application is provided through the application control management unit, the Android application is requested in real time by requesting the Android framework through the PAF component unit, and the Android application is directly utilized by utilizing the Android framework without going through the standby screen of the general operating system. It is configured to include; the application launcher 120 to run in a browser.
  • the PAF component 200 is a Java API required for the execution of the Android application in order to mediate the general-purpose operating system 300 and the Android application driver 100
  • a class library hierarchy 210 having a core class library module 211 providing a class and an Android framework module 212 providing a class library
  • a porting layer unit 230 that provides a porting API for managing hardware of the terminal device by utilizing code that depends on a general-purpose operating system; It uses hardware resources through porting API provided by the porting layer part when executing Android application through class library and Java API.It is a platform independent module, thread management module, dynamic library management module, external function interface, synchronization module, and memory management module.
  • the native library layer unit 220 having a virtual machine module 221 for running an Android application on a general-purpose operating system and a native library module 222 that is based on implementing a class library of the Android framework module using It is configured to include.
  • the virtual machine module 221 removes the Linux dependent module and is not provided by the general operating system 300, and is a thread management module (pthread), a dynamic library management module (shared object, DLL), and an external function interface (FFI). It is desirable to further reconfigure at least one of: foreign function interface), synchronization module, and memory management module.
  • the Android application driver 100 is composed of a PC application or a browser plug-in.
  • a method for executing an Android application in a general-purpose operating system includes: (a) providing a porting API for managing hardware of a terminal device with code dependent on the general-purpose operating system; (b) providing an Android framework as a dynamic library for operating an Android class library required for execution of an Android application on a general-purpose operating system using a porting API; (c) receiving an operation command for the Android application; (d) executing management of installation and removal of the Android application on the general purpose operating system; (e) receiving an execution command for the installed Android application; (f) dynamically loading the Android framework in real time; (g) using the dynamically loaded Android framework to directly run the Android application in the browser; and configured.
  • the computer-readable recording medium is provided with a porting API that manages the hardware of a terminal device in a code that is dependent on a general-purpose operating system.
  • a dynamic library and upon receiving a request for the Android framework, loads the dynamic library and interoperates with the PAF component unit 200 which operates to provide the Android framework in real time, thereby executing a program for executing an Android application in a general-purpose operating system.
  • the Android framework is requested without requesting the Android framework in real time by using the PAF component unit.
  • the application launcher means for executing directly in the browser by using a; recorded the program made.
  • the computer-readable recording medium is provided with a porting API that manages the hardware of a terminal device in a code that is dependent on a general-purpose operating system.
  • a dynamic library and upon receiving a request for the Android framework, loads the dynamic library and interoperates with the PAF component unit 200 which operates to provide the Android framework in real time, thereby executing a program for executing an Android application in a general-purpose operating system.
  • the Android application can be easily executed once through a simple procedure even in a personal computer or a kiosk device in which a general-purpose operating system is installed.
  • a buyer who wants to purchase an Android application can use it in advance on a personal computer or kiosk terminal device and determine whether to purchase it, so that an accurate purchase decision can be made, thereby increasing the reliability of the open market selling Android applications.
  • the Android application market can be activated.
  • FIG. 1 is a block diagram showing an embodiment of a terminal device for executing an Android application on a general-purpose operating system according to the present invention.
  • Figure 2 is a block diagram showing an embodiment configuration of a PAF component part for the present invention.
  • FIG. 3 is a flow chart illustrating one embodiment of a method for running an Android application on a general purpose operating system in accordance with the present invention.
  • FIG. 4 is a flowchart illustrating an embodiment of an operation performed by an Android application driver to execute an Android application on a general-purpose operating system according to the present invention.
  • FIG. 1 is a block diagram illustrating an exemplary embodiment of a terminal device 1000 that executes Android applications 101 and 102 on a general-purpose operating system 300 according to the spirit of the present invention.
  • the Android platform based on the Linux kernel, provides an environment in which applications can run through the Dalvik VM and the Java-based application framework.
  • the present invention relates to a software structure and an implementation technology for providing an environment in which an Android application can be executed even in a general-purpose operating system for a personal computer such as Windows, Linux, and Mac.
  • the Android execution terminal 1000 includes an Android application driver 100 and a portable Android framework component 200.
  • the Android application driver 100 is provided in the form of a plug-in of a PC application or a browser, and the PAF component unit 200 is provided as a dynamic connection library that can be used by the Android application driver 100.
  • the Android application driver 100 is a launcher program capable of executing the Android applications 101 and 102 in a personal computer environment in which a general general-purpose operating system 300 is installed.
  • This launcher program is implemented in the form of a PC application or a browser plug-in.
  • Browser plug-ins should be developed to meet the plug-in specifications supported by individual browsers. Generally, they are implemented as active axes for Microsoft Explorer and NPAPI for Google Chrome or Mozilla FilreFox. Develop with (Netscape Plugin Application Programming Interface).
  • the Android application driver 100 includes an application control manager 110 and an application launcher 120.
  • the application control management unit 110 is a component that manages the installation (uninstall) of the Android application (101, 102) in the terminal device (1000) or uninstall (uninstall) from the terminal device (1000).
  • Android applications can be loaded locally or remotely.
  • An example of local loading may be reading from an internal storage or a memory card, and an example of remote loading may be to receive data about an Android application from a server 2000 at a remote location.
  • the application launcher unit 120 is a component that directly executes an Android application (APP) installed in the terminal device 1000 in a browser without going through a home screen (HOME UI).
  • APP Android application
  • the application launcher unit 120 requests the Android framework to the PAF component unit 200 and receives the Android framework in real time.
  • the term 'received Android framework in real time' means that when the application launcher 120 requests the Android framework, it is provided within not too long time.
  • the PAF component unit 200 is a part in which the Android application driver 100 implements the PAF in the form of a dynamic library in order to dynamically load and use the Android framework.
  • the portable Android framework includes a core class library module 211, an Android framework module 212, a Dalvik virtual machine 221, a native library module 222, which reduces terminal platform dependency and portability. Porting layer 210 is further provided to increase the level.
  • the Android framework module 212 is a class library and various services necessary for the execution of the Android applications 101 and 102, and preferably recycles those built into the Android platform.
  • Dalvik virtual machine 221 is a configuration that is the core of the Android platform, and preferably modified to use the Dalvik virtual machine of the Android platform.
  • the native library module 222 provides a variety of native modules required to implement the Android framework module 212, and may be preferably configured using open source based software.
  • the porting layer unit 210 additionally implements modules required for application to other platforms other than Android or Linux, that is, general-purpose operating system 300, and includes thread management, dynamic library management, external function call methods, and synchronization methods. , Memory-related additional features, and more.
  • the porting layer unit 210 includes various porting APIs for managing hardware of the terminal device 1000 so that the class library layer unit 210 and the native library layer unit 220 can operate smoothly in the general-purpose operating system 300. To implement using code that depends on the general-purpose operating system (300).
  • One example of such a porting API is the Linux standard API.
  • the portable Android framework (PAF) component unit 200 will be described in detail later with reference to FIG. 2.
  • Korean Patent Application No. 10-2009-0121002 and Patent Application No. 10-2010-0073395 filed by the present applicant is described in detail, so refer to this.
  • FIG. 2 is a block diagram showing an embodiment configuration of a PAF component unit 200 for the present invention.
  • the PAF component unit 200 is divided into a class library layer unit 210, a native library layer unit 220, and a porting layer unit 230 for each layer. Each layer is closer to the physical layer toward the bottom, the lowermost porting layer 230 is connected to the general-purpose operating system 300, the uppermost class library layer 210 is connected to the application layer 10. .
  • the class library hierarchy 210 includes a core class library module 211 and an application framework module 212.
  • the application framework module 212 provides a class library required to run an Android application, and the core class library module 211 provides a Java API.
  • the application framework module 212 is preferably used to modify or reuse the application framework layer on the Google Android platform.
  • the application framework layer included with Google Android includes a class library and various services for running Android applications. At this time, some services irrelevant to the compatibility of the application may be removed to reduce the weight.
  • the core class library module 211 preferably reuses the core library belonging to the Android runtime on the Google Android platform. Android's core library includes basic Java APIs for programming in the Java language.
  • the native library layer unit 220 includes a virtual machine module 221.
  • the virtual machine module 221 includes a class library included in the application framework module 212 and a Java API provided in the core class library module 211. Provides so that the Android application (101, 102) located in the application layer unit 10 can be executed through.
  • the native library layer unit 220 includes a native library module 222 on which the library of the application framework module 212 is based.
  • the virtual machine module 221 modifies and uses the Dalvik virtual machine of the Google Android platform. In other words, you can remove Linux-dependent modules from existing Dalvik virtual machines, add functions not provided by other platforms, and optionally reconfigure the virtual machine into a structure that can be executed on a single task.
  • General-purpose operating system 300 generally provides a multi-task smoothly, so it is not necessary to reconfigure to run in a single task, but may be selected for the convenience of the program.
  • the native library module 222 reuses libraries located under the application framework layer of the Google Android platform.
  • the native library module 222 generally uses open source-based software, and it is preferable to modify and port it as necessary and to place it in the native library hierarchy 220.
  • the porting layer unit 230 connects the native library layer unit 220 and the general-purpose operating system 300, and provides a function of managing hardware of the terminal through the general-purpose operating system 300. That is, the porting layer unit 230 is a layer which provides a porting API (for example, Linux standard API) as a higher layer by processing OS-dependent code internally so that it can be easily ported to another OS.
  • a porting API for example, Linux standard API
  • the porting layer 230 includes file system modules, memory allocation modules, network modules, basic library modules (stdio, stdlib, math, etc.), timer modules, device control modules (display, media, input devices, 3D, etc.), other utilities. And a hardware management module.
  • the porting layer unit 230 accesses, manages, and controls hardware of the terminal device 1000 through a hardware management module.
  • the porting layer 230 includes Kernel (DLL, pthread, etc), System (file, memory, socket, stdio, stdlib, string, math, time), Device (framebuffer, media, input, 3D, etc), Utils (log, debug, etc) are provided.
  • the virtual machine module 221 may be configured by modifying the Dalvik virtual machine of the Android platform.
  • the Dalvik virtual machine is a virtual machine provided by the Google Android platform, and is configured to operate in a smaller memory environment than the Java virtual machine.
  • the virtual machine module 221 for the present invention removes the Linux dependent module and further reconfigures functions not provided by the general-purpose operating system 300.
  • an example of a module that is not provided by the general-purpose operating system 300 and further reconfigured by the virtual machine module 221 may include a thread management module (pthread), a dynamic library management module (shared object, DLL), and an external function interface ( Foreign Function Interface (FFI), synchronization module, and memory management module.
  • pthread thread management module
  • DLL dynamic library management module
  • FFI Foreign Function Interface
  • the core class library module 211 provides a basic Java API for programming in the Java language.
  • the native library module 222 is based on implementing a higher layer library and is ported for general purpose operating systems other than Linux (eg, Windows XP, Vista, and Windows 7).
  • the native library layer unit 220 includes various native library modules 222 that operate in conjunction with the hardware management module of the porting layer unit 230.
  • the application framework module 212 may include various service modules such as a telephone service, a location service, a Bluetooth service, a WIFI service, a USB service, and a sensor service.
  • the service provided by the service module acts as a server or daemon in the whole system and executes the service in the background according to the execution of the Android application.
  • Each service module is modified as necessary, and unnecessary service modules are removed for light weight. That is, the module provided by the host platform is preferably removed from the PAF component unit 200.
  • FIG. 3 is a flowchart illustrating an embodiment of a method of executing an Android application on a general-purpose operating system according to the present invention. Since most technical configurations are common to those already described with reference to FIGS. 1 and 2, the following describes only the flow of the processes sequentially. However, the order of the process is not limited to that shown in FIG. 3, and some steps may be configured in reverse order within the scope of achieving the object of the invention.
  • a porting API for managing hardware of the Android execution terminal device 1000 according to the present invention is prepared by using a code that depends on the general-purpose operating system 300.
  • the porting layer unit 210 of the PAF component unit 200 is provided to reduce platform dependency and increase portability, such as thread management, dynamic library management, external function call method, synchronization method, and memory.
  • Various porting APIs eg, Linux standard APIs
  • related to related additional functions are implemented by utilizing code that depends on the general-purpose operating system 300.
  • step S120 the portable Android framework 200 for operating the Android class library 210 required for the execution of the Android applications 101 and 102 by the general operating system 300 is prepared as a dynamic library using the porting API.
  • the porting layer unit 210 provides a porting API on the general-purpose operating system 300
  • the Android class library 210 may operate on the general-purpose operating system 300.
  • the portable Android framework 200 configured as described above is preferably provided as a dynamic library.
  • Step S130 Receive an operation input for the Android application (101, 102).
  • a user inputs an operation to execute the Android application 101, 102 on the Android execution terminal 1000, for example, a personal computer, for example, via an internet browser.
  • Step S140 In response to the above operation, the application control manager 110 of the Android application driver 100 locally loads or remotely loads an Android application, and then loads the Android application 101, 102 on the general-purpose operating system 300. Run administration for installation and uninstallation
  • an execution command for the Android applications 101 and 102 is received according to a user's manipulation.
  • Step S160 In order to execute the Android applications 101 and 102, the terminal device 1000 dynamically loads the Android framework in real time. More specifically, in response to a user's execution command, the application launcher 120 of the Android application driver 100 requests the Android framework to the PAF component unit 200. In response, the PAF component 200 dynamically loads the Android framework and provides the result to the application launcher 120. Through this process, the terminal device 1000 dynamically loads the Android framework in real time.
  • step S170 the terminal device 1000 directly executes the Android applications 101 and 102 in a browser by using the dynamically loaded Android framework through this process.
  • FIG. 4 is a flowchart illustrating an embodiment of an operation performed by the Android application driver 100 in a process for executing an Android application on a general-purpose operating system according to the present invention. Since most technical configurations are common to those already described with reference to FIG. 3, only the flow of the process will be described below schematically. However, the order of the process is not limited to that shown in FIG. 4, and some steps may be configured in reverse order within the scope of achieving the object of the invention.
  • Step S110 Receive an operation input for the Android application (101, 102).
  • a user inputs an operation to execute the Android application 101, 102 on the Android execution terminal 1000, for example, a personal computer, for example, via an internet browser.
  • Step S210 In response to the above operation, the application control management unit 110 of the Android application driving unit 100 locally loads or remotely loads an Android application, and then loads the Android application 101 or 102 on the general-purpose operating system 300. Run administration for installation and uninstallation
  • an execution command for the Android applications 101 and 102 is received according to a user's manipulation.
  • the application launcher 120 of the Android application driver 100 requests the Android framework to the PAF component unit 200.
  • the PAF component 200 dynamically loads an Android framework and provides the result to the application launcher 120. Through this process, the terminal device 1000 dynamically loads the Android framework in real time.
  • step S250 the android application driving unit 100 executes the android applications 101 and 102 directly in the browser by using the dynamically loaded android framework through this process.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하기 위한 기술에 관한 것이다. 특히, 본 발명은 구글 안드로이드 플랫폼이 아닌 범용 운영체제가 설치된 통상의 개인용컴퓨터나 키오스크 단말장치 등에서 웹 브라우저의 플러그인 형태나 일반 PC 어플리케이션 형태로 안드로이드 어플리케이션을 실행할 수 있는 기술을 개시한다. 본 발명에 따르면, 안드로이드 어플리케이션을 범용 운영체제가 설치된 개인용컴퓨터나 키오스크 장치 등에서도 간단한 절차를 통해서 쉽게 한번 실행시켜 볼 수 있는 장점이 있다. 또한, 안드로이드 어플리케이션을 구매하고자 하는 구매자는 미리 개인용컴퓨터나 키오스크 단말장치에서 한번 사용해보고 구매 여부를 판단할 수 있어, 정확한 구매결정을 할 수 있게 되어 안드로이드 어플리케이션을 판매하는 오픈 마켓의 신뢰성을 높일 수 있고, 이를 통해 안드로이드 어플리케이션 시장의 활성화를 달성할 수 있다.

Description

범용 운영체제 상에서 안드로이드 어플리케이션을 실행하기 위한 단말장치 및 방법, 그리고 이를 위한 컴퓨터로 판독가능한 기록매체
본 발명은 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하기 위한 기술에 관한 것이다. 특히, 본 발명은 구글 안드로이드 플랫폼이 아닌 범용 운영체제가 설치된 통상의 개인용컴퓨터나 키오스크 단말장치 등에서 웹 브라우저의 플러그인(plug-in) 형태나 일반 PC 어플리케이션 형태로 안드로이드 어플리케이션을 실행할 수 있는 기술을 개시한다.
이를 위하여, 본 발명은 안드로이드 어플리케이션을 윈도우즈나 리눅스 등의 개인용컴퓨터 환경에서 실행시킬 수 있도록 이들 운영체제에 맞게 포팅된 달빅 VM(Dalvik VM)과 안드로이드 어플리케이션 프레임워크(Android Application Framework)를 제공하며, 안드로이드 어플리케이션 프레임워크가 동작하는데 필요한 네이티브 라이브러리를 범용 운영체제 기반으로 포팅하여 제공한다. 뿐만 아니라, 본 발명은 사용자의 사용 편의성을 높이기 위해서, 웹 브라우저 상에서 바로 실행시킬 수 있도록 액티브액스(ActiveX)와 NPAPI같은 개별 브라우저가 요구하는 플러그인 형태로도 제공한다.
구글 안드로이드 플랫폼은 구글(Google) 사가 주도하는 OHA(Open Handset Alliance)에서 공개한 소프트웨어 스택으로, 리눅스(Linux) 커널, 가상머신(Virtual Machine: VM), 프레임워크(Framework), 어플리케이션을 모두 포함하는 소프트웨어 패키지이다. 주로 해상도 800x480의 WVGA와 같은 비교적 큰 크기의 디스플레이와 터치 스크린 입력을 제공하는 고사양의 단말기(즉, 스마트폰)에만 적용될 수 있다.
안드로이드 어플리케이션은 일반적으로는 이러한 안드로이드 플랫폼 상에서만 구동이 가능하다. 하지만, 안드로이드 어플리케이션을 일반 범용 운영체제가 설치된 개인용컴퓨터(PC)에서 실행시키는 것이 완전히 불가능한 것은 아니다. 종래에도 안드로이드 에뮬레이터가 제공되었으며, 안드로이드 에뮬레이터가 개인용컴퓨터를 구글 안드로이드 플랫폼인 것처럼 에뮬레이션해주면, 안드로이드 플랫폼 전용으로 개발된 안드로이드 어플리케이션을 일반 개인용컴퓨터에서 구동하는 것이 가능하였다.
그러나, 안드로이드 에뮬레이터는 단말장치에 설치된 안드로이드 소프트웨어 스택 전체를 프로세서 수준에서 에뮬레이션하는 것이어서 재부팅 등과 같은 초기 로딩 시간이 필요하며, 그에 따라 상당한 작업을 요구한다. 안드로이드 에뮬레이터는 프로세서(CPU)를 에뮬레이션하는 구조로 되어 있어, 단말장치에 들어가는 모든 모듈에 대한 초기화 과정을 거쳐야 하고 상이한 방식의 기계어를 에뮬레이션해서 실행시켜야 하므로 성능 및 편의성이 많이 떨어진다.
따라서, 종래로 사용되어온 안드로이드 에뮬레이터는 어떠한 안드로이드 어플리케이션을 사용자가 간단하게 한번 실행해 보는 용도로는 그다지 적절하지 못한 방식이었다. 그에 따라 구글 안드로이드 플랫폼이 아닌 범용 운영체제가 설치된 개인용컴퓨터나 키오스크 단말장치 등에서 안드로이드 어플리케이션을 간편하게 실행하기 위한 기술이 관련 업계에 요구되어 왔다.
본 발명의 목적은 안드로이드 어플리케이션을 구글 안드로이드 플랫폼이 아닌 범용 운영체제가 설치된 통상의 개인용컴퓨터나 키오스크 단말장치 등에서 웹 브라우저의 플러그인(plug-in) 형태나 일반 PC 어플리케이션 형태로 실행될 수 있도록 하는 기술을 제공하는 것이다.
이를 위하여, 본 발명은 안드로이드 어플리케이션을 윈도우즈나 리눅스 등의 개인용컴퓨터 환경에서 실행시킬 수 있도록 이들 운영체제에 맞게 포팅된 달빅 VM과 안드로이드 어플리케이션 프레임워크를 제공하며, 안드로이드 어플리케이션 프레임워크가 동작하는데 필요한 네이티브 라이브러리를 범용 운영체제 기반으로 포팅하여 제공한다. 뿐만 아니라, 본 발명은 사용자의 사용 편의성을 높이기 위해서, 웹 브라우저 상에서 바로 실행시킬 수 있도록 액티브액스와 NPAPI같은 개별 브라우저가 요구하는 플러그인 형태로도 제공한다.
이러한 목적을 달성하기 위하여, 본 발명에 따라 범용 운영체제에서 안드로이드 어플리케이션을 실행하는 단말장치는, 범용 운영체제에 의존적인 코드로 단말장치의 하드웨어를 관리하는 포팅 API를 마련함으로써 안드로이드 어플리케이션의 실행에 필요한 안드로이드 클래스 라이브러리를 범용 운영체제에서 동작하도록 하는 안드로이드 프레임워크를 동적 라이브러리로 구비하여, 안드로이드 프레임워크를 요청받으면 동적 라이브러리를 로딩하여 안드로이드 프레임워크를 실시간으로 제공하는 PAF 콤포넌트부(200); 범용 운영체제 상에서 안드로이드 어플리케이션에 대한 설치 및 제거를 관리하고, 단말장치 내에서 안드로이드 어플리케이션에 대한 실행 명령이 제공되면 PAF 콤포넌트부로 요청하여 안드로이드 프레임워크를 실시간으로 제공받아 사용함으로써, 위 설치된 안드로이드 어플리케이션에 대한 실행 명령을 제공받으면, 안드로이드 프레임워크를 활용하여 안드로이드 어플리케이션을 범용 운영체제의 대기화면을 거치지 않고 직접 브라우저에서 실행시키는 안드로이드 어플리케이션 구동부(100);를 포함하여 구성된다.
본 발명에 따라 범용 운영체제에서 안드로이드 어플리케이션을 실행하는 단말장치에서, 안드로이드 어플리케이션 구동부(100)는, 안드로이드 어플리케이션의 설치 및 제거를 관리하는 어플리케이션 제어관리부(110); 어플리케이션 제어관리부를 통해 설치된 안드로이드 어플리케이션에 대한 실행 명령을 제공받으면, PAF 콤포넌트부로 안드로이드 프레임워크를 요청하여 실시간으로 제공받아 이를 활용하여 안드로이드 어플리케이션을 범용 운영체제의 대기화면을 거치지 않고 안드로이드 프레임워크를 활용하여 직접 브라우저에서 실행시키는 어플리케이션 런처부(120);를 포함하여 구성된다.
또한, 본 발명에 따라 범용 운영체제에서 안드로이드 어플리케이션을 실행하는 단말장치에서, PAF 콤포넌트부(200)는 범용 운영체제(300)와 안드로이드 어플리케이션 구동부(100)를 매개하기 위하여, 안드로이드 어플리케이션의 실행에 필요한 자바 API를 제공하는 코어 클래스 라이브러리 모듈(211)과 클래스 라이브러리를 제공하는 안드로이드 프레임워크 모듈(212)을 구비하는 클래스 라이브러리 계층부(210); 범용 운영체제에 의존적인 코드를 활용하여 단말장치의 하드웨어를 관리하기 위한 포팅 API를 제공하는 포팅 계층부(230); 클래스 라이브러리와 자바 API를 통한 안드로이드 어플리케이션 실행시 포팅 계층부에서 제공하는 포팅 API를 통해 하드웨어 리소스를 사용하며, 플랫폼 독립형 모듈인 쓰레드 관리 모듈, 동적 라이브러리 관리 모듈, 외부 함수 인터페이스, 동기화 모듈, 메모리 관리 모듈을 이용하여, 안드로이드 어플리케이션을 범용 운영체제 상에서 실행되도록 하는 가상머신 모듈(221)과, 안드로이드 프레임워크 모듈의 클래스 라이브러리를 구현하는데 기반이 되는 네이티브 라이브러리 모듈(222)을 구비하는 네이티브 라이브러리 계층부(220);를 포함하여 구성된다.
이때, 가상머신 모듈(221)은 리눅스 의존적인 모듈을 제거하고 범용 운영체제(300)에서 제공하지 않는 모듈로서 쓰레드 관리 모듈(pthread), 동적 라이브러리 관리 모듈(shared object, DLL), 외부 함수 인터페이스(FFI: Foreign Function Interface), 동기화 모듈, 메모리 관리 모듈의 적어도 하나 이상을 추가 재구성하는 것이 바람직하다. 또한, 안드로이드 어플리케이션 구동부(100)는 PC 어플리케이션 또는 브라우저 플러그인으로 구성된다.
본 발명에 따라 범용 운영체제에서 안드로이드 어플리케이션을 실행하는 방법은, (a) 범용 운영체제에 의존적인 코드로 단말장치의 하드웨어를 관리하는 포팅 API를 마련하는 단계; (b) 포팅 API를 사용하여 안드로이드 어플리케이션의 실행에 필요한 안드로이드 클래스 라이브러리를 범용 운영체제에서 동작하도록 하는 안드로이드 프레임워크를 동적 라이브러리로 마련하는 단계; (c) 안드로이드 어플리케이션에 대한 조작 명령을 제공받는 단계; (d) 범용 운영체제 상에서 안드로이드 어플리케이션에 대한 설치 및 제거에 대한 관리를 실행하는 단계; (e) 위 설치된 안드로이드 어플리케이션에 대한 실행 명령을 제공받는 단계; (f) 안드로이드 프레임워크를 실시간으로 동적 로딩하는 단계; (g) 위 동적으로 로딩된 안드로이드 프레임워크를 활용하여 안드로이드 어플리케이션을 직접 브라우저에서 실행하는 단계;를 포함하여 구성된다.
본 발명에 따른 컴퓨터로 판독가능한 기록매체는, 단말장치의 하드웨어를 관리하는 포팅 API를 범용 운영체제에 의존적인 코드로 마련함으로써 안드로이드 어플리케이션의 실행에 필요한 안드로이드 클래스 라이브러리를 범용 운영체제에서 동작하도록 하는 안드로이드 프레임워크를 동적 라이브러리로 구비하여, 안드로이드 프레임워크에 대한 요청을 접수하면 동적 라이브러리를 로딩하여 안드로이드 프레임워크를 실시간으로 제공하도록 동작하는 PAF 콤포넌트부(200)와 연동함으로써 범용 운영체제에서 안드로이드 어플리케이션을 실행하는 프로그램을 기록한 것으로서, 안드로이드 어플리케이션의 설치 및 제거를 관리하는 어플리케이션 제어관리 수단; 어플리케이션 제어관리 수단을 통해 단말장치에 설치된 안드로이드 어플리케이션에 대한 실행 명령을 제공받으면, PAF 콤포넌트부로 안드로이드 프레임워크를 요청하여 실시간으로 제공받아 이를 활용하여 안드로이드 어플리케이션을 범용 운영체제의 대기화면을 거치지 않고 안드로이드 프레임워크를 활용하여 직접 브라우저에서 실행시키는 어플리케이션 런처 수단;을 포함하여 이루어진 프로그램을 기록한 것이다.
본 발명에 따른 컴퓨터로 판독가능한 기록매체는, 단말장치의 하드웨어를 관리하는 포팅 API를 범용 운영체제에 의존적인 코드로 마련함으로써 안드로이드 어플리케이션의 실행에 필요한 안드로이드 클래스 라이브러리를 범용 운영체제에서 동작하도록 하는 안드로이드 프레임워크를 동적 라이브러리로 구비하여, 안드로이드 프레임워크에 대한 요청을 접수하면 동적 라이브러리를 로딩하여 안드로이드 프레임워크를 실시간으로 제공하도록 동작하는 PAF 콤포넌트부(200)와 연동함으로써 범용 운영체제에서 안드로이드 어플리케이션을 실행하는 프로그램을 기록한 것으로서, (h) 안드로이드 어플리케이션에 대한 조작 입력을 제공받는 단계; (i) 범용 운영체제 상에서 안드로이드 어플리케이션에 대한 설치 및 제거에 대한 관리를 실행하는 단계; (j) 위 설치된 안드로이드 어플리케이션에 대한 실행 명령을 제공받는 단계; (k) PAF 콤포넌트부(200)로 안드로이드 프레임워크를 요청하는 단계; (l) PAF 콤포넌트부(200)로부터 안드로이드 프레임워크를 실시간으로 제공받는 단계; (m) 안드로이드 프레임워크를 활용하여 안드로이드 어플리케이션을 직접 브라우저에서 실행하는 단계;를 수행하는 프로그램을 기록한 것이다.
본 발명에 따르면, 안드로이드 어플리케이션을 범용 운영체제가 설치된 개인용컴퓨터나 키오스크 장치 등에서도 간단한 절차를 통해서 쉽게 한번 실행시켜 볼 수 있는 장점이 있다. 또한, 안드로이드 어플리케이션을 구매하고자 하는 구매자는 미리 개인용컴퓨터나 키오스크 단말장치에서 한번 사용해보고 구매 여부를 판단할 수 있어, 정확한 구매결정을 할 수 있게 되어 안드로이드 어플리케이션을 판매하는 오픈 마켓의 신뢰성을 높일 수 있고, 이를 통해 안드로이드 어플리케이션 시장의 활성화를 달성할 수 있다.
도 1은 본 발명에 따라 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하는 단말장치의 일 실시예 구성을 나타낸 블록도.
도 2는 본 발명을 위한 PAF 콤포넌트부의 일 실시예 구성을 나타낸 블록도.
도 3은 본 발명에 따라 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하는 방법의 일 실시예를 나타낸 순서도.
도 4는 본 발명에 따라 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하기 위하여 안드로이드 어플리케이션 구동부가 수행하는 동작의 일 실시예를 나타낸 순서도.
이하에서는 도면을 참조하여 본 발명을 상세하게 설명한다.
도 1은 본 발명의 기술적 사상에 따라 범용 운영체제(300) 상에서 안드로이드 어플리케이션(101, 102)을 실행하는 단말장치(1000)의 일 실시예 구성을 나타낸 블록도이다.
안드로이드 플랫폼은 리눅스 커널을 기반으로 달빅 가상머신(Dalvik VM)과 자바 기반 어플리케이션 프레임워크를 통해 어플리케이션이 실행될 수 있는 환경을 제공한다. 본 발명은 윈도우즈, 리눅스, 맥(Mac)과 같은 개인용컴퓨터를 위한 범용 운영체제에서도 안드로이드 어플리케이션을 실행시킬 수 있는 환경을 제공하기 위한 소프트웨어 구조와 그 구현기술에 관한 것이다.
본 발명에 따른 안드로이드 실행 단말장치(1000)는 안드로이드 어플리케이션 구동부(100)와 포터블 안드로이드 프레임워크 콤포넌트부(200)로 이루어진다. 안드로이드 어플리케이션 구동부(100)는 PC 어플리케이션이나 브라우저의 플러그인 형태로 제공되며, PAF 콤포넌트부(200)는 안드로이드 어플리케이션 구동부(100)가 사용 가능한 동적 연결 라이브러리로 제공된다.
먼저, 안드로이드 어플리케이션 구동부(100)에 대해 기술한다. 안드로이드 어플리케이션 구동부(100)는 통상의 범용 운영체제(300)가 설치된 개인용컴퓨터 환경에서 안드로이드 어플리케이션(101, 102)을 실행시킬 수 있는 런처 프로그램이다. 이 런처 프로그램의 형태는 PC 어플리케이션이나 브라우저 플러그인의 형태로 구현된다. 브라우저 플러그인은 개별 브라우저가 지원하는 플러그인 기술사양에 맞게 개발해야 하는데, 일반적으로 마이크로소프트 익스플로러(MS Explorer)에 대해서는 액티브액스로 구현하고 구글크롬(Google Chrome)이나 모질라 파이어폭스(Mozilla FilreFox)에 대해서는 NPAPI(Netscape Plugin Application Programming Interface)로 개발한다.
안드로이드 어플리케이션 구동부(100)는 어플리케이션 제어관리부(110)와 어플리케이션 런처부(120)로 이루어진다. 어플리케이션 제어관리부(110)는 안드로이드 어플리케이션(101, 102)을 단말장치(1000)에 설치(install)하거나 단말장치(1000)로부터 삭제(uninstall)하는 것을 관리하는 구성요소이다. 안드로이드 어플리케이션은 로컬에서 로딩될 수도 있고, 리모트에서 로딩될 수도 있다. 로컬 로딩의 예로는 내장 스토리지 또는 메모리 카드로부터 판독하여 로딩하는 것을 생각할 수 있고, 리모트 로딩의 예로는 원격지의 서버(2000)로부터 안드로이드 어플리케이션에 관한 데이터를 제공받는 것을 생각할 수 있다.
어플리케이션 런처부(120)는 단말장치(1000)에 설치된 안드로이드 어플리케이션(APP)을 대기화면(HOME UI)을 거치지 않고 직접 브라우저에서 실행시키는 구성요소이다. 안드로이드 어플리케이션(101, 102)을 단말장치(1000)에서 실행할 때, 어플리케이션 런처부(120)는 PAF 콤포넌트부(200)로 안드로이드 프레임워크를 요청하고, 그에 대하여 안드로이드 프레임워크를 실시간으로 제공받는다. 본 명세서에서 '안드로이드 프레임워크를 실시간으로 제공받는다'라는 말의 의미는 어플리케이션 런처부(120)가 필요할 때 안드로이드 프레임워크를 요청하면 너무 오래지않은 시간 내에 제공된다는 것을 의미한다.
이어서, PAF 콤포넌트부(200)에 대해 기술한다. PAF 콤포넌트부(200)는 안드로이드 어플리케이션 구동부(100)가 안드로이드 프레임워크를 동적으로 로딩하여 사용하기 위해 PAF를 동적 라이브러리 형태로 구현한 부분이다. 포터블 안드로이드 프레임워크(PAF)는 코어 클래스 라이브러리 모듈(211), 안드로이드 프레임워크 모듈(212), 달빅 가상머신(221), 네이티브 라이브러리 모듈(222)을 구비하며, 단말 플랫폼 의존성을 줄여주고 이식성(portability)을 높여주기 위해 포팅 계층부(210)를 더 구비한다. 안드로이드 프레임워크 모듈(212)은 안드로이드 어플리케이션(101, 102)의 실행에 필요한 클래스 라이브러리와 각종 서비스로서 바람직하게는 안드로이드 플랫폼에 내장된 것을 재활용한다.
달빅 가상머신(221)은 안드로이드 플랫폼의 핵심이 되는 구성으로, 바람직하게는 안드로이드 플랫폼의 달빅 가상머신을 수정하여 사용한다. 네이티브 라이브러리 모듈(222)는 안드로이드 프레임워크 모듈(212)을 구현하는데 필요한 각종의 네이티브 모듈을 제공하는데, 바람직하게는 공개 소스 기반의 소프트웨어를 사용하여 구성할 수 있다.
포팅 계층부(210)에서는 안드로이드나 리눅스가 아닌 타 플랫폼, 즉 범용 운영체제(300)에 적용할 때 필요한 모듈을 추가로 구현하며, 쓰레드(thread) 관리, 동적 라이브러리 관리, 외부 함수 호출 방법, 동기화 방법, 메모리 관련 추가 기능 등을 제공한다. 포팅 계층부(210)는 범용 운영체제(300)에서 클래스 라이브러리 계층부(210)와 네이티브 라이브러리 계층부(220)가 원활하게 동작할 수 있도록 단말장치(1000)의 하드웨어를 관리하기 위한 각종의 포팅 API를 범용 운영체제(300)에 의존적인 코드를 활용하여 구현한다. 이러한 포팅 API의 일 예로 리눅스 표준 API를 생각할 수 있다.
한편, 포터블 안드로이드 프레임워크(PAF) 콤포넌트부(200)에 대해서는 도 2를 참조하여 자세하게 후술한다. 특히, 본원 출원인에 의해 출원된 대한민국 특허출원 제10-2009-0121002호와 특허출원 제10-2010-0073395호에 PAF에 대해 자세하게 기재되어 있으므로 이를 참조한다.
도 2는 본 발명을 위한 PAF 콤포넌트부(200)의 일 실시예 구성을 나타낸 블록도이다.
PAF 콤포넌트부(200)는 각 계층별로 클래스 라이브러리 계층부(210), 네이티브 라이브러리 계층부(220), 포팅 계층부(230)로 구분된다. 각 계층은 아래쪽으로 갈수록 물리계층에 밀접해지는데, 최하단의 포팅 계층부(230)는 범용 운영체제(300)와 연결되고, 최상단의 클래스 라이브러리 계층부(210)는 어플리케이션 계층부(10)와 연결된다.
클래스 라이브러리 계층부(210)는 코어 클래스 라이브러리 모듈(211)과 어플리케이션 프레임워크 모듈(212)을 포함한다. 어플리케이션 프레임워크 모듈(212)은 안드로이드 어플리케이션을 실행시키는데 필요한 클래스 라이브러리를 제공하고, 코어 클래스 라이브러리 모듈(211)은 자바 API를 제공한다.
본 발명의 일 실시예에서, 어플리케이션 프레임워크 모듈(212)은 구글 안드로이드 플랫폼에서 어플리케이션 프레임워크 계층을 수정하거나 재사용하여 사용하는 것이 바람직하다. 구글 안드로이드에 포함된 어플리케이션 프레임워크 계층에는 안드로이드 어플리케이션을 실행시키는데 필요한 클래스 라이브러리와 각종의 서비스가 구비되어 있다. 이때, 어플리케이션의 호환성과 무관한 일부 서비스는 경량화를 위해 제거될 수 있다. 또한, 코어 클래스 라이브러리 모듈(211)은 구글 안드로이드 플랫폼에서 안드로이드 런타임에 속하는 코어 라이브러리를 재사용하는 것이 바람직하다. 안드로이드의 코어 라이브러리에는 자바 언어로 프로그래밍을 하기 위한 기본적인 자바 API가 구비되어 있다.
네이티브 라이브러리 계층부(220)는 가상머신 모듈(221)을 포함하는데, 가상머신 모듈(221)은 어플리케이션 프래임워크 모듈(212)에 구비된 클래스 라이브러리와 코어 클래스 라이브러리 모듈(211)에 구비된 자바 API를 통하여 어플리케이션 계층부(10)에 위치한 안드로이드 어플리케이션(101, 102)이 실행될 수 있도록 제공한다. 또한, 네이티브 라이브러리 계층부(220)는 어플리케이션 프레임워크 모듈(212)의 라이브러리를 구현하는데 기반이 되는 네이티브 라이브러리 모듈(222)을 구비한다.
본 발명의 일 실시예에서, 가상머신 모듈(221)은 구글 안드로이드 플랫폼의 달빅(Dalvik) 가상머신을 수정하여 사용한다. 즉, 기존의 달빅 가상머신으로부터 리눅스 의존적인 모듈을 제거하고 타 플랫폼에서 제공하지 않는 기능들을 추가하며 선택적으로는 싱글 태스크 상에서도 실행될 수 있는 구조로 가상머신을 재구성하여 사용할 수 있다. 범용 운영체제(300)는 일반적으로 멀티 태스크를 원활하게 제공하므로 굳이 싱글 태스크에서 실행하도록 재구성할 필요성은 높지 않으나, 프로그램의 편이를 위해 선택할 수도 있다.
또한, 네이티브 라이브러리 모듈(222)은 구글 안드로이드 플랫폼의 어플리케이션 프레임워크 계층의 아래에 위치한 라이브러리를 재사용한다. 이때, 네이티브 라이브러리 모듈(222)은 일반적으로 공개 소스(open source) 기반의 소프트웨어를 사용하고 있으며 이를 필요에 따라 수정 및 포팅하여 네이티브 라이브러리 계층부(220)에 배치하는 것이 바람직하다.
포팅 계층부(230)는 네이티브 라이브러리 계층부(220)와 범용 운영체제(300)을 연결하며, 범용 운영체제(300)을 통해 단말의 하드웨어를 관리하는 기능을 제공한다. 즉, 포팅 계층부(230)는 타 운영체제에 쉽게 이식할 수 있도록 운영체제 의존적인 코드를 내부에서 처리하여 상위 계층으로는 포팅 API(예: 리눅스 표준 API)를 제공하는 계층이다.
포팅 계층부(230)는 파일 시스템 모듈, 메모리 할당 모듈, 네트워크 모듈, 기본 라이브러리 모듈(stdio, stdlib, math 등), 타이머 모듈, 디바이스 제어 모듈(디스플레이, 미디어, 입력장치, 3D 등), 기타 유틸리티 등의 하드웨어 관리 모듈을 포함한다. 그리고, 포팅 계층부(230)는 하드웨어 관리 모듈을 통해 단말장치(1000)의 하드웨어에 접근하여 관리 및 제어한다. 예컨대, 포팅 계층부(230)에는 Kernel (DLL, pthread, etc), System (file, memory, socket, stdio, stdlib, string, math, time), Device (framebuffer, media, input, 3D, etc), Utils (log, debug, etc) 등이 구비된다.
가상머신 모듈(221)은 안드로이드 플랫폼의 달빅 가상머신을 수정하여 구성하는 것이 바람직하다. 달빅 가상머신은 구글 안드로이드 플랫폼에서 제공하는 가상머신으로, 자바 가상머신보다 작은 메모리환경에서 동작할 수 있도록 구성되었다. 본 발명을 위한 가상머신 모듈(221)은 리눅스 의존적인 모듈을 제거하고 범용 운영체제(300)에서 제공하지 않는 기능을 추가 재구성한다. 이처럼, 범용 운영체제(300)에서 제공하지 않아 가상머신 모듈(221)이 추가 재구성하는 모듈의 일 예를 정리하면 쓰레드 관리 모듈(pthread), 동적 라이브러리 관리 모듈(shared object, DLL), 외부 함수 인터페이스(FFI: Foreign Function Interface), 동기화 모듈, 메모리 관리 모듈을 포함한다.
코어 클래스 라이브러리 모듈(211)은 자바 언어로 프로그래밍을 하기 위한 기본적인 자바 API를 제공한다.
네이티브 라이브러리 모듈(222)은 상위 계층의 라이브러리를 구현하는데 기반이 되며 리눅스 외의 범용 운영체제(예: 윈도우즈 XP, Vista, Windows7)에 맞도록 포팅된다.
네이티브 라이브러리 계층부(220)에는 포팅 계층부(230)의 하드웨어 관리 모듈과 연동하여 동작하는 다양한 네이티브 라이브러리 모듈(222)을 구비한다.
어플리케이션 프레임워크 모듈(212)에는 전화 서비스, 위치 서비스, 블루투스 서비스, WIFI 서비스, USB 서비스, 센서 서비스 등의 다양한 서비스 모듈이 포함될 수 있다. 이때, 서비스 모듈에서 제공하는 서비스는 전체 시스템 내에서 서버 또는 데몬과 같은 역할을 하며 안드로이드 어플리케이션의 실행에 따라 해당 서비스를 백그라운드로 실행시킨다.
각 서비스 모듈은 필요에 따라 수정되며, 경량화를 위해 필요없는 서비스 모듈은 제거된다. 즉, 호스트 플랫폼에서 제공하는 모듈은 PAF 콤포넌트부(200)에서 제거되는 것이 바람직하다.
도 3은 본 발명에 따라 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하는 방법의 일 실시예를 나타낸 순서도이다. 대부분의 기술적 구성이 도 1과 도 2를 참조하여 이미 설명한 바와 공통되므로, 이하에서는 프로세스의 흐름에 대해서만 순차적으로 설명한다. 다만, 프로세스의 순서는 도 3에 도시된 것에 한정되지 않으며, 발명의 목적을 달성하는 범위 내에서 일부 단계가 서로 순서를 바꾸어 구성될 수도 있다.
(S110) 단계 : 범용 운영체제(300)에 의존적인 코드를 사용하여 본 발명에 따른 안드로이드 실행 단말장치(1000)의 하드웨어를 관리하는 포팅 API를 마련한다. 전술한 바와 같이, PAF 콤포넌트부(200)의 포팅 계층부(210)는 플랫폼 의존성을 줄여주고 이식성을 높여주기 위해 제공되는 것으로, 쓰레드) 관리, 동적 라이브러리 관리, 외부 함수 호출 방법, 동기화 방법, 메모리 관련 추가 기능 등에 관한 각종의 포팅 API(예: 리눅스 표준 API)를 범용 운영체제(300)에 의존적인 코드를 활용하여 구현한다.
(S120) 단계 : 포팅 API를 사용하여 안드로이드 어플리케이션(101, 102)의 실행에 필요한 안드로이드 클래스 라이브러리(210)를 범용 운영체제(300)에서 동작하도록 하는 포터블 안드로이드 프레임워크(200)를 동적 라이브러리로 마련한다. 본 발명에서는 포팅 계층부(210)가 범용 운영체제(300) 상에서 포팅 API를 제공함에 따라 안드로이드 클래스 라이브러리(210)가 범용 운영체제(300) 상에서 동작할 수 있게 된다. 이렇게 구성된 포터블 안드로이드 프레임워크(200)는 동적 라이브러리로 마련되는 것이 바람직하다.
(S130) 단계 : 안드로이드 어플리케이션(101, 102)에 대한 조작 입력을 수신한다. 사용자가 예컨대 인터넷 브라우저를 통하여 안드로이드 어플리케이션(101, 102)을 안드로이드 실행 단말장치(1000), 예컨대 개인용컴퓨터에서 한번 실행해보고자 하는 조작을 입력한다.
(S140) 단계 : 위의 조작에 대응하여 안드로이드 어플리케이션 구동부(100)의 어플리케이션 제어관리부(110)에서는 안드로이드 어플리케이션을 로컬 로딩하거나 리모트 로딩한 후, 범용 운영체제(300) 상에서 안드로이드 어플리케이션(101, 102)에 대한 설치 및 제거에 대한 관리를 실행한다.
(S150) 단계 : 이어서, 사용자의 조작에 따라 안드로이드 어플리케이션(101, 102)에 대한 실행 명령을 수신한다.
(S160) 단계 : 안드로이드 어플리케이션(101, 102)을 실행하기 위하여 단말장치(1000)는 안드로이드 프레임워크를 실시간으로 동적 로딩한다. 좀더 구체적으로 기술하자면, 사용자의 실행 명령에 대응하여, 안드로이드 어플리케이션 구동부(100)의 어플리케이션 런처부(120)은 PAF 콤포넌트부(200)로 안드로이드 프레임워크를 요청한다. 이에 대응하여, PAF 콤포넌트부(200)는 안드로이드 프레임워크를 동적으로 로딩하고, 그 결과를 어플리케이션 런처부(120)로 제공한다. 이러한 과정을 통하여 단말장치(1000)는 안드로이드 프레임워크를 실시간으로 동적 로딩한다.
(S170) 단계 : 이러한 과정을 통하여 동적으로 로딩된 안드로이드 프레임워크를 활용하여 단말장치(1000)는 안드로이드 어플리케이션(101, 102)을 직접 브라우저에서 실행한다.
도 4는 본 발명에 따라 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하기 위한 프로세스 중에서, 안드로이드 어플리케이션 구동부(100)가 수행하는 동작의 일 실시예를 나타낸 순서도이다. 대부분의 기술적 구성이 도 3을 참조하여 이미 설명한 바와 공통되므로, 이하에서는 프로세스의 흐름에 대해서만 개략적으로 기술한다. 다만, 프로세스의 순서는 도 4에 도시된 것에 한정되지 않으며, 발명의 목적을 달성하는 범위 내에서 일부 단계가 서로 순서를 바꾸어 구성될 수도 있다.
(S110) 단계 : 안드로이드 어플리케이션(101, 102)에 대한 조작 입력을 수신한다. 사용자가 예컨대 인터넷 브라우저를 통하여 안드로이드 어플리케이션(101, 102)을 안드로이드 실행 단말장치(1000), 예컨대 개인용컴퓨터에서 한번 실행해보고자 하는 조작을 입력한다.
(S210) 단계 : 위의 조작에 대응하여 안드로이드 어플리케이션 구동부(100)의 어플리케이션 제어관리부(110)에서는 안드로이드 어플리케이션을 로컬 로딩하거나 리모트 로딩한 후, 범용 운영체제(300) 상에서 안드로이드 어플리케이션(101, 102)에 대한 설치 및 제거에 대한 관리를 실행한다.
(S220) 단계 : 이어서, 사용자의 조작에 따라 안드로이드 어플리케이션(101, 102)에 대한 실행 명령을 수신한다.
(S230) 단계 : 사용자의 실행 명령에 대응하여, 안드로이드 어플리케이션 구동부(100)의 어플리케이션 런처부(120)은 PAF 콤포넌트부(200)로 안드로이드 프레임워크를 요청한다.
(S240) 단계 : 어플리케이션 런처부(120)의 요청에 대응하여 PAF 콤포넌트부(200)는 안드로이드 프레임워크를 동적으로 로딩하고, 그 결과를 어플리케이션 런처부(120)로 제공한다. 이러한 과정을 통하여 단말장치(1000)는 안드로이드 프레임워크를 실시간으로 동적 로딩한다.
(S250) 단계 : 이러한 과정을 통하여 동적으로 로딩된 안드로이드 프레임워크를 활용하여 안드로이드 어플리케이션 구동부(100)는 안드로이드 어플리케이션(101, 102)을 직접 브라우저에서 실행한다.

Claims (8)

  1. 범용 운영체제에서 안드로이드 어플리케이션을 실행하기 위한 단말장치로서,
    상기 범용 운영체제에 의존적인 코드로 상기 단말장치의 하드웨어를 관리하는 포팅 API를 마련함으로써 안드로이드 어플리케이션의 실행에 필요한 안드로이드 클래스 라이브러리를 상기 범용 운영체제에서 동작하도록 하는 안드로이드 프레임워크를 동적 라이브러리로 구비하여, 안드로이드 프레임워크를 요청받으면 상기 동적 라이브러리를 로딩하여 안드로이드 프레임워크를 실시간으로 제공하는 PAF 콤포넌트부(200);
    상기 범용 운영체제 상에서 안드로이드 어플리케이션에 대한 설치 및 제거를 관리하고, 상기 단말장치 내에서 안드로이드 어플리케이션에 대한 실행 명령이 제공되면 상기 PAF 콤포넌트부로 요청하여 상기 안드로이드 프레임워크를 실시간으로 제공받아 사용함으로써, 상기 설치된 안드로이드 어플리케이션에 대한 실행 명령을 제공받으면, 상기 안드로이드 프레임워크를 활용하여 상기 안드로이드 어플리케이션을 상기 범용 운영체제의 대기화면을 거치지 않고 직접 브라우저에서 실행시키는 안드로이드 어플리케이션 구동부(100);
    를 포함하여 구성되는 범용 운영체제에서 안드로이드 어플리케이션을 실행하기 위한 단말장치.
  2. 청구항 1에 있어서,
    상기 안드로이드 어플리케이션 구동부(100)는,
    상기 안드로이드 어플리케이션의 설치 및 제거를 관리하는 어플리케이션 제어관리부(110);
    상기 어플리케이션 제어관리부를 통해 설치된 안드로이드 어플리케이션에 대한 실행 명령을 제공받으면, 상기 PAF 콤포넌트부로 안드로이드 프레임워크를 요청하여 실시간으로 제공받아 이를 활용하여 상기 안드로이드 어플리케이션을 상기 범용 운영체제의 대기화면을 거치지 않고 상기 안드로이드 프레임워크를 활용하여 직접 브라우저에서 실행시키는 어플리케이션 런처부(120);
    를 포함하여 구성되는 것을 특징으로 하는 범용 운영체제에서 안드로이드 어플리케이션을 실행하기 위한 단말장치.
  3. 청구항 2에 있어서,
    상기 PAF 콤포넌트부(200)는 상기 범용 운영체제(300)와 상기 안드로이드 어플리케이션 구동부(100)를 매개하기 위하여,
    상기 안드로이드 어플리케이션의 실행에 필요한 자바 API를 제공하는 코어 클래스 라이브러리 모듈(211)과 클래스 라이브러리를 제공하는 안드로이드 프레임워크 모듈(212)을 구비하는 클래스 라이브러리 계층부(210);
    상기 범용 운영체제에 의존적인 코드를 활용하여 상기 단말장치의 하드웨어를 관리하기 위한 포팅 API를 제공하는 포팅 계층부(230);
    상기 클래스 라이브러리와 상기 자바 API를 통한 상기 안드로이드 어플리케이션 실행시 상기 포팅 계층부에서 제공하는 상기 포팅 API를 통해 하드웨어 리소스를 사용하며, 플랫폼 독립형 모듈인 쓰레드 관리 모듈, 동적 라이브러리 관리 모듈, 외부 함수 인터페이스, 동기화 모듈, 메모리 관리 모듈을 이용하여, 상기 안드로이드 어플리케이션을 상기 범용 운영체제 상에서 실행되도록 하는 가상머신 모듈(221)과, 상기 안드로이드 프레임워크 모듈의 클래스 라이브러리를 구현하는데 기반이 되는 네이티브 라이브러리 모듈(222)을 구비하는 네이티브 라이브러리 계층부(220);
    를 포함하여 구성되는 것을 특징으로 하는 범용 운영체제에서 안드로이드 어플리케이션을 실행하기 위한 단말장치.
  4. 청구항 3에 있어서,
    상기 가상머신 모듈(221)은 리눅스 의존적인 모듈을 제거하고 상기 범용 운영체제(300)에서 제공하지 않는 모듈로서 쓰레드 관리 모듈(pthread), 동적 라이브러리 관리 모듈(shared object, DLL), 외부 함수 인터페이스(FFI: Foreign Function Interface), 동기화 모듈, 메모리 관리 모듈의 적어도 하나 이상을 추가 재구성하는 것을 특징으로 하는 범용 운영체제에서 안드로이드 어플리케이션을 실행하기 위한 단말장치.
  5. 청구항 4에 있어서,
    상기 안드로이드 어플리케이션 구동부(100)는 PC 어플리케이션 또는 브라우저 플러그인으로 구성되는 것을 특징으로 하는 범용 운영체제에서 안드로이드 어플리케이션을 실행하기 위한 단말장치.
  6. 범용 운영체제에서 안드로이드 어플리케이션을 실행하기 위한 방법으로서,
    (a) 상기 범용 운영체제에 의존적인 코드로 단말장치의 하드웨어를 관리하는 포팅 API를 마련하는 단계;
    (b) 상기 포팅 API를 사용하여 안드로이드 어플리케이션의 실행에 필요한 안드로이드 클래스 라이브러리를 상기 범용 운영체제에서 동작하도록 하는 안드로이드 프레임워크를 동적 라이브러리로 마련하는 단계;
    (c) 안드로이드 어플리케이션에 대한 조작 명령을 제공받는 단계;
    (d) 상기 범용 운영체제 상에서 안드로이드 어플리케이션에 대한 설치 및 제거에 대한 관리를 실행하는 단계;
    (e) 상기 설치된 안드로이드 어플리케이션에 대한 실행 명령을 제공받는 단계;
    (f) 상기 안드로이드 프레임워크를 실시간으로 동적 로딩하는 단계;
    (g) 상기 동적으로 로딩된 안드로이드 프레임워크를 활용하여 상기 안드로이드 어플리케이션을 직접 브라우저에서 실행하는 단계;
    를 포함하여 구성되는 범용 운영체제에서 안드로이드 어플리케이션을 실행하는 방법.
  7. 단말장치의 하드웨어를 관리하는 포팅 API를 범용 운영체제에 의존적인 코드로 마련함으로써 안드로이드 어플리케이션의 실행에 필요한 안드로이드 클래스 라이브러리를 상기 범용 운영체제에서 동작하도록 하는 안드로이드 프레임워크를 동적 라이브러리로 구비하여, 상기 안드로이드 프레임워크에 대한 요청을 접수하면 상기 동적 라이브러리를 로딩하여 안드로이드 프레임워크를 실시간으로 제공하도록 동작하는 PAF 콤포넌트부(200)와 연동함으로써 상기 범용 운영체제에서 안드로이드 어플리케이션을 실행하는 프로그램을 기록한 컴퓨터로 판독가능한 기록매체로서,
    상기 안드로이드 어플리케이션의 설치 및 제거를 관리하는 어플리케이션 제어관리 수단;
    상기 어플리케이션 제어관리 수단을 통해 상기 단말장치에 설치된 안드로이드 어플리케이션에 대한 실행 명령을 제공받으면, 상기 PAF 콤포넌트부로 안드로이드 프레임워크를 요청하여 실시간으로 제공받아 이를 활용하여 상기 안드로이드 어플리케이션을 상기 범용 운영체제의 대기화면을 거치지 않고 상기 안드로이드 프레임워크를 활용하여 직접 브라우저에서 실행시키는 어플리케이션 런처 수단;
    을 포함하여 이루어진 범용 운영체제에서 안드로이드 어플리케이션을 실행하는 프로그램을 기록한 컴퓨터로 판독가능한 기록매체.
  8. 단말장치의 하드웨어를 관리하는 포팅 API를 범용 운영체제에 의존적인 코드로 마련함으로써 안드로이드 어플리케이션의 실행에 필요한 안드로이드 클래스 라이브러리를 상기 범용 운영체제에서 동작하도록 하는 안드로이드 프레임워크를 동적 라이브러리로 구비하여, 상기 안드로이드 프레임워크에 대한 요청을 접수하면 상기 동적 라이브러리를 로딩하여 안드로이드 프레임워크를 실시간으로 제공하도록 동작하는 PAF 콤포넌트부(200)와 연동함으로써 상기 범용 운영체제에서 안드로이드 어플리케이션을 실행하는 프로그램을 기록한 컴퓨터로 판독가능한 기록매체로서,
    (h) 안드로이드 어플리케이션에 대한 조작 입력을 제공받는 단계;
    (i) 상기 범용 운영체제 상에서 안드로이드 어플리케이션에 대한 설치 및 제거에 대한 관리를 실행하는 단계;
    (j) 상기 설치된 안드로이드 어플리케이션에 대한 실행 명령을 제공받는 단계;
    (k) 상기 PAF 콤포넌트부(200)로 상기 안드로이드 프레임워크를 요청하는 단계;
    (l) 상기 PAF 콤포넌트부(200)로부터 상기 안드로이드 프레임워크를 실시간으로 제공받는 단계;
    (m) 상기 안드로이드 프레임워크를 활용하여 상기 안드로이드 어플리케이션을 직접 브라우저에서 실행하는 단계;
    를 수행하는 범용 운영체제에서 안드로이드 어플리케이션을 실행하는 프로그램을 기록한 컴퓨터로 판독가능한 기록매체.
PCT/KR2012/000642 2011-04-04 2012-02-03 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하기 위한 단말장치 및 방법, 그리고 이를 위한 컴퓨터로 판독가능한 기록매체 WO2012138046A1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR10-2011-0030730 2011-04-04
KR20110030730 2011-04-04
KR1020110032475A KR101249735B1 (ko) 2011-04-04 2011-04-08 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하기 위한 단말장치 및 방법, 그리고 이를 위한 컴퓨터로 판독가능한 기록매체
KR10-2011-0032475 2011-04-08

Publications (1)

Publication Number Publication Date
WO2012138046A1 true WO2012138046A1 (ko) 2012-10-11

Family

ID=46969405

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2012/000642 WO2012138046A1 (ko) 2011-04-04 2012-02-03 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하기 위한 단말장치 및 방법, 그리고 이를 위한 컴퓨터로 판독가능한 기록매체

Country Status (1)

Country Link
WO (1) WO2012138046A1 (ko)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107528895A (zh) * 2017-08-17 2017-12-29 四川长虹电器股份有限公司 一种基于Android系统的插件接入第三方服务器的系统及方法
CN109426733A (zh) * 2017-08-25 2019-03-05 全球能源互联网研究院 一种电力移动应用数据隔离方法及系统
CN111638916A (zh) * 2020-06-03 2020-09-08 公安部第三研究所 一种用于数据取证的通用安卓移动终端驱动系统及方法
CN111708691A (zh) * 2020-05-28 2020-09-25 上海龙旗科技股份有限公司 一种基于安卓平台的Fingerprint自动适配方法与设备
CN112771489A (zh) * 2018-10-16 2021-05-07 三星电子株式会社 控制异构操作系统和电子设备的执行的方法及其存储介质
CN113703790A (zh) * 2021-08-12 2021-11-26 北京鲸鲮信息系统技术有限公司 Linux系统安全应用的软件框架及创建方法
CN114385047A (zh) * 2022-03-24 2022-04-22 北京麟卓信息科技有限公司 Linux平台上基于Intent的安卓应用文件发送方法
WO2023124968A1 (zh) * 2021-04-07 2023-07-06 北京字节跳动网络技术有限公司 软件操作系统调用Android动态库HAL接口的方法、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070240171A1 (en) * 2006-03-29 2007-10-11 Nokia Corporation Device, Method, And Computer Program Product For Accessing A Non-Native Application Executing In Virtual Machine Environment
KR100989613B1 (ko) * 2009-12-08 2010-10-26 (주)제이모바일 비안드로이드 플랫폼에서 안드로이드 어플리케이션을 실행하는 단말장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070240171A1 (en) * 2006-03-29 2007-10-11 Nokia Corporation Device, Method, And Computer Program Product For Accessing A Non-Native Application Executing In Virtual Machine Environment
KR100989613B1 (ko) * 2009-12-08 2010-10-26 (주)제이모바일 비안드로이드 플랫폼에서 안드로이드 어플리케이션을 실행하는 단말장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"How to Test Drive Google Android on Your PC Without Buying a Phone -How-To Geek.", HOWTOGEEK, Retrieved from the Internet <URL:http://web.archive.org/web/20100915132154/http://www.howtogeek.com/howto/21831/how-to-test-drive-google-android-on-your-pc-without-buying-a-phone> *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107528895A (zh) * 2017-08-17 2017-12-29 四川长虹电器股份有限公司 一种基于Android系统的插件接入第三方服务器的系统及方法
CN107528895B (zh) * 2017-08-17 2020-10-23 四川长虹电器股份有限公司 一种基于Android系统的插件接入第三方服务器的系统及方法
CN109426733A (zh) * 2017-08-25 2019-03-05 全球能源互联网研究院 一种电力移动应用数据隔离方法及系统
CN109426733B (zh) * 2017-08-25 2022-11-25 全球能源互联网研究院 一种电力移动应用数据隔离方法及系统
CN112771489A (zh) * 2018-10-16 2021-05-07 三星电子株式会社 控制异构操作系统和电子设备的执行的方法及其存储介质
CN111708691A (zh) * 2020-05-28 2020-09-25 上海龙旗科技股份有限公司 一种基于安卓平台的Fingerprint自动适配方法与设备
CN111708691B (zh) * 2020-05-28 2024-04-09 上海龙旗科技股份有限公司 一种基于安卓平台的Fingerprint自动适配方法与设备
CN111638916A (zh) * 2020-06-03 2020-09-08 公安部第三研究所 一种用于数据取证的通用安卓移动终端驱动系统及方法
CN111638916B (zh) * 2020-06-03 2023-03-31 公安部第三研究所 一种用于数据取证的通用安卓移动终端驱动系统及方法
WO2023124968A1 (zh) * 2021-04-07 2023-07-06 北京字节跳动网络技术有限公司 软件操作系统调用Android动态库HAL接口的方法、设备及介质
CN113703790A (zh) * 2021-08-12 2021-11-26 北京鲸鲮信息系统技术有限公司 Linux系统安全应用的软件框架及创建方法
CN114385047A (zh) * 2022-03-24 2022-04-22 北京麟卓信息科技有限公司 Linux平台上基于Intent的安卓应用文件发送方法

Similar Documents

Publication Publication Date Title
WO2012138046A1 (ko) 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하기 위한 단말장치 및 방법, 그리고 이를 위한 컴퓨터로 판독가능한 기록매체
RU2443012C2 (ru) Конфигурация изолированных расширений и драйверов устройств
JP5694301B2 (ja) 非アンドロイドプラットフォームにおいてアンドロイドアプリケーションを実行する端末装置、および非アンドロイドプラットフォームにおいてアンドロイドアプリケーションを実行するプログラムを記録したコンピュータ読み取り可能な記録媒体
KR101249735B1 (ko) 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하기 위한 단말장치 및 방법, 그리고 이를 위한 컴퓨터로 판독가능한 기록매체
CN106293880B (zh) 在Windows系统上运行Android应用程序的方法及装置
US8671405B2 (en) Virtual machine crash file generation techniques
US10140145B1 (en) Displaying guest operating system statistics in host task manager
US20120154375A1 (en) Techniques For Enabling Remote Management Of Servers Configured With Graphics Processors
US20100262722A1 (en) Dynamic Assignment of Graphics Processing Unit to a Virtual Machine
US20090265708A1 (en) Information Processing Apparatus and Method of Controlling Information Processing Apparatus
CN110187910B (zh) 一种热更新方法、装置、设备及计算机可读存储介质
US20080005551A1 (en) Management of option rom
KR101935290B1 (ko) 플랫폼-특유의 피쳐들을 선택적으로 인에이블하기
KR101015573B1 (ko) Rtos 기반의 안드로이드 어플리케이션 실행 장치
CN102385523A (zh) 一种云操作系统的驱动安装和管理方法
Dall et al. The design, implementation, and evaluation of cells: A virtual smartphone architecture
CN109144672A (zh) 一种分配PCIe设备的方法、系统及相关组件
Xia et al. Investigating virtual passthrough I/O on commodity devices
CN111459606A (zh) 一种虚拟化下快速创建虚拟机的方法及服务器
CN113312141B (zh) 用于卸载串行端口模拟的计算机系统、存储介质和方法
CN111966470B (zh) 虚拟机监控器的加载方法、装置和电子设备
CN112764981B (zh) 一种协同测试系统及方法
US20130263126A1 (en) System and method for increasing the capabilities of a mobile device
WO2012015083A1 (ko) Rtos 기반의 안드로이드 어플리케이션 실행 장치
CN109697102A (zh) 一种实现虚拟机桌面访问的方法及装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12768136

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12768136

Country of ref document: EP

Kind code of ref document: A1