Tăng tốc build Android source code với CCache trên Ubuntu

Build Android framework là một công việc khá buồn tẻ, thời gian để hoàn thành một bản clean build là khoảng 4 tiếng (trên laptop của tôi). Thử tưởng tượng bạn có thể tiết kiệm được bao nhiêu thời gian nếu mỗi lần thay đổi code, bấm build và nháy mắt một cái, đoạn code bạn vừa sửa đang chạy trên thiết bị?

Chém gió đấy, sử dụng CCache không tiết kiệm được từng đó thời gian. Nhưng giảm được khoảng 1/4 đến 1/3 thời gian cũng là đáng rồi, phải không?

1. CCache là gì?

CCache là viết tắt của Compiler Cache.

CCache sẽ lưu lại các file C/C++ đã được compile, để những lần build sau, build system sẽ không cần phải compile lại những file đó nữa. Trong hầu hết các trường hợp, file C/C++ sẽ không thay đổi, nếu bạn chỉ sửa phần code Java.

Và khi không phải compile lại phần lớn các file C/C++, chúng ta sẽ tiết kiệm được khơ khớ thời gian build.

2. Tiết kiệm được khoảng bao nhiêu thời gian?

Theo cấu hình máy của mình (core i7 7500U, DDR4 8G, Ubuntu 16.04) thì thời gian build sẽ giảm được khoảng 1/3 so với clean build.

3. Làm như thế nào để enable CCache?

File thực thi của CCache nằm ở <working_dir>/prebuilts/misc/linux-x86/ccache/ccache

Chú ý: File thực thi của CCache trên Linux khác với file thực thi của CCache trên OSX.

prebuilts/misc/darwin-x86/ccach/ccache

Để sử dụng CCache, trước tiên bạn cần khởi tạo max size cho cache file. Ta chỉ cần chạy lệnh này một lần, trước khi build. Dung lượng đề nghị ở khoảng 50 – 100G. Ở đây, tôi sử dụng 30G.

<working_dir>/prebuilts/misc/linux-x86/ccache/ccache -M 30G

Sau đó, cần phải set biến môi trường  để build system của AOSP biết rằng  CCache đã được enable.

export USE_CCACHE=1

Địa điểm mặc định của cache file sẽ là /data/.ccache Ta có thể chuyển cache file sang nơi khác:

export CCACHE_DIR=<your_desire_path>/.ccache

Để theo dõi CCache đang được sử dụng khi ta build, ta chạy lệnh watch ở một cửa sổ terminal khác.

watch -n1 -d <working_dir>/prebuilts/misc/linux-x86/ccache/ccache -s

Nếu sau khi flash bản build, bạn gặp phải những lỗi lạ và bạn muốn clear cache để build lại một bản build clean:

make clean

<working_dir>/prebuilts/misc/linux-x86/ccache/ccache -C

Sau đó bạn có thể make lại như bình thường.

4. Giải thích một số parameter được sử dụng với CCache

-M <size> #init max size của cache

-s #xem số liệu thống kê của cache file: số lượng file, tổng size...

-C #clear cache

Leave a Reply

Your email address will not be published. Required fields are marked *