Tuesday, November 24, 2015

Android Build System

Android Build System là một bộ công cụ dùng để build, test, run, và đóng gói chương trình. Có thể được tích hợp vào AndroidStudio hoặc chạy command line. Các tính năng chính:

  • Tuỳ chỉnh, cấu hình, mở rộng quy trình build
  • Tạo ra nhiều file apk với những tính năng khác nhau sử của cùng một project và các module giống nhau
  • Sử dụng lại code và tài nguyên thông qua các bộ nguồn
Tất cả các tình năng trên có thể đạt được mà không cần thay đổi mã nguồn chương trình.

Chi tiết quy trình build.

Có rất nhiều công cụ và quá trình trong khi build được mô tả trong hình dưới đây
Nhìn chung quá trình này sẽ tổng hợp tất cả tài nguyên từ những cấu hình product flavor, build type, dependency. Nếu những thư mục khác nhau chứa những tài nguyên cùng tên hoặc cấu hình thì sẽ được ghi đề theo thứ tự ưu tiên: dependency ghi đè build type, build type ghi đề product flavor, product flavor ghi đè main source. 
  • Android asset packaging tool (aapt) sẽ nhận các file tài nguyên như AndroidManifest.xml và các file XML dùng trong các Activity sau đó compile chúng. Cung cấp file R.java cho phép bạn truy cập vào các file tài nguyên trong code java.
  • Công cụ aidl chuyển tất cả các interface .aidl sang java interface.
  • Tât cả code java bao gồm R.java và .aidl được java compiler compile thành file class
  • Công cụ dex sẽ chuyển file class sang Dalvik byte code. Tất cả file class của các thư viện bên thứ 3 và các file class được include trong module build sẽ được chuyển thành .dex
  • Tất cả các tài nguyền không được compile (hình ảnh), được compile và file .dex được gửi tới cho công cụ apkbuilder để đóng gói thành file .apk.
  • Sau khi đã có file apk, nó phải được sign với key debug hoặc release trước khi cài lên các thiết bị
  • Cuối cùng nếu file apk được sign với key release bạn phải căn chỉnh file .apk với công cụ zip align. Việc này sẽ giảm bộ nhớ sử dụng của ứng dụng khi chạy trên các thiết bị.

Build output

Quá trình build sẽ tạo ra file apk cho mỗi biến thể trong thư mục app/build. Thư mục app/buid/outputs/apk chứa các gói app-<flavor>-<buildtype>.apk ví dụ app-full-release.apk hoặc app-demo-debug.apk.


No comments:

Post a Comment