KR20150128256A - Server system having virtual android apparatus for interworking between application and real smart device - Google Patents

Server system having virtual android apparatus for interworking between application and real smart device Download PDF

Info

Publication number
KR20150128256A
KR20150128256A KR1020140055323A KR20140055323A KR20150128256A KR 20150128256 A KR20150128256 A KR 20150128256A KR 1020140055323 A KR1020140055323 A KR 1020140055323A KR 20140055323 A KR20140055323 A KR 20140055323A KR 20150128256 A KR20150128256 A KR 20150128256A
Authority
KR
South Korea
Prior art keywords
layer
android
event
linux kernel
event information
Prior art date
Application number
KR1020140055323A
Other languages
Korean (ko)
Inventor
서종균
박한수
정회경
Original Assignee
배재대학교 산학협력단
(주)유비테크
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 배재대학교 산학협력단, (주)유비테크 filed Critical 배재대학교 산학협력단
Priority to KR1020140055323A priority Critical patent/KR20150128256A/en
Publication of KR20150128256A publication Critical patent/KR20150128256A/en

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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Abstract

The present invention relates to a server system having a virtual android apparatus which provides an environment for installing and executing an application program in an actual smart device by receiving an event input which occurs in a device of the actual smart device through a communications network and making the same used for operating the application program on an android platform. The server system comprises: a server demon which receives event information of the actual device installed in the smart device through the communications network; and the virtual android apparatus which has an android platform including an application layer, an application framework layer, a hardware abstraction layer (HAL), a Linux kernel layer, and a hardware layer. The server system produces the device as a program file which can be recognized by the Linux kernel layer, and virtualizes the same so that the event information is received by the Linux kernel layer in the HAL and that the same is delivered to the application framework layer after the HAL layer reads the event information of the Linux kernel layer from the server demon, and used as a device event necessary for operating the application program of the application layer.

Description

실제 스마트기기의 디바이스에서 발생하는 이벤트에 따라 응용프로그램을 실행하는 가상 안드로이드 장치를 구비한 서버 시스템{SERVER SYSTEM HAVING VIRTUAL ANDROID APPARATUS FOR INTERWORKING BETWEEN APPLICATION AND REAL SMART DEVICE}TECHNICAL FIELD [0001] The present invention relates to a server system having a virtual Android device that executes an application program according to an event occurring in a device of an actual smart device,

본 발명은 실제 스마트기기의 디바이스에서 발생하는 이벤트 입력을 통신망을 통해 전송받아 안드로이드 플랫폼 상에서 응용프로그램의 구동에 사용되도록 하여, 실제 스마트기기에서 응용프로그램을 설치 및 실행하는 환경을 제공하는 가상 안드로이드 장치를 구비한 서버 시스템에 관한 것이다.The present invention provides a virtual Android device that provides an environment for installing and executing an application program in an actual smart device by allowing an event input generated in a device of an actual smart device to be transmitted through a communication network and used for driving an application program on the Android platform And more particularly to a server system provided with a server.

안드로이드 플랫폼(Android Platform)은 구글(Google) 사가 주도하는 OHA(Open Handset Alliance)에서 공개한 소프트웨어 스택으로서, 리눅스(Linux) 커널(Kernel), 가상머신(VM : Virtual Machine), 프레임워크(Framework), 응용프로그램(애플리케이션, Application)을 모두 포함하는 소프트웨어 패키지이다. The Android platform is a software stack released by Google's Open Handset Alliance (OHA). It is a Linux kernel, a virtual machine (VM), a framework, , And application programs (applications, applications).

안드로이드 응용프로그램은 일반적으로 이러한 안드로이드 플랫폼 상에서만 구동이 가능하므로, 안드로이드 응용프로그램을 개발하고 동작 테스트하기 위해서 VirtualBox, VMWare와 같은 가상 머신 소프트웨어를 활용한 안드로이드 가상 장치를 구현하여 안드로이드 응용프로그램을 시뮬레이션하였다. Since Android applications can be run only on these Android platforms, Android applications are simulated by implementing Android virtual devices using virtual machine software such as VirtualBox and VMWare to develop and test Android applications.

이때, 안드로이드 응용프로그램을 동작시키기 위해서는 안드로이드 플랫폼을 탑재한 실제 스마트기기(예를 들어 스마폰 또는 스마트패드)에 구비되는 디바이스의 입력값이 필요하다. 즉, 터치스크린, GPS, 자이로 스코프, 가속도 센서 등으로 이루어지는 디바이스에서 이벤트가 발생할 시에 나타나는 입력값 또는 센싱값이 필요하다. At this time, in order to operate the Android application, the input value of the device provided in the actual smart device (for example, smart phone or smart pad) equipped with the Android platform is required. That is, an input value or a sensing value that appears when an event occurs in a device including a touch screen, a GPS, a gyroscope, and an acceleration sensor is required.

이에, 일반적으로 실제 스마트기기의 디바이스를 이용하는 것이 아니라 실제 디바이스과 유사하게 입력값 또는 센싱값을 생성하는 디바이스 에뮬레이터를 이용하여서, 안드로이드 가상 장치가 디바이스 에뮬레이터에서 생성한 입력값 또는 센싱값을 사용하게 하였다. 예를 들어, 센서 정보를 응용프로그램에 전달하는 역할을 수행하는 SensroManager를 가상 센서 정보를 수신하여 처리할 수 있는 모듈로 대체하여 시스템에 등록 사용하였다. In general, instead of using a device of an actual smart device, a device emulator that generates an input value or a sensed value similar to an actual device is used so that the Android virtual device uses an input value or a sensing value generated by the device emulator. For example, SensroManager, which plays a role of transferring sensor information to an application program, is replaced with a module capable of receiving and processing virtual sensor information and registered in the system.

또한, 등록특허 제10-1325954호에서 응용프로그램을 자동실행하여 테스트할 수 있게 하였다. Also, in the patent application No. 10-1325954, an application program can be automatically executed and tested.

하지만, 상기한 안드로이드 가상 장치에서 사용하는 디바이스의 입력값 또는 센싱값은 실제 디바이스에서 발생하는 것이 아니므로, 응용프로그램을 실제 안드로이드 스마트기기에 설치하여 실행하는 환경과는 다르게 된다. 예를 들어, 스마트기기는 제조사 및 모델에 따라 다양하게 개발되고 있어서, 비록 안드로이드 가상 장치에서 실행하여 테스트라더라도 동일한 응용프로그램을 서로다른 제조사 또는 모델의 스마트기기에 각각 설치하여 동작시킬 시에, 디바이스의 이벤트에 따른 응용프로그램의 정상적인 동작을 보장하기 어렵다.However, since the input value or the sensing value of the device used in the Android virtual device does not occur in the actual device, it differs from the environment in which the application program is installed and executed in the actual Android smart device. For example, smart devices are variously developed according to manufacturers and models, so that when the same application program is installed and operated in a smart device of different manufacturer or model even if the application is executed in the Android virtual device, It is difficult to guarantee the normal operation of the application program according to the event of

KR 10-1325954 B1 2013.10.31.KR 10-1325954 B1 Oct. 31, 2013.

