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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
Abstract
Description
본 발명은 실제 스마트기기의 디바이스에서 발생하는 이벤트 입력을 통신망을 통해 전송받아 안드로이드 플랫폼 상에서 응용프로그램의 구동에 사용되도록 하여, 실제 스마트기기에서 응용프로그램을 설치 및 실행하는 환경을 제공하는 가상 안드로이드 장치를 구비한 서버 시스템에 관한 것이다.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
따라서, 본 발명은 실제 스마트기기의 디바이스에서 발생하는 이벤트에 따라 응용프로그램을 구동시켜서 가상 안드로드 장치에 물리적으로 실제 디바이스가 존재하는 것과 같은 환경을 제공하는 가상 안드로이드 장치를 구비한 서버 시스템를 제공하는 것이다.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
상기 도 1 및 도 2를 참조하면, 본 발명의 실시예에 따른 가상 안드로이드 장치를 구비한 서버 시스템(100)은 안드로이드 응용프로그램을 실제 스마트기기(10)에 설치하여 실제 스마트기기(10)의 각종 디바이스에서 발생하는 이벤트에 따라 실행시키는 것이 아니라, 안드로이드 플랫폼을 탑재한 가상 안드로이드 장치(120)를 내부에 구비하여서 실제 스마트기기(10)에서 발생하는 디바이스의 이벤트 정보를 전송받아 가상 안드로이드 장치(120)에서 등용프로그램을 실행시키게 구성된다. 1 and 2, a
여기서, 이벤트의 의미는 예를 들어 센서의 경우 센서에서 센싱값을 감지하는 상황이고, 다른 예로서, 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
이에, 본 발명의 실시예에 따른 가상 안드로이드 장치를 구비한 서버 시스템(100)을 설명하기에 앞서서, 안드로이드 플랫폼을 탑재한 실제 스마트기기(10)를 먼저 설명한다.Before describing the
상기 도 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
하드웨어 계층(15)에는 각종 센서(예 : 자이로 스코프, 가속도 센서), GPS, 터치스크린 등의 디바이스(Device)와 CPU, 메모리, 디스플레이 등의 각종 하드웨어 디바이스가 있다. 본 발명은 디바이스 중에 센서, GPS, 터치스크린 등의 디바이스에서 발생하는 입력값(또는 센싱값)을 취합하여 가상 안드로이드 장치를 구비한 서버 시스템(100)에 전송하므로, 이하, '디바이스'는 안드로이드 응용프로그램에 사용되는 입력값(또는 센싱값)을 발생시키는 디바이스를 지칭하는 것으로 설명한다.The
리눅스 커널 계층(14)에는 하드웨어 계층(15)의 각 디바이스에 직접 액세스하여 제어하는 디바이스 드라이버(Device Driver)가 배치되며, 디바이스에서 발생하는 입력값을 취합 및 가공하여 안드로이드 운영체제로 전달한다. 또한, 리눅스 커널 계층(14)은 프로세스와 메모리 관리, 보안, 네트워크, 전력관리 등을 담당한다.A device driver for accessing and controlling each device of the
HAL 계층(15)은 플랫폼 이식에 있어서 하드웨어의 독립성을 지원하기 위한 계층으로서, 하드웨어를 추상화하여 하드웨어에 직접 접근하지 않고서도 사용할 수 있게 하며, 리눅스 커널 계층(14)의 디바이스 드라이버로부터 이벤트값을 읽어들여 안드로이드 프레임워크 계층(12)에 전달한다. 이를 위해서 각종 HAL 라이브러리(Library)를 포함한다.The HAL
안드로이드 프레임워크 계층(12)은 안드로이드 어플리케이션을 만드는데 사용되는 클래스 또는 하드웨어 인터페이스 및 사용자 인터페이스와 리소스 관리를 위한 추상 클래스를 제공하며, 안드로이드 애플리케이션 개발자는 필요한 기능 구현을 위해 안드로이드 프레임워크 계층(12)에서 제공하는 API(Application Programming Interface)를 자유롭게 사용할 수 있다. The Android
이에, 본 발명의 실시예에 따르면, 후술하는 클라이언트 응용프로그램(11a)은 안드로이드 프레임워크 계층(12)에서 제공하는 API를 이용함으로써 디바이스의 이벤트 발생을 얻을 수 있게 작성된다.Accordingly, according to the embodiment of the present invention, a
응용프로그램 계층(11)은 안드로이드 응용프로그램들이 위치한다.The
이와 같은 구조의 플랫폼을 갖는 실제 스마트기기(10)는 하드웨어 계층(15)의 디바이스에서 이벤트가 발생할 시에 이벤트를 리눅스 커널 계층(14)을 통해 HAL 계층(13)에서 읽어들여 안드로이드 프레임워크 계층(12)에 전달함으로써 응용프로그램 계층(11)의 응용프로그램이 실행할 시에 디바이스의 이벤트에 따라 실행되게 한다.
The actual
본 발명의 실시예에 따른 가상 안드로이드 장치를 구비한 서버 시스템(100)은 안드로이드 플랫폼을 탑재하여 응용프로그램을 실행할 수 있게 되어 있으며, 실제 스마트기기(10)와 TCP/IP Protocol로 통신망(20)을 통해 통신하여 실제 스마트기기(10)에서 발생하는 디바이스의 이벤트 정보를 전송받아 이벤트 정보에 따라 응용프로그램을 실행시킨다.The
여기서, 통신망(20)은 3G, 4G(LTE 포함), WIFI 등의 이동 통신망을 예로 들수 있으며, 실제 스마트기기(10)에 허용되는 서버 접속 방식을 위한 통신망이면 만족하지만, TCP/IP Protocol를 채용한 무선 인터넷망을 예로 들어 설명한다.Here, the
이에, 실제 스마트기기(10)에 구비된 디바이스의 이벤트 정보를 가상 안드로이드 장치를 구비한 서버 시스템(100)에 전송하기 위한 클라이언트 응용프로그램(11a)이 상기 실제 스마트기기(10)의 응용프로그램 계층(11)에 설치된다.A
상기 클라이언트 응용프로그램(11a)은 실제 스마트기기(10)의 하드웨어 계층(50)에 구비된 각종 디바이스에서 이벤트가 발생할 시에 디바이스의 이벤트 데이터를 리눅스 커널 계층(14)을 통해 HAL 계층(13)에서 읽어들여 전달받도록 작성되는 일종의 애플리케이션으로서, 실제 스마트기기(10)의 응용프로그램 계층(11)에 설치될 수 있는 애플리케이션으로 작성되며, 디바이스에서 이벤트가 발생할 때마다 이벤트 데이터를 포함한 이벤트 정보를 가상 안드로이드 장치를 구비한 서버 시스템(100)과 사전 약속된 형식의 패킷(packet)으로 작성하여 실시간 전송한다.The
여기서, 상기 클라이언트 응용프로그램(11a)은 가상 안드로이드 장치를 구비한 서버 시스템(100)의 IP 주소를 이용하여 후술하는 가상 안드로이드 장치를 구비한 서버 시스템(100)의 서버 데몬(160)에 접속함으로써 디바이스이 이벤트를 전송할 수 있다.Here, the
그리고, 통신 패킷으로 작성하여 전송하는 이벤트 정보는 상기한 이벤트 데이터와 이벤트를 발생시킨 디바이스의 식별자를 포함한다.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
이에, 상기 클라이언트 응용프로그램(11a)는 GPS의 이벤트 정보는 별도의 패킷에 담고, 이외의 디바이스에서 발생하는 이벤트 정보는 인코딩하여 하나의 패킷에 담는다.The
이와 같이 실제 스마트기기(10)에는 상기 클라이언트 응용프로그램(11a)을 응용프로그램 계층(11)에 설치하여 실행함으로써 하드웨어 계층(15)에 구비된 각종 디바이스의 이벤트 정보를 수집하여 통신망(20)을 통해 가상 안드로이드 장치를 구비한 서버 시스템(100)에 전송한다. As described above, the actual
그리고, 가상 안드로이드 장치를 구비한 서버 시스템(100)은 안드로이드 플랫폼을 탑재하여 안드로이드 응용프로그램을 설치 및 실행할 수 있는 환경을 제공하는 서버 시스템이되, 안드로이드 응용프로그램을 실행시키기 위해 디바이스를 에뮬레이팅하여 디바이스의 이벤트를 발생시키는 수단을 구비하지 아니하고, 대신에, 실제 스마트기기(10)에서 전송하는 디바이스의 이벤트 정보를 입력으로 하여 응용프로그램을 실행할 수 있게 한다.The
이를 위해서, 상기 가상 안드로이드 장치를 구비한 서버 시스템(100)는 상기 클라이언트 응용프로그램(11a)의 구동에 의해서 실제 스마트기기(10)로부터 디바이스의 이벤트 정보를 수신받는 서버 데몬(110)과, 안드로이드 플랫폼을 탑재하여 안드로이드 운영체제로 동작하는 가상 안드로이드 장치(120)을 구비한다.To this end, the
상기 서버 데몬(110)은 백그라운드 프로세스 상태로 서버 시스템(100)에 존재하여서, 실제 스마트기기(10)와 통신 상태를 유지하여 실제 스마트기기(10)에서 전송하는 이벤트 정보를 수신한다.The
여기서, 이벤트 정보는 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
상기 가상 안드로이드 장치(120)는 상기 서버 데몬(110)으로부터 전달받는 이벤트 데이터를 사용하여 응용프로그램을 실행시키는 환경을 제공하기 위한 것이다. The virtual
이를 위해서, 상기 가상 안드로이드 장치(120)는 안드로이드 플랫폼을 구성하는 응용프로그램 계층(121), 안드로이드 프레임워크 계층(122), HAL 계층(123), 리눅스 커널 계층(124) 및 하드웨어 계층(125)을 포함한다.To this end, the virtual
상기 응용프로그램 계층(121)은 안드로이드 플랫폼을 탑재한 실제 스마트기기(10)에 설치 및 설행될 수 있는 안드로이드 응용프로그램을 프로그램 코드(code)의 변경 없이 설치하여 실행시킨다. The
상기 안드로이드 프레임워크 계층(122)은 응용프로그램 계층(121)의 응용프로그램과 하드웨어 간의 인터페이스를 위한 클래스를 구비하여, 하위 계층인 HAL 계층 모듈(123)을 통해 전달받는 이벤트에 따라 안드로이드 응용프로그램을 실행시키게 한다. The
상기 HAL 계층 모듈(123)은 안드로이드에서 사용하는 디바이스의 제조사 또는 형식이 다르더라도 일관적인 접근을 가능하게 하여 하드웨어의 독립성을 지원하는 라이브러리를 포함한다. The
상기 리눅스 커널 계층(124)은 상기 서버 데몬(110)으로부터 전달받는 이벤트 데이터를 상기 HAL 계층(123)에 배치된 라이브러리 중에서 이벤트에 대응되는 라이브러리에서 읽어들일 수 있도록 이벤트를 발생시켜서, 이벤트 데이터를 상기 HAL 계층(123)을 통해 상기 안드로이드 프레임워크 계층(124)에 전달되게 한다.The
여기서, 리눅스 커널 계층(124)은 프로그램적으로 보면 디바이스를 파일(file)로 인식한다. 따라서, 리눅스 커널 계층(124)의 각 디바이스 드라이버를 동작시키기 위해서, 상기 하드웨어 계층 모듈(125)에 배치되는 디바이스는 파일(file)로 생성되는 가상의 디바이스로 구성되어 리눅스 커널 계층(124)의 디바이스 드라이버에서 인식할 수 있는 노드로 지정 및 매칭된다.
Here, the
이하, 실제 스마트기기(10)에 설치된 클라이언트 응용프로그램(11a)과 가상 안드로이드 장치를 구비한 서버 시스템(100)에 구비된 서버 데몬(110)과, 가상 안드로이드 장치(120)의 HAL 계층 모듈(130) 및 리눅스 커널 계층 모듈(140)의 동작에 대해서 도 3을 참조하여 보다 구체적으로 설명한다.
The
도 3은 본 발명의 실시예에 따른 서버 시스템에 있어서, 이벤트 정보를 실제 스마트기기(10)로부터 수신하는 단계부터 이벤트 정보를 응용프로그램에 사용되게 하는 단계까지를 보여주는 순서도이다.FIG. 3 is a flowchart showing the steps from receiving event information from the actual
먼저, 서버 시스템(100)의 가상 안드로이드 장치(100)에 안드로이드 플랫폼을 탑재한 후, 리눅스 커널 계층 모듈(124)의 디바이스 드라이버의 사용을 위한 설정을 수행한다(S1). 예를 들어, 가상 디바이스의 이름, 종류 및 ID의 설정, 가상 디바이스에 대한 정보를 담고 있는 구조체 변수의 정의을 수행한다. 본 발명의 실시예에서는 실제 스마트기기(10)로부터 전송받는 이벤트 데이터를 입력으로 처리하므로, 가상 디바이스의 종류는 입력장치가 되며, 입력장치의 ID는 리눅스 커널에서 자동으로 설정된다.First, the Android platform is loaded on the virtual
그리고, 디바이스 드라이버를 리눅스 커널에서 인식할 수 있도록 초기화 함수로 등록하고, 디바이스 드라이버를 사용하지 않을 시에 종료 함수를 이용하여 등록 해지할 수 있게 한다.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
또한, 리눅스는 모든 요소를 파일처럼 처리하기 때문에, 하드웨어 디바이스도 파일처럼 처리한다. 이에, 가상 안드로이드 장치(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
다음으로, 상기 서버 데몬(110)이 가동됨에 따라(S2) TCP socket을 생성하여 실제 스마트기기(10)가 접속할 수 있게 한다(S3).Next, as the
이때, 실제 스마트기기(10)에서 클라이언트 응용프로그램(11a)이 실행되어(S10) 접속을 요청받으면 TCP 연결을 위한 설정(S11)이 이루어지고(S11) TCP 연결 상태를 유지하며 대기한다(S12). 여기서 대기한다는 의미는 이벤트 정보를 언제든 수신할 수 있도록 대기한다는 의미이다. 이때, 응용프로그램 계층(121)은 응용프로그램을 실행시켜서 이벤트 데이터에 따라 구동할 준비를 한다.At this time, when the
그리고, 클라이언트 응용프로그램(11a)이 실제 스마트기기(10)의 디바이스에서 이벤트가 발생할 시에 입력받는 이벤트 데이터를 수집하여(S20) 이벤트 정보를 생성한 후 전송하게 되면(S21), 상기 서버 데몬(110)는 이벤트 정보를 수신한다(S22). 이와 같이 수신받는 이벤트 정보는 이벤트를 일으킨 디바이스의 종류를 나타내는 식별자 및 그 디바이스에서 응용프로그램의 입력값으로 발생시킨 이벤트 데이터를 포함하며, 실제 스마트기기(10)의 디바이스에서 이벤트가 발생할 때마다 클라이언트 응용프로그램(11a)에 의해 실시간으로 생성되어 서버 시스템(100)의 서버 데몬(160)에 전송된다. 이때, 클라이언트 응용프로그램(11a)은 통신 장애 등의 요인으로 인해 TCP 연결이 끊어지면 서버 데몬(110)과의 접속을 재시도하여(S10') 이벤트 정보의 전송을 지속한다.The
서버 데몬(110)은 이벤트 정보를 실제 스마트기기(10)로부터 수신하게 되면, 이벤트 정보로부터 디바이스 별로 이벤트 데이터를 분류한 후, ioctl() 함수를 이용하여 디바이스에 맞게 이벤트 데이터를 리눅스 커널 계층(124)에 전달하며(S30), 리눅스 커널 계층(124)에서는 디바이스에 매칭되는 디바이스 드라이버에서 이벤트 데이터를 전달받는다(S31). 예를 들어, 터치스크린의 터치 입력에 따른 이벤트이면 가상의 터치스크린에 매칭되는 디바이스 드라이버에서 처리할 수 있도록 하고, 자이로센서의 센싱값에 따른 이벤트이면 가상의 자이로센서에 매칭되는 다바이스 드라이버에서 처리할 수 있도록 한다. Upon receiving event information from the actual
그리고, 리눅스 커널 계층(124)은 이벤트 데이터를 전달받으면 곧바로 이벤트를 발생시켜서(S40) HAL 계층(123)에 알린다.Upon receiving the event data, the
이때, HAL 계층(123)은 이벤트 정보에 대응되는 디바이스 드라이버를 open하여(S23, S24) 리눅스 커널 계층(124)이 발생시키는 이벤트 입력을 받을 수 있도록 대기함으로써, 리눅스 커널 계층(124)에서 발생되는 이벤트 입력을 받을 수 있게 된다(S41). 이때, 리눅스 커널 계층(124)에서 발생되는 이벤트 입력은 리눅스 커널 계층(124)의 이벤트 데이터를 읽어가라고 알려주는 이벤트가 되므로, 실제 스마트기기에 탑재된 안드로이드 플랫폼 상에서 실제 디바이스에서 이벤트가 발생한 사실을 HAL 계층에 알려주는 동작과 동일하다.At this time, the
HAL 계층(123)에서 대기하는 HAL 라이브러리는 이벤트 데이터에 대응되는 라이브러리이며, 예를 들면 터치스크린의 터치 입력에 따른 이벤트 데이터이면 가상의 터치스크린에 매칭되는 라이브러리가 대기하여 리눅스 커널 계층(124)의 이벤트 입력을 받고, 자이로센서의 센싱값에 따른 이벤트 데이터이면 가상의 자이로센서에 매칭되는 라이브러리가 대기하여 리눅스 커널 계층(124)의 이벤트 입력을 받는다.The HAL library that waits in the
다음으로, HAL 계층(123)에서 대기하는 HAL 라이브러리는 리눅스 커널 계층(124)로부터 이벤트 데이터를 읽어들인 후(S50) 안드로이드 프레임워크 계층(122)에 전달함으로써, 응용프로그램 계층(121)의 응용프로그램에서 이벤트 데이터를 사용하여 구동되게 한다.
Next, the HAL library waiting in the
상술한 바와 같이 가상 안드로이드 장치를 구비한 서버 시스템(100)은 실제 스마트기기(10)에서 발생하는 디바이스의 이벤트 데이터를 서버 데몬(110)으로 전송받아 가상 안드로이드 장치(120)에서 응용프로그램의 구동에 사용되게 하므로, 디바이스의 이벤트 데이터를 생성하는 에뮬레이터를 사용할 때보다 실제 스마트기기(10)의 디바이스 이벤트를 사용하는 실제 응용프로그램의 구동 환경 하에서 응용프로그램의 구동을 검증할 수 있다. 즉, 실제 스마트기기의 디바이스에 연동하여 응용프로그램을 구동시키므로, 실제 스마트기기(10)에 응용프로그램을 설치하지 아니하더라도 실제 스마트기기(10)에서 구동되는 응용프로그램의 동작 테스트가 가능하다. 이는, 실제 스마트기기(10)에 탑재되는 안드로이드 플랫폼을 채용한 가상 안드로이드 장치(120)에서 운용체제의 리눅스 커널 계층(124)이 실제 스마트기기(10)의 디바이스 이벤트를 받아들여 실제 디바이스가 이벤트를 발생시키는 것처럼 구현하기에 가능하다.As described above, the
또한, 실제 스마트기기(10)에 안드로이드 플랫폼이 아닌 다른 플랫폼이 탑재되어 있더라도 그 플랫폼에서 동작할 수 있는 클라이언트 응용프로그램(11a)을 설치함으로서, 디바이스의 이벤트 정보를 전달받을 수 있다. 이에, 안드로이드 플랫폼을 탑재하지 아니하는 스마트기기로부터 디바이스의 이벤트 정보를 전송받아 안드로이드 응용프로그램의 구동에 사용할 수 있으므로, 실제 스마트기기의 플랫폼 종류에 구애받지 아니한다. 따라서, 본 발명에 따른 가상 안드로이드 장치를 구비한 서버 시스템은 다양한 제조사 및 모델의 스마트기기에 대해서 응용프로그램의 동작을 검증할 수 있는 환경을 제공한다.
Also, even if a platform other than the Android platform is installed in the actual
이상에서 본 발명의 기술적 사상을 예시하기 위해 구체적인 실시 예로 도시하고 설명하였으나, 본 발명은 상기와 같이 구체적인 실시 예와 동일한 구성 및 작용에만 국한되지 않고, 여러가지 변형이 본 발명의 범위를 벗어나지 않는 한도 내에서 실시될 수 있다. 따라서, 그와 같은 변형도 본 발명의 범위에 속하는 것으로 간주해야 하며, 본 발명의 범위는 후술하는 특허청구범위에 의해 결정되어야 한다.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.
상기 리눅스 커널 계층은 ioctl 함수를 이용하여 서버 데몬으로부터 이벤트 정보를 전달받음을 특징으로 하는 가상 안드로이드 장치를 구비한 서버 시스템.The method according to claim 1,
Wherein the Linux kernel layer receives event information from a server daemon using an ioctl function.
상기 리눅스 커널 계층에서 이벤트 정보를 전달받을 시에,
상기 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.
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)
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 |
-
2014
- 2014-05-09 KR KR1020140055323A patent/KR20150128256A/en not_active Application Discontinuation
Cited By (8)
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 |