Công thức là
minSdkVersion <= targetSdkVersion <= compileSdkVersion
minSdkVersion - là một điểm đánh dấu xác định phiên bản Android tối thiểu mà ứng dụng sẽ có thể cài đặt. Ngoài ra, nó được Lint sử dụng để ngăn chặn việc gọi API không tồn tại. Ngoài ra, nó có tác động đến thời gian xây dựng. Vì vậy, bạn có thể sử dụng các hương vị xây dựng để ghi đè minSdkVersion đến mức tối đa trong quá trình phát triển. Nó sẽ giúp xây dựng nhanh hơn bằng cách sử dụng tất cả các cải tiến mà nhóm Android cung cấp cho chúng tôi. Ví dụ, một số tính năng Java 8 chỉ có sẵn từ phiên bản cụ thể của minSdkVersion.
targetSdkVersion - cho biết hệ thống Android sẽ bật các thay đổi hành vi cụ thể.
Ví dụ:
Bắt đầu từ Android 6.0 (API cấp 23) Runtime Permissions
đã được giới thiệu. Nếu bạn đặt targetSdkVersion
thành 22 hoặc thấp hơn, ứng dụng của bạn không yêu cầu người dùng cho phép một số thời gian chạy.
Bắt đầu từ Android 8.0 (API cấp 26), tất cả notifications
phải được gán cho một kênh nếu không nó sẽ không xuất hiện. Trên các thiết bị chạy Android 7.1 (API cấp 25) trở xuống, người dùng chỉ có thể quản lý thông báo trên cơ sở mỗi ứng dụng (mỗi ứng dụng chỉ có một kênh trên Android 7.1 trở xuống).
Bắt đầu từ Android 9 (API cấp 28), Web-based data directories separated by process
. Nếu targetSdkVersion
là 28+ và bạn tạo một số WebView
trong các quy trình khác nhau, bạn sẽ nhận đượcjava.lang.RuntimeException
compileSdkVersion - thực sự là phiên bản SDK Platform và cho Gradle biết SDK Android nào sẽ sử dụng để biên dịch. Khi bạn muốn sử dụng các tính năng mới hoặc .java
các tệp gỡ lỗi từ SDK Android, bạn nên chăm sóc compileSdkVersion. Một ví dụ nữa là sử dụng AndroidX buộc phải sử dụng compileSdkVersion
- cấp 28. compileSdkVersion
không được bao gồm trong APK của bạn : nó hoàn toàn được sử dụng tại compile time
. Thay đổi compileSdkVersion của bạn không thay đổi hành vi thời gian chạy. Nó có thể tạo ra các cảnh báo / lỗi trình biên dịch mới. Do đó, chúng tôi khuyên bạn luôn luôn biên dịch với SDK mới nhất. Bạn sẽ nhận được tất cả các lợi ích của kiểm tra biên dịch mới trên mã hiện có, tránh các API mới không dùng nữa và sẵn sàng sử dụng các API mới. Một sự thật nữa làcompileSdkVersion >= Support Library version
Bạn có thể đọc thêm về nó ở đây . Ngoài ra tôi sẽ khuyên bạn nên xem ví dụ về việc di chuyển sang Android 8.0.