본문 바로가기

Small Devices/android19

chromium system webview 설치 및 HTML5 Score 비교 AOSP로 빌드된 안드로이드에 WebView를 update 하기 위해서 Chromium 을 빌드하고 SystemWebView.apk 를 설치하는 과정은 다음의 사이트에서 참조할 수 있다. https://www.chromium.org/developers/how-tos/build-instructions-android-webview 그런데 설치 과정중 "Uninstall any webview updates" 에서 adb uninstall com.android.webview 를 실행할 때 다음의 에러가 발생한다. Failure [DELETE_FAILED_INTERNAL_ERROR] 이 에러는 System App일경우에 발생한다. com.android.webview는 /system/app/webview 상에 존재.. 2017. 4. 14.
[Android Studio] github에서 Project Import 이후 오류 해결 github에서 android studio로 프로젝트를 import 하고 나서 다음의 오류가 발생한다. Plugin with id 'com.android.application' not found 이 오류는 프로젝트 폴더의 build.gradle(Project:ㅇㅇㅇ) 의 내용이 app 폴더의 build.gradle(Module:app)에 포함되어 있지 않기 때문이다. (android studio에서 github로 push 할때 app쪽만 push되어 그런듯 하다.) 프로젝트 폴더의 build.gradle에는 다음의 내용이 들어가 있다.// Top-level build file where you can add configuration options common to all sub-projects/modul.. 2017. 4. 13.
Raspberry Pi 에 Android AOSP 빌드하기 Raspberry Pi의 공식 이미지로는 android 가 존재하지 않는다. 따라서 Raspberry Pi에서 Android 를 이용하기 위해서는 AOSP를 직접 빌드하거나, 아니면 이미 빌드 된 Android 버전을 이용하면 된다. 이미 빌드된 android 중 다음의 RTAndroid 를 이용할 수 있다. (raspberry pi 3 버전만 사용 가능하다) https://rtandroid.embedded.rwth-aachen.de/downloads/raspberry-pi/ 위 버전은 Google Play Store까지 이용 가능한데, 설치에 대한 부분은 다음의 블로그를 참고하면 된다. http://blog.seabow.pe.kr/?p=7278 AOSP 빌드를 위해서는 android 버전의 Raspbe.. 2017. 4. 8.
[android framework] android service framework 안드로이드 서비스 프레임웍은 디바이스 제어, 위치정보 제공, 알람설정 등 시스템의 가장 기본적인 핵심 기능을 구현하기 위한 것이다. 서비스 개발을 위한 클래스들의 집합으로, 기본적으로 제공되는 서비스 등록, 바인더 IPC 등을 이용하여 서비스를 개발하게 해준다. C++과 자바로 이루어져 있으며 다음 그림처럼 자바 서비스 프레임워크와 네이티브 서비스 프레임워크는 JNI 호출을 통해서 재활용된다. 다음의 그림으로 구성된다. 서비스 프레임워크는 4가지 기능을 제공한다.1) 서비스 인터페이스 : 서비스가 제공하는 기능을 함수 형태로 선언, Proxy와 Stub에서 동일한 I/F 로 서비스를 제공하고 사용하는 구조 제공2) 서비스 생성 : 서비스와 서비스 프록시 생성을 지원3) 바인더 IPC 지원 : 바인더 IP.. 2017. 2. 27.
[android framework] 서비스 프레임웍 #2 - 바인더 드라이버 1. 서비스 등록 바인더 드라이버를 이용하는 주체로 보았을때 서비스 등록은 다음의 절차로 진행된다. 바인더 드라이버에서는 다음과 같이 내부에서 binder_proc, binder_buffer, binder_node 구조체를 생성하고 등록, 연결하는 역활을 한다. 1) binder_proc는 IPC 동작에 필요한 다른 구조체를 포인터 형태로 접근할 수 있는 루트 구조체이며, 프로세스당 하나씩 존재하여 이 구조체를 통해 상대편의 프로세스를 찾거나, 해당 프로세스가 가진 IPC데이터 수신 버퍼를 찾는다. 2) binder_buffer구조체를 생성하고 binder_proc구조체에 등록한다. 6) 바인더 드라이버는 컨텍스트 매니저의 binder_node 구조체를 찾고 여기에 연결된 binder_proc를 찾는다... 2017. 2. 26.
[android framework] 서비스 프레임웍 #1 - 바인더 안드로이드에서 프로세스간 RPC를 제공하기 위해서 바인더라는 서비스 프레임웍을 제공한다.리눅스에서 IPC를 위하여 여러 도구를 제공하지만(Messqge Queue, Shared Memory, Pipe, Socket 등) 안드로이드에서는 바인더를 통해서 단순 메시지 전달을 위한 IPC가 아니라 프로세스간의 RPC를 지원하는 것이다. 이를 위해서 커널 공간에서 동작하는 Binder Driver라는 추상화된 드라이버를 이용한다. 다음은 Unix Socket과 바인더의 차이점이다. 바인더 드라이버는 ioctl 시스템 콜을 이용하여 다음 그림과 같이 RPC 데이터를 두 프로세스간에 전달하는 역활을 한다. IPC데이터는 사용하고자 하는 서비스번호(핸들), 호출할 함수명(RPC코드), 함수 인자(RPC Data), .. 2017. 2. 26.