따라서, 본 발명은 실제 스마트기기의 디바이스에서 발생하는 이벤트에 따라 응용프로그램을 구동시켜서 가상 안드로드 장치에 물리적으로 실제 디바이스가 존재하는 것과 같은 환경을 제공하는 가상 안드로이드 장치를 구비한 서버 시스템를 제공하는 것이다.Accordingly, the present invention provides a server system having a virtual Android device that provides an environment in which virtual devices exist physically in a virtual Android device by driving an application program according to an event occurring in a device of an actual smart device .

상기 목적을 달성하기 위해 본 발명은, 실제 스마트기기의 디바이스에서 발생하는 이벤트에 따라 응용프로그램을 실행하는 가상 안드로이드 장치를 구비한 서버 시스템에 있어서, 스마트기기에 구비된 실제 디바이스의 이벤트 정보를 통신망에 통해 전송받는 서버 데몬; 응용프로그램 계층(Application Layer), 안드로이드 프레임워크 계층(Application Framework Layer), HAL 계층(Hardware Abstraction Layer), 리눅스 커널 계층(Linux Kernel Layer) 및 하드웨어 계층(Hardware Layer)을 포함하는 안드로이드 플랫폼을 탑재하되, 디바이스를 리눅스 커널 계층이 인식 가능한 프로그램 파일로 생성하여 가상화하고, 리눅스 커널 계층이 상기 서버 데몬으로부터 이벤트 정보를 전달받음으로써, HAL 계층에서 리눅스 커널 계층의 이벤트 정보를 읽어들인 후 안드로이드 프레임워크 계층에 전달하게 하여 응용프로그램 계층의 응용프로그램 구동에 필요한 디바이스 이벤트로 사용되게 하는 가상 안드로이드 장치; 를 포함하여 구성됨을 특징으로 한다.In order to achieve the above object, the present invention provides a server system having a virtual Android device for executing an application program according to an event occurring in a device of an actual smart device, the server system including event information of an actual device provided in the smart device, A server daemon that is sent through; The Android platform includes an application layer, an Android framework layer, a hardware abstraction layer, a Linux kernel layer, and a hardware layer, The Linux kernel layer generates event information from the server daemon, reads the event information of the Linux kernel layer from the HAL layer, and transmits the event information to the Android framework layer A virtual Android device which is used as a device event necessary for driving an application program layer; And a control unit.

상기 리눅스 커널 계층은 ioctl 함수를 이용하여 서버 데몬으로부터 이벤트 정보를 전달받음을 특징으로 한다.The Linux kernel layer receives event information from a server daemon using an ioctl function.

상기 리눅스 커널 계층에서 이벤트 정보를 전달받을 시에, 상기 HAL 계층은 상기 리눅스 커널 계층의 디바이스 드라이버를 open하여 상기 리눅스 커널 계층의 이벤트 입력을 받을 수 있도록 대기한 후, 상기 리눅스 커널 계층의 이벤트 입력을 받게 되면 상기 리눅스 커널 계층에 전달된 상기 이벤트 정보를 읽어들여 안드로이드 프레임워크 계층에 전달함을 특징으로 한다.Upon receipt of the event information from the Linux kernel layer, the HAL layer opens the device driver of the Linux kernel layer and waits for receiving an event input from the Linux kernel layer. Then, the event input of the Linux kernel layer Receives the event information transmitted to the Linux kernel layer, and transmits the event information to the Android framework layer.

상기와 같이 구성되는 본 발명은 실제 스마트기기의 디바이스에서 발생하는 이벤트 데이터를 통신망을 통해 수신하여 응용프로그램의 동작에 사용하므로, 다양한 제조사 또는 모델에 각각 응용프로그램을 설치하지 아니하더라도 실제 스마트기기에 설치하여야만 얻을 수 있는 정확한 테스트 결과를 얻을 수 있으며, 안드로이드 플랫폼을 탑재하지 아니하는 스마트기기로부터 디바이스의 이벤트 데이터를 수신하여 테스트할 수 있어 테스트에 사용되는 스마트기기의 플랫폼 종류에 구애받지 아니하므로 더욱 다양한 스마트기기에 대해서 테스트 결과를 얻을 수 있는 장점을 갖는다.Since the event data generated in the device of the actual smart device is received through the communication network and used for the operation of the application program, the present invention configured as described above can be installed in an actual smart device even if application programs are not installed in various manufacturers or models. It is possible to obtain the accurate test result that can be obtained only by receiving the device event data from the smart device which is not equipped with the Android platform and to test the event data of the device from the smart device which is not equipped with the Android platform, It has the advantage of obtaining test results for the device.

도 1은 본 발명의 실시예에 따른 가상 안드로이드 장치를 구비한 서버 시스템이 통신망을 통해 실제 스마트기기에 연결된 상황을 보여주는 도면.
도 2는 본 발명의 실시예에 따른 가상 안드로이드 장치를 구비한 서버 시스템의 블록구성도 및 통신망을 통해 연결된 안드로이드 스마트기기의 블록구성도.
도 3은 본 발명의 실시예에 따른 가상 안드로이드 장치를 구비한 서버 시스템에 의해서, 이벤트 정보를 수신하는 단계로부터 이벤트 정보를 응용프로그램의 실행을 위해 안드로이드 프레임워크 계층에 전달하는 단계까지를 보여주는 순서도.
FIG. 1 is a diagram illustrating a server system having a virtual Android apparatus according to an embodiment of the present invention connected to a real smart device through a communication network. FIG.
2 is a block diagram of a server system having a virtual Android device according to an embodiment of the present invention and a block diagram of an Android smart device connected through a communication network.
3 is a flowchart illustrating a process of receiving event information from a server system having a virtual Android apparatus according to an exemplary embodiment of the present invention, and transmitting event information to an Android framework layer for execution of an application program.

이하, 본 발명의 바람직한 실시 예를 첨부한 도면을 참조하여 당해 분야에 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 설명한다.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, preferred embodiments of the present invention will be described with reference to the accompanying drawings.

도 1은 본 발명의 실시예에 따른 가상 안드로이드 장치를 구비한 서버 시스템(100)이 통신망을 통해 실제 스마트기기(10)에 연결된 상황을 보여주는 도면이고, 도 2는 본 발명의 실시예에 따른 가상 안드로이드 장치를 구비한 서버 시스템(100)의 블록구성도 및 통신망을 통해 연결된 안드로이드 스마트기기의 블록구성도(10)이다.FIG. 1 is a diagram illustrating a server system 100 having a virtual Android apparatus according to an embodiment of the present invention connected to an actual smart device 10 through a communication network. FIG. 2 is a diagram illustrating a virtual A block diagram of a server system 100 having an Android device, and a block diagram 10 of an Android smart device connected through a communication network.

상기 도 1 및 도 2를 참조하면, 본 발명의 실시예에 따른 가상 안드로이드 장치를 구비한 서버 시스템(100)은 안드로이드 응용프로그램을 실제 스마트기기(10)에 설치하여 실제 스마트기기(10)의 각종 디바이스에서 발생하는 이벤트에 따라 실행시키는 것이 아니라, 안드로이드 플랫폼을 탑재한 가상 안드로이드 장치(120)를 내부에 구비하여서 실제 스마트기기(10)에서 발생하는 디바이스의 이벤트 정보를 전송받아 가상 안드로이드 장치(120)에서 등용프로그램을 실행시키게 구성된다. 1 and 2, a server system 100 having a virtual Android apparatus according to an embodiment of the present invention includes an Android application program installed in an actual smart device 10, The virtual Android device 120 equipped with the Android platform is installed in the inside of the virtual Android device 120 to receive event information of devices generated in the actual smart device 10, To execute the sooty program.

