Sihyeon Kim
A simple yet classy theme for your Jekyll website or blog
-
안드로이드 서비스 개요
안드로이드 서비스 주기적으로 특정한 일을 수행하는 백그라운드 프로세스 단말의 위치 알아내거나 센서 값을 읽어오는 등 안드로이드에서 기본적으로 서비스 형태로 제공한다. 안드로이드 서비스 분류 안드로이드 서비스 시스템 서비스 : 프레임워크에서 기본적으로 제공 자바 시스템 서비스 코어 플랫폼 서비스 하드웨어 서비스 네이티브 시스템 서비스 애플리케이션 서비스 : Service 클래스를 상속해서 구현 안드로이드...
-
정리
from init process(c/c++) to zygote(java) init.c parse_config_file(“/init.rc”); action_for_each_trigger(“boot”, action_add_queue_tail); drain_action_queue(); do_class_start() service_for_each_class(args[1], service_start_if_not_disabled); service_start(svc); fork() execve(“/system/bin/app_process”, , ) app_main.cpp AppRuntime runtime runtime.start(“com.android.internal.os.ZygoteInit”, startSystemServer); JNI_CreateJavaVM() FindClass(ClassName) GetStaticMethodID() CallStaticVoidMethod() ZygoteInit.java main() https://gist.github.com/sihyeon-kim/48b61f572460f0abbdeb36770886dcfe.js https://gist.github.com/48b61f572460f0abbdeb36770886dcfe.git https://gist.github.com/sihyeon-kim/48b61f572460f0abbdeb36770886dcfe git@gist.github.com:48b61f572460f0abbdeb36770886dcfe.git git@gist.github.com:48b61f572460f0abbdeb36770886dcfe.git
-
Zygote (3) ZygoteInit 클래스의 기능
최종 수정일 : 2019-04-03 ZygoteInit 클래스의 기능 (1) 새로운 Android 애플리케이션의 실행 요청을 받기 위한 소켓 바인딩 registerZygoteSocket() UDS(Unix Domain Socket)을 사용하여 애플리케이션 실행을 위한 요청을 수신한다. init 프로세스가 init.rc 파일에서 app_process를 실행할 때 /dev/zygote로 등록한 socket을 사용한다. (2) Android Application Framework에서 사용할 클래스들과 리소스의 로딩 preloadClasses() preloadResources() 애플리케이션 프레임워크에...
-
Zygote (2) app_process로부터 ZygoteInit class 실행
최종 수정일 : 2019-04-03 Zygote가 실행되는 과정을 실제 코드를 통해 확인 app_process로부터 ZygoteInit class 실행 app_process : 달빅 가상 머신 생성 -> 가상 머신 위에 ZygoteInit 클래스를 로딩하고 실행 (1) init 프로세스가 app_process 실행 // android froyo // system/core/rootdir/init.rc 중 service zygote service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server socket...
-
JNI와 NDK (6) 안드로이드 NDK로 개발하기
최종 수정일 : 2019-04-03 안드로이드 NDK로 개발하기 안드로이드 NDK(Native Development Kit) : JNI를 활용한 작업을 쉽게 할 수 있도록 구글에서 제공하는 개발 도구 C/C++ 소스를 네이티브 라이브러리로 빌드하기 위한 도구(컴파일러, 링커 등) 제공 빌드된 네이티브 라이브러리를 안드로이드 패키지 파일(.apk)에 삽입 네이티브 라이브러리 작성 시 안드로이드 플랫폼에서 지원 가능한 시스템 헤더...