2012-01-28 30 views
48

Tôi đã tải xuống mã nguồn Android. Và tôi muốn thực hiện một số sửa đổi đối với mã nguồn để nhúng một số chức năng hiện không tồn tại. Nhưng vấn đề ở đây là tôi không thể hiểu cách mã nguồn được tổ chức, loại tệp nào có thể tìm thấy ở đâu. Vì vậy, nếu ai đó có thể giúp tôi hiểu rằng nó sẽ thực sự hữu ích.Làm thế nào để hiểu cấu trúc thư mục của cây gốc android?

+2

Cũng có thể tham khảo liên kết sau: https://groups.google.com/forum/?fromgroups=#!topic/android-platform/QhrA3RayT-U –

+2

Bạn có thể tham khảo [Mô tả mã nguồn Android] (http: //elinux.org/Android-4.1.1_r4) trên eLinux, dựa trên Android-4.1.1-r4. Nó giải thích những gì có trong các thư mục. Ngoài ra, [Tổng quan về mã nguồn Android] (http://www.netmite.com/android/mydroid/development/pdk/docs/intro_source_code.html) – zhibin

Trả lời

130

Đây là phiên bản ngắn gọn về những gì bạn sẽ tìm thấy khi tải xuống nguồn Android. Tôi sẽ để lại một số thư mục nhỏ và đào sâu hơn vào một vài thư mục quan trọng. Về cơ bản những gì bạn sẽ nhận được (dựa trên bản phát hành Ice Cream Sandwich hiện tại), theo thứ tự chữ cái:

  • Bionic - C-runtime cho Android. Lưu ý rằng Android không sử dụng glibc như hầu hết các bản phân phối Linux. Thay vào đó, thư viện c được gọi là bionic và dựa chủ yếu vào các nguồn có nguồn gốc BSD. Trong thư mục này, bạn sẽ tìm thấy nguồn cho thư viện c, toán học và các thư viện thời gian chạy lõi khác.
  • Có thể khởi động - khởi động và khởi động mã liên quan. Một số của nó là di sản, các thông tin giao thức fastboot có thể là thú vị vì nó được thực hiện bởi bộ nạp khởi động trong một số thiết bị như Nexus.
  • Xây dựng - triển khai hệ thống xây dựng bao gồm tất cả các mẫu tệp tạo lõi. Một tệp quan trọng ở đây là tập lệnh envsetup.sh sẽ giúp bạn rất nhiều khi làm việc với nguồn nền tảng. Chạy tập lệnh này trong một trình bao sẽ cho phép các lệnh thiết lập các biến môi trường, xây dựng các mô-đun cụ thể và grep trong các tệp mã nguồn.
  • Cts - kiểm tra tính tương thích. Bộ thử nghiệm để đảm bảo rằng bản dựng tuân thủ đặc điểm kỹ thuật của Android.
  • Dalvik - mã nguồn để triển khai Máy ảo Dalvik
  • Phát triển - các dự án liên quan đến phát triển như mã nguồn cho công cụ sdk và ndk. Thông thường không phải là thư mục bạn chạm vào khi làm việc với nền tảng cho mục tiêu.
  • Thiết bị - mã sản phẩm cụ thể cho các thiết bị khác nhau. Đây là nơi để tìm các mô-đun phần cứng cho các thiết bị Nexus khác nhau, tạo cấu hình và hơn thế nữa.
  • Bên ngoài - chứa mã nguồn cho tất cả các dự án nguồn mở bên ngoài như SQLite, Freetype và webkit.
  • Khung - thư mục này rất cần thiết cho Android vì nó chứa các nguồn cho khung. Ở đây bạn sẽ tìm thấy việc thực hiện các dịch vụ chính như System Server với các trình quản lý Gói và Hoạt động. Rất nhiều ánh xạ giữa các API ứng dụng java và các thư viện gốc cũng được thực hiện ở đây.
  • Mã nguồn phần cứng liên quan đến phần cứng chẳng hạn như thông số và triển khai lớp trừu tượng phần cứng Android. Thư mục này cũng chứa lớp giao diện radio tham chiếu (để giao tiếp với phía modem).
  • libcore - Apache Harmony.
  • libnativehelper - Các chức năng trợ giúp để sử dụng với JNI.
  • (Kernel) - không phải là một phần của tải xuống nguồn mặc định nhưng bạn có thể truy cập vào mã này bằng cách tải xuống theo cách thủ công hoặc bằng cách thêm kho lưu trữ vào công cụ repo. Chứa các nguồn cho phiên bản Android của hạt nhân Linux.
  • Out - đầu ra xây dựng sẽ được đặt ở đây sau khi bạn thực hiện. Cấu trúc thư mục nằm ngoài/target/product /. Trong bản dựng mặc định cho trình mô phỏng, đầu ra sẽ được đặt trong/ra/mục tiêu/sản phẩm chung. Đây là nơi bạn sẽ tìm thấy những hình ảnh được sử dụng bởi trình mô phỏng để bắt đầu (hoặc được tải xuống và được flash vào một thiết bị nếu bạn đang xây dựng cho một mục tiêu phần cứng).
  • Gói - chứa mã nguồn cho các ứng dụng mặc định như danh bạ, lịch, trình duyệt.
  • Được dựng sẵn - chứa các tệp được phân phối dưới dạng nhị phân để thuận tiện. Ví dụ bao gồm các công cụ biên dịch chéo cho các máy phát triển khác nhau.
  • Hệ thống - tệp mã nguồn cho hệ thống Android lõi. Đó là hệ thống Linux tối thiểu được khởi động trước khi VM Dalvik và bất kỳ dịch vụ dựa trên java nào được kích hoạt. Điều này bao gồm mã nguồn cho quá trình init và tập lệnh init.rc mặc định cung cấp cấu hình động của nền tảng Công cụ
  • - Các công cụ IDE khác nhau.

Ngoài ra, bạn cũng có thư mục .repo ẩn chứa nguồn cho tiện ích repo. Nó cũng chứa tệp kê khai xác định kho lưu trữ git nào bạn muốn theo dõi cho dự án nguồn Android này. Nếu bạn có các bổ sung của riêng mình, bạn có thể tự động theo dõi chúng bằng cách thêm tệp kê khai cục bộ tại đây.

Để sửa đổi khung nền tảng, có một số hướng dẫn có sẵn trong thư mục thiết bị/mẫu của cây mã nguồn. Điều đó sẽ cho bạn thấy cách thêm API vào Android mà không phải sửa đổi khung chính.

+0

Tại sao thư mục Kernel không phải là một phần của mã nguồn mặc định? – Vins

+0

Câu trả lời xuất sắc, tôi cũng thấy một vài thư mục khác: abi, nghệ thuật, buildcache, nhà phát triển, tài liệu, libcore, libnativehelper, ndk, sdk, công cụ, nhà cung cấp. Vui lòng giải thích. Tôi sẽ cố gắng giải thích một vài điều tôi đoán. buildcache: một cái gì đó để tối ưu hóa xây dựng? nhà phát triển: trông giống như các mẫu cho deveopers. tài liệu: tài liệu. ndk: một công cụ để viết ứng dụng Android một phần trong C/C++ (https://developer.android.com/tools/sdk/ndk/index.html). vendor: các ứng dụng mặc định của các nhà cung cấp như Facebook. Vui lòng sửa. – lindenrovio

+0

Ngoài ra nó sẽ được tốt đẹp nếu có một tổng quan về các thư mục con trong khuôn khổ. – lindenrovio

Các vấn đề liên quan