2010-11-01 23 views
7

Tôi có mã nguồn Android trong hệ thống của mình và nó hoạt động tốt. Nhưng khi tôi thực hiện một số thay đổi trong tệp nguồn Android và chạy "make", nó không tạo/cập nhật bất kỳ tệp nào Vui lòng sửa tôi nếu tôi sai,Cách tạo lại mã nguồn Android sau khi thực hiện thay đổi trong các tệp nguồn Android

i) hệ thống sẽ tạo tệp system.img mới nếu thay đổi đã được thực hiện cho mã nguồn của nó

ii) tập tin zImage kernel android tập tin không thay đổi với bất kỳ sự thay đổi ngay cả khi chúng tôi thực hiện bất kỳ thay đổi mã nguồn

câu hỏi khác nếu tôi tạo một thư mục thư viện mới bên trong/libcore nó được tự động chọn khi biên dịch. Để tạo thư mục thư viện mới bên ngoài/libcore, tôi đã thêm đường dẫn của nó trong tệp /build/core/main.mk và .classpath. Tuy nhiên nó không nhận được nhặt trong quá trình biên dịch. Ai đó có thể vui lòng xác nhận nơi mà tất cả chúng ta phải thực hiện thay đổi để thêm một tập tin thư viện mới bên ngoài/libcore

Kính trọng, Yogesh

+0

Không bao giờ có vấn đề này, có lẽ bởi vì tôi sử dụng Motodev Studio của Android (full nhật thực cài đặt bằng các plugin) http://developer.motorola.com/docstools/motodevstudio/download/ Bạn đang sử dụng cái gì? – Jim

+2

Tôi không có ý định xây dựng một ứng dụng cho android thay vì tôi muốn thực hiện một số thay đổi trong tệp được tích hợp sẵn Android và biên dịch lại nguồn để có thể gửi tới trình mô phỏng, trên tất cả các ứng dụng có thể chạy. – JoshMachine

+0

@JoshMachine Tôi cũng gặp vấn đề tương tự. Tôi đã thêm một số bản ghi trong các tệp nguồn và đã tạo một bản ghi. Bạn giải quyết vấn đề của mình như thế nào? –

Trả lời

10

này phụ thuộc vào kho lưu trữ chính xác mà bạn đã kiểm tra ra. Nhưng đối với phần lớn trong số họ các công thức sau đây sẽ làm việc:

http://source.android.com/source/download.html

Lưu ý, nếu bạn đang sử dụng xây dựng gần đây nhất bạn phải có hệ thống 64-bit

UPDATE: Đối với một số lý do mà trang ở trên là thiếu một số bước quan trọng. Vì vậy, ở đây họ là

Sau khi bạn thực hiện 'repo sync' bước (mất một thời gian, nhưng tôi cho rằng bạn đã làm kể từ khi bạn có các file nguồn), làm như sau:

$ . build/envsetup.sh 
$ lunch 

Lệnh cuối cùng sẽ cung cấp cho bạn danh sách các tùy chọn cho nền tảng bạn muốn xây dựng. Nếu bạn muốn xây dựng cho trình giả lập, hãy chọn full-eng. Nếu không, hãy chọn một cho nhà cung cấp thiết bị cụ thể của bạn.

Sau khi chọn nền tảng, hãy đảm bảo bạn thực hiện đầy đủ mọi thứ trước tiên, vì toàn bộ nền tảng Android rất phụ thuộc lẫn nhau. Vì vậy, bạn cần phải chắc chắn rằng bạn có tất cả các thành phần.

Khi phát triển, bạn có thể tạo các thành phần riêng lẻ khá nhanh. Bằng cách sử dụng lệnh sau:

mmm <component_directory_name> 

Ví dụ:

mmm external/rsync 

Ngoài ra, xây dựng hệ thống không thay đổi đưa sản lượng và các tập tin trung gian với mã nguồn. Tất cả mọi thứ đi vào thư mục ra/mục tiêu.

+0

Xin chào Vlad, vì vậy nếu tôi thực hiện một số thay đổi trong tệp nguồn. cho phép nói rằng tôi thêm một số bản ghi và sau đó thực hiện một, sẽ những hình ảnh mới trong ra/mục tiêu/sản phẩm có được những thay đổi? –

+0

Xin lỗi, tôi chưa tạo các bản dựng android giống như vậy theo độ tuổi. Đối với các phiên bản cũ hơn, không có hình ảnh nào sẽ không thay đổi bạn phải xây dựng lại toàn bộ để có được hình ảnh mới. Không biết nền tảng Android mới làm gì trong trường hợp này. – Vlad

+0

Tôi đã thực hiện một số thay đổi một tệp AndroidManifest.xml và biên dịch ứng dụng đó qua mm-B, nhưng sau khi mở lại tệp đó, các thay đổi của tôi đã biến mất! –

4

Tùy thuộc vào thay đổi bạn muốn thực hiện.

Trong một trường hợp dễ dàng, nếu việc thay đổi là địa phương (ví dụ, thêm một số dây chuyền mới vào một file nguồn android hiện gọi xxx.c), bạn có thể dễ dàng chạy:

mm -B (under the root directory of xxx.c) 
adb remount 
adb sync 
adb reboot 

Trong trường hợp khác, chẳng hạn, bạn tạo một dịch vụ hệ thống mới để thay thế dịch vụ hệ thống cũ được khởi động lúc khởi động như được hiển thị trong tập tin init.rc.Sau đó, bạn có thể cần phải:

  1. Cập nhật init.rc tập tin
  2. Xây dựng toàn bộ nguồn android
  3. flash hình ảnh mới
+1

một 'adb root' có lẽ là cần thiết, mà adb remount hoạt động. 'adb root' và' adb remount' chỉ khả dụng trên người dùng gỡ lỗi và xây dựng eng của android –

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