여기서, 이벤트의 의미는 예를 들어 센서의 경우 센서에서 센싱값을 감지하는 상황이고, 다른 예로서, GPS의 경우 GPS로 위치 데이터를 감지하는 상황이고, 또다른 예로서 터치스크린에서 터치 입력을 받는 상황이다. 그리고, 실제 스마트기기(10)는 각각 이벤트의 의한 데이터, 즉, 상기에서 예를 들은 센싱값, 위치 데이터 또는 터치 입력값을 이벤트 정보로 하여 가상 안드로이드 장치를 구비한 서버 시스템(100)에 전송된다.Here, the meaning of the event is, for example, a situation in which a sensor senses a sensing value in a sensor, and another example is a situation in which a GPS detects position data using a GPS. As another example, It is a situation. The actual smart device 10 is transmitted to the server system 100 having the virtual Android device using event data, i.e., the sensing value, the position data, or the touch input value as the event information, .

이에, 본 발명의 실시예에 따른 가상 안드로이드 장치를 구비한 서버 시스템(100)을 설명하기에 앞서서, 안드로이드 플랫폼을 탑재한 실제 스마트기기(10)를 먼저 설명한다.Before describing the server system 100 having the virtual Android apparatus according to the embodiment of the present invention, the actual smart device 10 equipped with the Android platform will be described first.

상기 도 2를 참조하면, 상기 실제 스마트기기(10)는 리눅스(Linux)를 기반으로한 안드로이드(Android)를 모바일 OS(Operating System)로 탑재한 안드로이드 단말로서, 예를 들어 스마트폰 또는 스마트패드로 구성되며, 도 2에 도시한 플랫폼 구조를 살펴보면, 하드웨어 계층(Hardware Layer, 15), 리눅스 커널 계층(Linux Kernel Layer, 14), HAL 계층(Hardware Abstraction Layer, 13), 안드로이드 프레임워크 계층(Application Framework Layer, 12) 및 응용프로그램 계층(Application layer, 11)을 포함하여 구성되어, 리눅스 커널 계층(14) 위에서 안드로이드 운영체제가 동작하게 되어 있다.Referring to FIG. 2, the actual smart device 10 is an Android terminal equipped with an Android based on Linux as a mobile OS (Operating System), for example, a smart phone or a smart pad 2, a hardware layer 15, a Linux kernel layer 14, a hardware abstraction layer 13, an Android framework layer 14, Layer 12 and an application layer 11 so that the Android operating system is operated on the Linux kernel layer 14.

하드웨어 계층(15)에는 각종 센서(예 : 자이로 스코프, 가속도 센서), GPS, 터치스크린 등의 디바이스(Device)와 CPU, 메모리, 디스플레이 등의 각종 하드웨어 디바이스가 있다. 본 발명은 디바이스 중에 센서, GPS, 터치스크린 등의 디바이스에서 발생하는 입력값(또는 센싱값)을 취합하여 가상 안드로이드 장치를 구비한 서버 시스템(100)에 전송하므로, 이하, '디바이스'는 안드로이드 응용프로그램에 사용되는 입력값(또는 센싱값)을 발생시키는 디바이스를 지칭하는 것으로 설명한다.The hardware layer 15 includes devices such as various sensors (e.g., gyroscopes, acceleration sensors), GPS, touch screens, and various hardware devices such as a CPU, a memory, and a display. The present invention collects input values (or sensing values) generated in devices such as sensors, GPS, touch screens, etc. and transmits them to the server system 100 having a virtual Android device. Hereinafter, Quot; refers to a device that generates an input value (or a sensing value) used in a program.

리눅스 커널 계층(14)에는 하드웨어 계층(15)의 각 디바이스에 직접 액세스하여 제어하는 디바이스 드라이버(Device Driver)가 배치되며, 디바이스에서 발생하는 입력값을 취합 및 가공하여 안드로이드 운영체제로 전달한다. 또한, 리눅스 커널 계층(14)은 프로세스와 메모리 관리, 보안, 네트워크, 전력관리 등을 담당한다.A device driver for accessing and controlling each device of the hardware layer 15 is disposed in the Linux kernel layer 14, and the input values generated in the device are collected, processed, and transmitted to the Android operating system. In addition, the Linux kernel layer 14 is responsible for process and memory management, security, network and power management.

HAL 계층(15)은 플랫폼 이식에 있어서 하드웨어의 독립성을 지원하기 위한 계층으로서, 하드웨어를 추상화하여 하드웨어에 직접 접근하지 않고서도 사용할 수 있게 하며, 리눅스 커널 계층(14)의 디바이스 드라이버로부터 이벤트값을 읽어들여 안드로이드 프레임워크 계층(12)에 전달한다. 이를 위해서 각종 HAL 라이브러리(Library)를 포함한다.The HAL layer 15 is a layer for supporting hardware independence in platform transplantation. The HAL layer 15 abstracts the hardware so that it can be used without directly accessing the hardware. The HAL layer 15 reads the event value from the device driver of the Linux kernel layer 14 And passes it to the Android framework layer 12. To do this, various HAL libraries are included.

안드로이드 프레임워크 계층(12)은 안드로이드 어플리케이션을 만드는데 사용되는 클래스 또는 하드웨어 인터페이스 및 사용자 인터페이스와 리소스 관리를 위한 추상 클래스를 제공하며, 안드로이드 애플리케이션 개발자는 필요한 기능 구현을 위해 안드로이드 프레임워크 계층(12)에서 제공하는 API(Application Programming Interface)를 자유롭게 사용할 수 있다. The Android framework layer 12 provides a class or hardware interface used to create an Android application, and an abstract class for user interface and resource management. The Android application developer provides the application class in the Android framework layer 12 API (Application Programming Interface) that allows you to use it freely.

이에, 본 발명의 실시예에 따르면, 후술하는 클라이언트 응용프로그램(11a)은 안드로이드 프레임워크 계층(12)에서 제공하는 API를 이용함으로써 디바이스의 이벤트 발생을 얻을 수 있게 작성된다.Accordingly, according to the embodiment of the present invention, a client application program 11a to be described later is created so as to obtain an event occurrence of a device by using an API provided by the Android framework layer 12. [

응용프로그램 계층(11)은 안드로이드 응용프로그램들이 위치한다.The application layer 11 contains Android application programs.

이와 같은 구조의 플랫폼을 갖는 실제 스마트기기(10)는 하드웨어 계층(15)의 디바이스에서 이벤트가 발생할 시에 이벤트를 리눅스 커널 계층(14)을 통해 HAL 계층(13)에서 읽어들여 안드로이드 프레임워크 계층(12)에 전달함으로써 응용프로그램 계층(11)의 응용프로그램이 실행할 시에 디바이스의 이벤트에 따라 실행되게 한다.
The actual smart device 10 having the above-described platform reads an event from the HAL layer 13 through the Linux kernel layer 14 when an event occurs in the device of the hardware layer 15 and transmits the event to the Android framework layer 12 so that the application program of the application layer 11 is executed according to the event of the device when the application program is executed.

본 발명의 실시예에 따른 가상 안드로이드 장치를 구비한 서버 시스템(100)은 안드로이드 플랫폼을 탑재하여 응용프로그램을 실행할 수 있게 되어 있으며, 실제 스마트기기(10)와 TCP/IP Protocol로 통신망(20)을 통해 통신하여 실제 스마트기기(10)에서 발생하는 디바이스의 이벤트 정보를 전송받아 이벤트 정보에 따라 응용프로그램을 실행시킨다.The server system 100 having the virtual Android apparatus according to the embodiment of the present invention is capable of executing an application program by loading the Android platform and is capable of executing the application program through the communication network 20 with the actual smart device 10 and the TCP / And transmits the event information of the device generated in the actual smart device 10 to execute the application program according to the event information.

여기서, 통신망(20)은 3G, 4G(LTE 포함), WIFI 등의 이동 통신망을 예로 들수 있으며, 실제 스마트기기(10)에 허용되는 서버 접속 방식을 위한 통신망이면 만족하지만, TCP/IP Protocol를 채용한 무선 인터넷망을 예로 들어 설명한다.Here, the communication network 20 is a mobile communication network such as 3G, 4G (including LTE), WIFI, and the like, and is satisfactory if it is a communication network for a server connection method that is allowed in the actual smart device 10, A wireless Internet network is taken as an example.

이에, 실제 스마트기기(10)에 구비된 디바이스의 이벤트 정보를 가상 안드로이드 장치를 구비한 서버 시스템(100)에 전송하기 위한 클라이언트 응용프로그램(11a)이 상기 실제 스마트기기(10)의 응용프로그램 계층(11)에 설치된다.A client application program 11a for transmitting event information of a device provided in the actual smart device 10 to the server system 100 having a virtual Android device is installed in the application layer of the actual smart device 10 11).

