안드로이드 프레임워크 소스 코드를 읽는 방법
이 작업에는 프레임워크 코드에 많은 수정이 필요하기 때문에 AOSP(Android 오픈 소스 프로젝트) 소스 코드에 많은 노력을 기울였습니다. 애플리케이션과 서비스 측 모두 a를 읽고 수정했습니다. 많은 일반적인 클래스를 보고 싶다면 Android 패키지 관리자에서 소스 코드를 다운로드하고 SourceCode 경로를 IDE에 일치시키세요. 하지만 Android 시스템을 깊이 이해하려면 다음을 살펴보세요. 간단한 요약 중 일부 지식 JavaJava는 AOSP 언어 중 하나입니다. 말할 것도 없이 능숙한 Android 앱 개발 Linux Android는 Linux를 기반으로 하며 AOSP의 권장 컴파일 환경은 Ubuntu12입니다. 04. 따라서 Linux 시스템을 능숙하게 사용하고 이해하는 것이 중요합니다. Low-level 코드를 이해하려면 Linux 환경의 기본 프로그램 개발을 이해해야 합니다. 드라이버 계층으로 더 깊이 들어가면, 커널 관련 지식도 있어야 합니다. MakeAOSP는 컴파일을 위해 Make 시스템을 사용합니다. 기본적인 Makefile 작성을 이해하면 거대한 프로젝트 AOSP가 어떻게 빌드되는지 명확하게 이해할 수 있습니다. GitAOSP는 소스 코드 관리를 위해 git repo를 사용합니다. C: 입력 시스템, Chromium 프로젝트(WebView의 기본 구현)와 같이 성능에 민감한 Android 시스템의 일부 모듈과 타사 라이브러리는 AOSP 코드 다운로드가 필요합니다. 원활한 국제 네트워크를 갖추려면 코드를 다운로드하는 단계에서 인내심을 잃으면 AOSP 코드를 볼 인내심이 없습니다. Ubuntu12.04를 실행하는 경우 너무 많은 수정을 하지 않고 소스 코드만 읽으면 실제로는 너무 높은 구성이 필요하지 않습니다. AOSP 프로젝트는 기본적으로 Nexus 시리즈 장치만 지원해도 상관 없습니다. 코드가 없어도 코드를 읽을 수 있습니다. 그러나 훌륭한 전문가가 되는 길을 가고 싶다면 코드를 변경한 다음 고품질 USB 케이블이 필요합니다. 플래싱시 깨져서 더 이상 걱정할게 없습니다. 공식적으로는 Ubuntu 12.04를 권장하지만, OpenJDK를 사용하지 않도록 주의하세요. 설치 :sudoapt-getinstallpython-software-propertiessudoadd-apt-repositoryppa:webupd8team/javasudoapt-getupdatesudoapt-getinstalloracle-java6-installersudoapt-getinstalloracle-java6-set-defaultEclipse 많은 사람들이 왜 이 오래된 골동품에 대해 불평할 것으로 추정됩니다. 사실 이유는 매우 간단합니다. 처음 AOSP 작업을 시작했을 때 가장 효율적인 도구를 찾기 위해 Eclipse, IntelliJIDEA, Vim Ctags, SublimeText Ctags를 사용해 보았습니다. 주요 장점은 다음과 같습니다: 구문 분석(빠르고 정확한 클래스, 메소드 점프(전송)) C 지원(IntelliJ의 C 지원은 너무 느림) DDMS 및 ViewHierarchy와 같은 임베디드 디버깅 도구 효율성을 향상시키기 위해서는 매우 가치가 있습니다. 일반적으로 사용되는 단축키를 외우는 데 5분을 투자하세요. AOSP 프로젝트에 코드가 너무 많기 때문에 C 지원을 추가하지 마세요. 프로젝트의 인덱스 구축 프로세스는 다음과 같습니다.
IntellijIDEA는 앱 개발에 꼭 필요한 기능입니다. 시스템의 특정 기능을 디버깅하려면 빠르게 디버깅 앱을 작성해야 하는 경우가 많습니다. 이때 이전 Eclipse는 사용하기 쉽지 않습니다. xml 자동 완성 기능은 매우 훌륭합니다. 먼저 The shoulders of Giants를 읽어야 합니다. 프로젝트 소개, 코드 다운로드, 환경 설정, 플래싱 방법 및 Eclipse 구성이 모두 여기에 있습니다. 이것은 실제로 앱 개발자를 위한 것입니다. 그러나 그 안에는 많은 내용이 있습니다. 시스템 메커니즘에 대한 소개는 주의 깊게 읽어 볼 가치가 있습니다. Luo Shengyang 씨의 블로그는 매우 영양가가 높으며 기본적으로 AOSP 소스 코드를 읽는 데 도움이 되는 튜토리얼로 사용할 수 있습니다. 필요한 내용을 하나씩 읽으십시오. 그러나 이 블로그 시리즈에는 몇 가지 문제가 있습니다. 초기 블로그는 이전 버전의 Android를 기반으로 하므로 읽을 때 코드 흐름이 많이 추적됩니다. 기사를 읽으려면 보고 있는 것이 전체 시스템의 어디에 있는지 알아야 합니다. Deng Fanping 선생님도 Android 전문가이고 그의 블로그도 매우 영양가가 높지만 Luo Shengyang 선생님의 블로그만큼 체계적이지는 않습니다. 몇 가지 기술적 사항에 대한 심도 있는 논의입니다. Android 공식 문제 목록. 개발 과정에서 몇 가지 이상한 점을 발견했으며, 마침내 여기에 기본적으로 기록되어 있음을 발견했습니다. 누군가가 이를 변경한 것은 또 다른 문제입니다. 이 도구를 능숙하게 사용할 수 있어야 합니다. 많은 양의 관련 지식을 누구도 체계적으로 요약할 수 없습니다. 다른 코드 조직의 AOSP 컴파일 단위는 이에 해당하지 않습니다. -to-one은 git 프로젝트이지만, 모듈 컴파일을 위해 mmm 명령을 잘 활용하면 많은 시간을 절약할 수 있습니다. 바인더는 Android의 가장 기본적인 프로세스 간 통신입니다. 애플리케이션 및 시스템 서비스 AIDL을 사용하는 방법뿐만 아니라 Binder 인터페이스를 직접 작성하는 방법도 알아야 합니다. 이는 Android의 애플리케이션과 시스템 서비스가 상호 작용하는 방식을 이해하는 데 매우 중요합니다. HAL 하드웨어에 특별히 관심이 있거나 솔루션 회사에서 일하고 싶지 않다면 이 레이어에 너무 많은 시간을 투자하지 마세요. CyanogenMod는 AOSP를 기반으로 하는 타사 Rom입니다. 예를 들어 Nexus 이외의 장치를 지원하는 방법 DIA는 XDA가 읽은 코드를 정리하는 데 도움이 되는 도구입니다. 최신 정보와 최신 정보는 여기에 있습니다. 생각나는 대로 추가하겠습니다.