상기 클라이언트 응용프로그램(11a)은 실제 스마트기기(10)의 하드웨어 계층(50)에 구비된 각종 디바이스에서 이벤트가 발생할 시에 디바이스의 이벤트 데이터를 리눅스 커널 계층(14)을 통해 HAL 계층(13)에서 읽어들여 전달받도록 작성되는 일종의 애플리케이션으로서, 실제 스마트기기(10)의 응용프로그램 계층(11)에 설치될 수 있는 애플리케이션으로 작성되며, 디바이스에서 이벤트가 발생할 때마다 이벤트 데이터를 포함한 이벤트 정보를 가상 안드로이드 장치를 구비한 서버 시스템(100)과 사전 약속된 형식의 패킷(packet)으로 작성하여 실시간 전송한다.The client application program 11a transmits event data of the device to the HAL layer 13 through the Linux kernel layer 14 when an event occurs in various devices provided in the hardware layer 50 of the actual smart device 10. [ And is created as an application that can be installed in the application layer 11 of the actual smart device 10. The event information including the event data is transmitted to the virtual Android device And transmits the packet to the server system 100 in real time.

여기서, 상기 클라이언트 응용프로그램(11a)은 가상 안드로이드 장치를 구비한 서버 시스템(100)의 IP 주소를 이용하여 후술하는 가상 안드로이드 장치를 구비한 서버 시스템(100)의 서버 데몬(160)에 접속함으로써 디바이스이 이벤트를 전송할 수 있다.Here, the client application program 11a accesses the server daemon 160 of the server system 100 having a virtual Android apparatus, which will be described later, using the IP address of the server system 100 having the virtual Android apparatus, Events can be transmitted.

그리고, 통신 패킷으로 작성하여 전송하는 이벤트 정보는 상기한 이벤트 데이터와 이벤트를 발생시킨 디바이스의 식별자를 포함한다.The event information created and transmitted by the communication packet includes the event data and the identifier of the device that generated the event.

그런데, 실제 스마트기기(10)의 하드웨어 계층(15)에 구비되는 디바이스 중에서 GPS 이벤트에 따른 데이터의 경우에, GPS 위치정보뿐만 아니라 시간정보 등을 포함하므로, GPS 이외의 디바이스 이벤트에 따른 데이터에 비해 상대적으로 많다.Incidentally, in the case of data corresponding to a GPS event among the devices provided in the hardware layer 15 of the actual smart device 10, since it includes time information as well as GPS position information, There are relatively many.

이에, 상기 클라이언트 응용프로그램(11a)는 GPS의 이벤트 정보는 별도의 패킷에 담고, 이외의 디바이스에서 발생하는 이벤트 정보는 인코딩하여 하나의 패킷에 담는다.The client application program 11a stores GPS event information in a separate packet, and event information generated in other devices is encoded and packed into one packet.

이와 같이 실제 스마트기기(10)에는 상기 클라이언트 응용프로그램(11a)을 응용프로그램 계층(11)에 설치하여 실행함으로써 하드웨어 계층(15)에 구비된 각종 디바이스의 이벤트 정보를 수집하여 통신망(20)을 통해 가상 안드로이드 장치를 구비한 서버 시스템(100)에 전송한다. As described above, the actual smart device 10 collects event information of various devices provided in the hardware layer 15 by installing the client application program 11a in the application program layer 11 and executing the same through the communication network 20 To the server system 100 having the virtual Android device.

그리고, 가상 안드로이드 장치를 구비한 서버 시스템(100)은 안드로이드 플랫폼을 탑재하여 안드로이드 응용프로그램을 설치 및 실행할 수 있는 환경을 제공하는 서버 시스템이되, 안드로이드 응용프로그램을 실행시키기 위해 디바이스를 에뮬레이팅하여 디바이스의 이벤트를 발생시키는 수단을 구비하지 아니하고, 대신에, 실제 스마트기기(10)에서 전송하는 디바이스의 이벤트 정보를 입력으로 하여 응용프로그램을 실행할 수 있게 한다.The server system 100 having a virtual Android device is a server system that provides an environment for installing and running an Android application program by mounting an Android platform. The server system 100 emulates a device to execute an Android application program, Instead of providing the event information of the device transmitted from the actual smart device 10, the application program can be executed.

이를 위해서, 상기 가상 안드로이드 장치를 구비한 서버 시스템(100)는 상기 클라이언트 응용프로그램(11a)의 구동에 의해서 실제 스마트기기(10)로부터 디바이스의 이벤트 정보를 수신받는 서버 데몬(110)과, 안드로이드 플랫폼을 탑재하여 안드로이드 운영체제로 동작하는 가상 안드로이드 장치(120)을 구비한다.To this end, the server system 100 having the virtual Android device includes a server daemon 110 that receives event information of a device from an actual smart device 10 by driving the client application program 11a, And a virtual Android device 120 operating as an Android operating system.

상기 서버 데몬(110)은 백그라운드 프로세스 상태로 서버 시스템(100)에 존재하여서, 실제 스마트기기(10)와 통신 상태를 유지하여 실제 스마트기기(10)에서 전송하는 이벤트 정보를 수신한다.The server daemon 110 is present in the server system 100 as a background process state and maintains communication with the actual smart device 10 to receive event information transmitted from the actual smart device 10.

여기서, 이벤트 정보는 GPS 이벤트가 아닌 경우에 인코딩된 것이므로 디코딩을 수행하여 디바이스 별로 이벤트에 대한 데이터를 분류 및 추출한다.Here, since the event information is encoded when it is not a GPS event, decoding is performed to classify and extract data on the event for each device.

그리고, 상기 서버 데몬(110)은 디바이스별 이벤트 데이터를 가상 안드로이드 장치(110)에서 응용프로그램의 입력으로 인식할 수 있게 하기 위해서, ioctl() 함수를 이용하여 이벤트 데이터를 후술하는 리눅스 커널 계층 모듈(140)에 전달한다. 이때, 이벤트 데이터의 전달은 실제 스마트기기(10)에서 이벤트를 발생시킨 디바이스에 대응되는 가상 디바이스에서 이벤트를 발생시킨 것처럼 처리하기 위해서, 대응되는 디바이스 드라이버에 전달된다.In order for the server daemon 110 to recognize the device-specific event data as an input of the application program in the virtual Android device 110, the server daemon 110 uses the ioctl () function to write the event data to the Linux kernel layer module 140). At this time, the transfer of the event data is transmitted to the corresponding device driver in order to process the event data as if the event occurred in the virtual device corresponding to the device that generated the event in the actual smart device 10. [

상기 가상 안드로이드 장치(120)는 상기 서버 데몬(110)으로부터 전달받는 이벤트 데이터를 사용하여 응용프로그램을 실행시키는 환경을 제공하기 위한 것이다. The virtual Android device 120 is for providing an environment for executing an application program using event data received from the server daemon 110. [

이를 위해서, 상기 가상 안드로이드 장치(120)는 안드로이드 플랫폼을 구성하는 응용프로그램 계층(121), 안드로이드 프레임워크 계층(122), HAL 계층(123), 리눅스 커널 계층(124) 및 하드웨어 계층(125)을 포함한다.To this end, the virtual Android device 120 includes an application program layer 121, an Android framework layer 122, a HAL layer 123, a Linux kernel layer 124, and a hardware layer 125 constituting an Android platform .

상기 응용프로그램 계층(121)은 안드로이드 플랫폼을 탑재한 실제 스마트기기(10)에 설치 및 설행될 수 있는 안드로이드 응용프로그램을 프로그램 코드(code)의 변경 없이 설치하여 실행시킨다. The application layer 121 installs and executes the Android application program installed in the actual smart device 10 on which the Android platform is installed without changing the program code.

상기 안드로이드 프레임워크 계층(122)은 응용프로그램 계층(121)의 응용프로그램과 하드웨어 간의 인터페이스를 위한 클래스를 구비하여, 하위 계층인 HAL 계층 모듈(123)을 통해 전달받는 이벤트에 따라 안드로이드 응용프로그램을 실행시키게 한다. The Android framework layer 122 includes a class for interfacing between an application program and hardware of the application layer 121 and executes an Android application program according to an event received through the HAL layer module 123, .

상기 HAL 계층 모듈(123)은 안드로이드에서 사용하는 디바이스의 제조사 또는 형식이 다르더라도 일관적인 접근을 가능하게 하여 하드웨어의 독립성을 지원하는 라이브러리를 포함한다. The HAL layer module 123 includes a library that supports hardware independence by enabling consistent access even if the manufacturer or format of devices used in Android is different.

상기 리눅스 커널 계층(124)은 상기 서버 데몬(110)으로부터 전달받는 이벤트 데이터를 상기 HAL 계층(123)에 배치된 라이브러리 중에서 이벤트에 대응되는 라이브러리에서 읽어들일 수 있도록 이벤트를 발생시켜서, 이벤트 데이터를 상기 HAL 계층(123)을 통해 상기 안드로이드 프레임워크 계층(124)에 전달되게 한다.The Linux kernel layer 124 generates an event so that event data received from the server daemon 110 can be read from a library corresponding to an event among the libraries disposed in the HAL layer 123, To be communicated to the Android framework layer 124 via the HAL layer 123.

여기서, 리눅스 커널 계층(124)은 프로그램적으로 보면 디바이스를 파일(file)로 인식한다. 따라서, 리눅스 커널 계층(124)의 각 디바이스 드라이버를 동작시키기 위해서, 상기 하드웨어 계층 모듈(125)에 배치되는 디바이스는 파일(file)로 생성되는 가상의 디바이스로 구성되어 리눅스 커널 계층(124)의 디바이스 드라이버에서 인식할 수 있는 노드로 지정 및 매칭된다.
Here, the Linux kernel layer 124 recognizes the device as a file from a program viewpoint. Accordingly, in order to operate each device driver of the Linux kernel layer 124, a device disposed in the hardware layer module 125 is configured as a virtual device generated as a file, And is designated and matched to a node recognizable by the driver.

이하, 실제 스마트기기(10)에 설치된 클라이언트 응용프로그램(11a)과 가상 안드로이드 장치를 구비한 서버 시스템(100)에 구비된 서버 데몬(110)과, 가상 안드로이드 장치(120)의 HAL 계층 모듈(130) 및 리눅스 커널 계층 모듈(140)의 동작에 대해서 도 3을 참조하여 보다 구체적으로 설명한다.
The server daemon 110 included in the server system 100 having the virtual Android device and the client application program 11a installed in the actual smart device 10 and the HAL layer module 130 of the virtual Android device 120 And the operation of the Linux kernel layer module 140 will be described in more detail with reference to FIG.

도 3은 본 발명의 실시예에 따른 서버 시스템에 있어서, 이벤트 정보를 실제 스마트기기(10)로부터 수신하는 단계부터 이벤트 정보를 응용프로그램에 사용되게 하는 단계까지를 보여주는 순서도이다.FIG. 3 is a flowchart showing the steps from receiving event information from the actual smart device 10 to using the event information for the application program in the server system according to the embodiment of the present invention.

먼저, 서버 시스템(100)의 가상 안드로이드 장치(100)에 안드로이드 플랫폼을 탑재한 후, 리눅스 커널 계층 모듈(124)의 디바이스 드라이버의 사용을 위한 설정을 수행한다(S1). 예를 들어, 가상 디바이스의 이름, 종류 및 ID의 설정, 가상 디바이스에 대한 정보를 담고 있는 구조체 변수의 정의을 수행한다. 본 발명의 실시예에서는 실제 스마트기기(10)로부터 전송받는 이벤트 데이터를 입력으로 처리하므로, 가상 디바이스의 종류는 입력장치가 되며, 입력장치의 ID는 리눅스 커널에서 자동으로 설정된다.First, the Android platform is loaded on the virtual Android device 100 of the server system 100, and then a setting for using the device driver of the Linux kernel layer module 124 is performed (S1). For example, it defines the name, kind, and ID of the virtual device, and defines the structure variable that contains the information about the virtual device. In the embodiment of the present invention, the event data received from the actual smart device 10 is processed as input, so that the type of the virtual device becomes the input device, and the ID of the input device is automatically set in the Linux kernel.

그리고, 디바이스 드라이버를 리눅스 커널에서 인식할 수 있도록 초기화 함수로 등록하고, 디바이스 드라이버를 사용하지 않을 시에 종료 함수를 이용하여 등록 해지할 수 있게 한다.Then, the device driver is registered as an initialization function so that the device driver can be recognized by the Linux kernel, and the device driver can be registered by using the termination function when not using the device driver.

또한, 실제 스마트기기(10)의 디바이스에서 발생하여 전송받는 이벤트 정보를 하드웨어 계층 모듈(125)의 가상 디바이스에서 읽어들인 것처럼 처리하기 위해서, 이벤트 정보에 포함되는 이벤트 데이터를 리눅스 커널 계층(124)에 전달하는 데 사용되는 ioctl() 함수를 특정한다. 다시 말해서, 서버 데몬(110)이 이벤트 정보에 포함된 이벤트 데이터를 ioctl() 함수를 이용하여 리눅스 커널 계층 모듈(124)의 디바이스 드라이버, 즉, 이벤트에 대응되는 디바이스 드라이버에 전달되도록 특정한다. 여기서, ioctl() 함수는 읽기 및 쓰기가 가능하며, 하드웨어 디바이스의 제어를 위해 커널의 디바이스 드라이버와 통신할 수 있게 하므로, 본 발명의 실시예에서는 ioctl() 함수를 이용하여 이벤트 데이터를 커널 계층(124)의 디바이스 드라이버에 전달한다.In order to process event information generated and received by the device of the actual smart device 10 as if read from the virtual device of the hardware layer module 125, event data included in the event information is stored in the Linux kernel layer 124 Identifies the ioctl () function used to communicate. In other words, the server daemon 110 specifies the event data included in the event information to be transferred to the device driver of the Linux kernel layer module 124, that is, the device driver corresponding to the event, by using the ioctl () function. Here, the ioctl () function is capable of reading and writing and communicating with the device driver of the kernel for controlling the hardware device. Therefore, in the embodiment of the present invention, the ioctl () 124 to the device driver.

또한, 리눅스는 모든 요소를 파일처럼 처리하기 때문에, 하드웨어 디바이스도 파일처럼 처리한다. 이에, 가상 안드로이드 장치(120)에는 실제의 디바이스를 구비하지 아니하지만, 디바이스 드라이버의 동작을 위한 가상의 디바이스를 응용프로그램에서 사용되게 하기 위해서 디바이스 드라이버와 매칭되는 가상 디바이스를 생성해야 하므로, 하드웨어 계층 모듈(125)에 배치되는 가상 디바이스는 디바이스 드라이버에 등록된 장치 이름의 파일명으로 생성한다. 이러한 가상 디바이스는 /dev/ 폴더 아래에 생성되며, 예를 들면 /dev/vsensor, /dev/vtouch, /dev/vgps로 할 수 있다.Also, since Linux handles all elements like files, it handles hardware devices like files. Accordingly, the virtual Android device 120 does not have an actual device, but a virtual device matching the device driver must be created in order to use a virtual device for operation of the device driver in an application program. Therefore, The virtual device disposed in the device driver 125 generates a file name of the device name registered in the device driver. These virtual devices are created under the / dev / folder, for example, / dev / vsensor, / dev / vtouch, and / dev / vgps.

다음으로, 상기 서버 데몬(110)이 가동됨에 따라(S2) TCP socket을 생성하여 실제 스마트기기(10)가 접속할 수 있게 한다(S3).Next, as the server daemon 110 is activated (S2), a TCP socket is created to allow the actual smart device 10 to connect (S3).

이때, 실제 스마트기기(10)에서 클라이언트 응용프로그램(11a)이 실행되어(S10) 접속을 요청받으면 TCP 연결을 위한 설정(S11)이 이루어지고(S11) TCP 연결 상태를 유지하며 대기한다(S12). 여기서 대기한다는 의미는 이벤트 정보를 언제든 수신할 수 있도록 대기한다는 의미이다. 이때, 응용프로그램 계층(121)은 응용프로그램을 실행시켜서 이벤트 데이터에 따라 구동할 준비를 한다.At this time, when the client application program 11a is executed in the actual smart device 10 (S10) and a connection is requested, a setting S11 for a TCP connection is made (S11), and a TCP connection state is maintained (S12) . Waiting here means waiting for event information to be received at any time. At this time, the application layer 121 executes an application program and prepares to drive according to the event data.

그리고, 클라이언트 응용프로그램(11a)이 실제 스마트기기(10)의 디바이스에서 이벤트가 발생할 시에 입력받는 이벤트 데이터를 수집하여(S20) 이벤트 정보를 생성한 후 전송하게 되면(S21), 상기 서버 데몬(110)는 이벤트 정보를 수신한다(S22). 이와 같이 수신받는 이벤트 정보는 이벤트를 일으킨 디바이스의 종류를 나타내는 식별자 및 그 디바이스에서 응용프로그램의 입력값으로 발생시킨 이벤트 데이터를 포함하며, 실제 스마트기기(10)의 디바이스에서 이벤트가 발생할 때마다 클라이언트 응용프로그램(11a)에 의해 실시간으로 생성되어 서버 시스템(100)의 서버 데몬(160)에 전송된다. 이때, 클라이언트 응용프로그램(11a)은 통신 장애 등의 요인으로 인해 TCP 연결이 끊어지면 서버 데몬(110)과의 접속을 재시도하여(S10') 이벤트 정보의 전송을 지속한다.The client application program 11a collects event data received when an event occurs in the device of the actual smart device 10 and generates event information and transmits the event information to the server daemon (S21) 110 receives the event information (S22). The received event information includes an identifier indicating the type of the device that caused the event and event data generated as an input value of the application program in the device. Whenever an event occurs in the device of the actual smart device 10, And is transmitted to the server daemon 160 of the server system 100 in real time by the program 11a. At this time, if the TCP connection is disconnected due to a communication failure or the like, the client application program 11a retries connection with the server daemon 110 (S10 ') and continues transmission of the event information.

서버 데몬(110)은 이벤트 정보를 실제 스마트기기(10)로부터 수신하게 되면, 이벤트 정보로부터 디바이스 별로 이벤트 데이터를 분류한 후, ioctl() 함수를 이용하여 디바이스에 맞게 이벤트 데이터를 리눅스 커널 계층(124)에 전달하며(S30), 리눅스 커널 계층(124)에서는 디바이스에 매칭되는 디바이스 드라이버에서 이벤트 데이터를 전달받는다(S31). 예를 들어, 터치스크린의 터치 입력에 따른 이벤트이면 가상의 터치스크린에 매칭되는 디바이스 드라이버에서 처리할 수 있도록 하고, 자이로센서의 센싱값에 따른 이벤트이면 가상의 자이로센서에 매칭되는 다바이스 드라이버에서 처리할 수 있도록 한다. Upon receiving event information from the actual smart device 10, the server daemon 110 classifies event data by device from the event information, and transmits event data to the Linux kernel layer 124 (i. E. (S30), and the Linux kernel layer 124 receives the event data from the device driver matching the device (S31). For example, if the event is an event corresponding to a touch input of a touch screen, the event can be processed by a device driver matched with a virtual touch screen. If the event is an event corresponding to a sensed value of the gyro sensor, .

그리고, 리눅스 커널 계층(124)은 이벤트 데이터를 전달받으면 곧바로 이벤트를 발생시켜서(S40) HAL 계층(123)에 알린다.Upon receiving the event data, the Linux kernel layer 124 generates an event (S40) and notifies the HAL layer 123 of the event.

이때, HAL 계층(123)은 이벤트 정보에 대응되는 디바이스 드라이버를 open하여(S23, S24) 리눅스 커널 계층(124)이 발생시키는 이벤트 입력을 받을 수 있도록 대기함으로써, 리눅스 커널 계층(124)에서 발생되는 이벤트 입력을 받을 수 있게 된다(S41). 이때, 리눅스 커널 계층(124)에서 발생되는 이벤트 입력은 리눅스 커널 계층(124)의 이벤트 데이터를 읽어가라고 알려주는 이벤트가 되므로, 실제 스마트기기에 탑재된 안드로이드 플랫폼 상에서 실제 디바이스에서 이벤트가 발생한 사실을 HAL 계층에 알려주는 동작과 동일하다.At this time, the HAL layer 123 opens the device driver corresponding to the event information (S23, S24) and waits for receiving an event input generated by the Linux kernel layer 124, thereby causing the HAL layer 123 The event input is received (S41). At this time, since the event input generated at the Linux kernel layer 124 is an event informing that the event data of the Linux kernel layer 124 should be read, the fact that an event has occurred in the real device on the Android platform mounted on the smart device, This is the same as telling the layer.

HAL 계층(123)에서 대기하는 HAL 라이브러리는 이벤트 데이터에 대응되는 라이브러리이며, 예를 들면 터치스크린의 터치 입력에 따른 이벤트 데이터이면 가상의 터치스크린에 매칭되는 라이브러리가 대기하여 리눅스 커널 계층(124)의 이벤트 입력을 받고, 자이로센서의 센싱값에 따른 이벤트 데이터이면 가상의 자이로센서에 매칭되는 라이브러리가 대기하여 리눅스 커널 계층(124)의 이벤트 입력을 받는다.The HAL library that waits in the HAL layer 123 is a library corresponding to event data. For example, if the event data is a touch input of a touch screen, the library matching the virtual touch screen waits for the event data to be input to the Linux kernel layer 124 If the event data is received according to the sensed value of the gyro sensor, the library matching the virtual gyro sensor waits and receives an event input from the Linux kernel layer 124.

다음으로, HAL 계층(123)에서 대기하는 HAL 라이브러리는 리눅스 커널 계층(124)로부터 이벤트 데이터를 읽어들인 후(S50) 안드로이드 프레임워크 계층(122)에 전달함으로써, 응용프로그램 계층(121)의 응용프로그램에서 이벤트 데이터를 사용하여 구동되게 한다.
Next, the HAL library waiting in the HAL layer 123 reads event data from the Linux kernel layer 124 (S50) and transfers the event data to the Android framework layer 122, To be driven using event data.

상술한 바와 같이 가상 안드로이드 장치를 구비한 서버 시스템(100)은 실제 스마트기기(10)에서 발생하는 디바이스의 이벤트 데이터를 서버 데몬(110)으로 전송받아 가상 안드로이드 장치(120)에서 응용프로그램의 구동에 사용되게 하므로, 디바이스의 이벤트 데이터를 생성하는 에뮬레이터를 사용할 때보다 실제 스마트기기(10)의 디바이스 이벤트를 사용하는 실제 응용프로그램의 구동 환경 하에서 응용프로그램의 구동을 검증할 수 있다. 즉, 실제 스마트기기의 디바이스에 연동하여 응용프로그램을 구동시키므로, 실제 스마트기기(10)에 응용프로그램을 설치하지 아니하더라도 실제 스마트기기(10)에서 구동되는 응용프로그램의 동작 테스트가 가능하다. 이는, 실제 스마트기기(10)에 탑재되는 안드로이드 플랫폼을 채용한 가상 안드로이드 장치(120)에서 운용체제의 리눅스 커널 계층(124)이 실제 스마트기기(10)의 디바이스 이벤트를 받아들여 실제 디바이스가 이벤트를 발생시키는 것처럼 구현하기에 가능하다.As described above, the server system 100 having the virtual Android device receives the event data of the device generated in the actual smart device 10 by the server daemon 110 and executes the application program in the virtual Android device 120 It is possible to verify the operation of the application program under the operating environment of the actual application program using the actual device event of the smart device 10 as compared with the case of using the emulator for generating the event data of the device. That is, since the application program is operated in cooperation with the actual device of the smart device, the operation test of the application program driven by the actual smart device 10 can be performed even if the application program is not installed in the actual smart device 10. This is because the Linux kernel layer 124 of the operating system in the virtual Android device 120 employing the Android platform installed in the actual smart device 10 accepts the actual device event of the smart device 10, It is possible to implement it as if it were generated.

또한, 실제 스마트기기(10)에 안드로이드 플랫폼이 아닌 다른 플랫폼이 탑재되어 있더라도 그 플랫폼에서 동작할 수 있는 클라이언트 응용프로그램(11a)을 설치함으로서, 디바이스의 이벤트 정보를 전달받을 수 있다. 이에, 안드로이드 플랫폼을 탑재하지 아니하는 스마트기기로부터 디바이스의 이벤트 정보를 전송받아 안드로이드 응용프로그램의 구동에 사용할 수 있으므로, 실제 스마트기기의 플랫폼 종류에 구애받지 아니한다. 따라서, 본 발명에 따른 가상 안드로이드 장치를 구비한 서버 시스템은 다양한 제조사 및 모델의 스마트기기에 대해서 응용프로그램의 동작을 검증할 수 있는 환경을 제공한다.
Also, even if a platform other than the Android platform is installed in the actual smart device 10, event information of the device can be received by installing the client application program 11a that can operate on the platform. Therefore, since the event information of the device can be received from a smart device that does not include the Android platform, it can be used to drive the Android application program, so that the platform type of the actual smart device is not limited. Accordingly, a server system having a virtual Android apparatus according to the present invention provides an environment for verifying the operation of an application program for smart devices of various manufacturers and models.

이상에서 본 발명의 기술적 사상을 예시하기 위해 구체적인 실시 예로 도시하고 설명하였으나, 본 발명은 상기와 같이 구체적인 실시 예와 동일한 구성 및 작용에만 국한되지 않고, 여러가지 변형이 본 발명의 범위를 벗어나지 않는 한도 내에서 실시될 수 있다. 따라서, 그와 같은 변형도 본 발명의 범위에 속하는 것으로 간주해야 하며, 본 발명의 범위는 후술하는 특허청구범위에 의해 결정되어야 한다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments, . ≪ / RTI > Accordingly, such modifications are deemed to be within the scope of the present invention, and the scope of the present invention should be determined by the following claims.

10 : 실제 스마트기기
11 : 응용프로그램 계층(Application Layer)
11a : 클라이언트 응용프로그램
12 : 안드로이드 프레임워크 계층(Application Framework Layer)
13 : HAL 계층(Hardware Abstraction Layer)
14 : 리눅스 커널 계층(Linux Kernel Layer)
15 : 하드웨어 계층(Hardware Layer)
20 : 통신망
100 : 가상 안드로이드 장치를 구비한 서버 시스템
110 : 서버 데몬(Server Daemon)
120 : 가상 안드로이드 장치
121 : 응용프로그램 계층(Application Layer)
122 : 안드로이드 프레임워크 계층(Application Framework Layer)
123 : HAL 계층(Hardware Abstraction Layer)
124 : 리눅스 커널 계층(Linux Kernel Layer)
125 : 하드웨어 계층(Hardware Layer)
10: Actual Smart Device
11: Application Layer
11a: Client Application
12: Android Framework Layer (Application Framework Layer)
13: Hardware Abstraction Layer (HAL)
14: Linux Kernel Layer
15: Hardware Layer
20: Network
100: Server system with virtual Android device
110: Server Daemon
120: Virtual Android device
121: Application Layer
122: Android Framework Layer (Application Framework Layer)
123: Hardware Abstraction Layer (HAL)
124: Linux Kernel Layer
125: Hardware Layer

Claims (3)

스마트기기에 구비된 실제 디바이스의 이벤트 정보를 통신망에 통해 전송받는 서버 데몬;
응용프로그램 계층(Application Layer), 안드로이드 프레임워크 계층(Application Framework Layer), HAL 계층(Hardware Abstraction Layer), 리눅스 커널 계층(Linux Kernel Layer) 및 하드웨어 계층(Hardware Layer)을 포함하는 안드로이드 플랫폼을 탑재하되, 디바이스를 리눅스 커널 계층이 인식 가능한 프로그램 파일로 생성하여 가상화하고, 리눅스 커널 계층이 상기 서버 데몬으로부터 이벤트 정보를 전달받음으로써, HAL 계층에서 리눅스 커널 계층의 이벤트 정보를 읽어들인 후 안드로이드 프레임워크 계층에 전달하게 하여 응용프로그램 계층의 응용프로그램 구동에 필요한 디바이스 이벤트로 사용되게 하는 가상 안드로이드 장치;
를 포함하여서, 실제 스마트기기의 디바이스에서 발생하는 이벤트에 따라 응용프로그램을 실행함을 특징으로 하는 가상 안드로이드 장치를 구비한 서버 시스템.
A server daemon for receiving event information of an actual device provided in the smart device through a communication network;
The Android platform includes an application layer, an Android framework layer, a hardware abstraction layer, a Linux kernel layer, and a hardware layer, The Linux kernel layer generates event information from the server daemon, reads the event information of the Linux kernel layer from the HAL layer, and transmits the event information to the Android framework layer A virtual Android device which is used as a device event necessary for driving an application program layer;
And the application program is executed according to an event occurring in the device of the actual smart device.
제 1항에 있어서,
상기 리눅스 커널 계층은 ioctl 함수를 이용하여 서버 데몬으로부터 이벤트 정보를 전달받음을 특징으로 하는 가상 안드로이드 장치를 구비한 서버 시스템.
The method according to claim 1,
Wherein the Linux kernel layer receives event information from a server daemon using an ioctl function.
제 2항에 있어서,
상기 리눅스 커널 계층에서 이벤트 정보를 전달받을 시에,
상기 HAL 계층은 상기 리눅스 커널 계층의 디바이스 드라이버를 open하여 상기 리눅스 커널 계층의 이벤트 입력을 받을 수 있도록 대기한 후, 상기 리눅스 커널 계층의 이벤트 입력을 받게 되면 상기 리눅스 커널 계층에 전달된 상기 이벤트 정보를 읽어들여 안드로이드 프레임워크 계층에 전달함을 특징으로 하는 가상 안드로이드 장치를 구비한 서버 시스템.
3. The method of claim 2,
Upon receiving event information from the Linux kernel layer,
The HAL layer opens the device driver of the Linux kernel layer and waits for receiving an event input from the Linux kernel layer. When receiving the event input from the Linux kernel layer, the HAL layer notifies the event information delivered to the Linux kernel layer And delivers it to the Android framework layer.
KR1020140055323A 2014-05-09 2014-05-09 Server system having virtual android apparatus for interworking between application and real smart device KR20150128256A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140055323A KR20150128256A (en) 2014-05-09 2014-05-09 Server system having virtual android apparatus for interworking between application and real smart device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140055323A KR20150128256A (en) 2014-05-09 2014-05-09 Server system having virtual android apparatus for interworking between application and real smart device

Publications (1)

Publication Number Publication Date
KR20150128256A true KR20150128256A (en) 2015-11-18

Family

ID=54838887

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140055323A KR20150128256A (en) 2014-05-09 2014-05-09 Server system having virtual android apparatus for interworking between application and real smart device

Country Status (1)

Country Link
KR (1) KR20150128256A (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105897687A (en) * 2015-12-30 2016-08-24 乐视致新电子科技(天津)有限公司 Data transmission method and device
CN108769518A (en) * 2018-05-29 2018-11-06 深圳美图创新科技有限公司 Camera exchange method, device, electronic equipment and computer readable storage medium
KR101989593B1 (en) * 2018-02-22 2019-06-14 한국항공대학교산학협력단 Device and method for transmission of identification information
CN110958390A (en) * 2019-12-09 2020-04-03 Oppo广东移动通信有限公司 Image processing method and related device
KR20200049656A (en) * 2018-10-30 2020-05-08 에이케이시스 주식회사 Control system using virtual Android devices to provide application-driven environments
CN116166491A (en) * 2023-04-23 2023-05-26 北京紫光青藤微系统有限公司 Method, device, system, electronic equipment and medium for debugging mobile terminal

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105897687A (en) * 2015-12-30 2016-08-24 乐视致新电子科技(天津)有限公司 Data transmission method and device
KR101989593B1 (en) * 2018-02-22 2019-06-14 한국항공대학교산학협력단 Device and method for transmission of identification information
CN108769518A (en) * 2018-05-29 2018-11-06 深圳美图创新科技有限公司 Camera exchange method, device, electronic equipment and computer readable storage medium
CN108769518B (en) * 2018-05-29 2020-07-28 深圳美图创新科技有限公司 Camera interaction method and device, electronic equipment and computer readable storage medium
KR20200049656A (en) * 2018-10-30 2020-05-08 에이케이시스 주식회사 Control system using virtual Android devices to provide application-driven environments
CN110958390A (en) * 2019-12-09 2020-04-03 Oppo广东移动通信有限公司 Image processing method and related device
CN110958390B (en) * 2019-12-09 2021-07-20 Oppo广东移动通信有限公司 Image processing method and related device
CN116166491A (en) * 2023-04-23 2023-05-26 北京紫光青藤微系统有限公司 Method, device, system, electronic equipment and medium for debugging mobile terminal

Similar Documents

Publication Publication Date Title
CN109154849B (en) Super fusion system comprising a core layer, a user interface and a service layer provided with container-based user space
KR101027971B1 (en) Mobile communication terminal capable of testing application and method thereof
KR20150128256A (en) Server system having virtual android apparatus for interworking between application and real smart device
US10680921B2 (en) Virtual intelligent platform management interface for hardware components
US20110191787A1 (en) System and method for providing sensor data from embedded device to software development environment
US10013491B2 (en) Methods and systems of workload mobility across divergent platforms
KR101007739B1 (en) Method and system for providing fota service
US20050193261A1 (en) Configuration proxy service for the extended firmware interface environment
US9184991B2 (en) Method and apparatus for developing service processor solutions
WO2015179603A1 (en) Providing testing environments using virtualization
US11875174B2 (en) Method and apparatus for virtual machine emulator upgrading virtualization emulator
CN104113430A (en) Cloud computing data center automatic deployment software framework design
JP6250842B2 (en) Sharing non-USB sensor with another device using USB over IP
CN108304209B (en) Firmware upgrading method and firmware upgrading system
KR20120113160A (en) Device and method for executing android applications on general purpose operating systems, and computer readable recording medium for the same
US20130263126A1 (en) System and method for increasing the capabilities of a mobile device
US20240086180A1 (en) Safe modular upgrades
US9141321B1 (en) Configurable printer server device
CN107861827B (en) Card screen detection method, mobile terminal and computer readable storage medium
CN108234174B (en) Management method and device of virtual network function
US10761868B2 (en) Device-agnostic driver for virtual machines
CN109039765B (en) Network configuration method and device
CN113360379B (en) Program test environment creation method and program test environment creation apparatus
JP2011180771A (en) Information processing device, emulation system and emulation program
CN107688479B (en) Android system network cluster, construction method thereof, and Android system network cluster data processing method and system

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination