- vừa được xem lúc

Sự khác nhau giữa compileSdkVersion và targetSdkVersion

0 0 54

Người đăng: Nguyen Huu Cong

Theo Viblo Asia

Trong bài viết này, ta cùng tìm hiểu kĩ hơn về compileSdkVersiontargetSdkVersion trong file build.gradle nhé.

Thông thường chúng ta sẽ cập nhật cả 2 giá trị API level này khi có phiên bản mới của Android SDK được phát hành. Nhưng tại sao việc này lại quan trọng? và tại sao lại có 2 giá trị này mặc dù chúng ta thường thiết lập cho chúng cùng một giá trị?

Cả compileSdkVersiontargetSdkVersion đều rất quan trọng để xử lý khả năng tương thích trong Android, do vậy cả hai đều được kết nối với những thứ cần thực hiện khi có phiên bản Android SDK mới. Nhưng chúng hoạt động như thế nào?

compileSdkVersion

compileSdkVersion xác định phiên bản Android SDK nào sẽ được gradle sử dụng để biên dịch ứng dụng.

Ví dụ:

Trong Android 12, phiên bản Android SDK là 31, đã có một API mới được cung cấp, cho phép chúng ta dễ dàng triển khai một Splash Screen. Trong API mới này, Splash Screen có thể được tùy chỉnh bằng cách sử dụng các thuộc tính:

Nếu ta muốn sử dụng API này trong ứng dụng thì chúng ta phải thực hiện:

  • download SDK phiên bản 31 trong Android Studio
  • cập nhật compileSdkVersion thành 31 trong file gradle

Với những device cũ thì sao?

Tất nhiên khi ta đã thực hiện những điều trên thì không có nghĩa là ta chỉ có thể sử dụng API mới này và quên đi những user có phiên bản Android cũ hơn mà API này không khả dụng.

Nếu minSdkVersion được thiết lập thấp hơn 31, ta phải cung cấp một cách thay thế để hiển thị Splash Screen cho những đời máy cũ hơn không có quyền truy cập vào API mới này.

Tương tự, một số phương thức hoặc thuộc tính có thể sẽ bị deprecated (không được dùng nữa) trong phiên bản Android SDK này và một số phương pháp hoặc thuộc tính thậm chí còn bị xóa luôn. Đó là lý do tại sao khi ta cập nhật compileSdkVersion, ta sẽ thường thấy một số warning và error trong quá trình biên dịch mà ta phải giải quyết.

Nhưng chỉ thay đổi compileSdkVersion thì sẽ không thực sự thay đổi hành vi của ứng dụng. Vậy làm cách nào để hệ thống Android biết được liệu nó có thể sử dụng các chức năng mới với ứng dụng của ta hay không? Đó là lúc targetSdkVersion phát huy tác dụng.

targetSdkVersion

targetSdkVersion xác định cho hệ thống biết phiên bản Android mà ứng dụng đã được thiết kế và kiểm thử.

Nếu người dùng chạy ứng dụng trên thiết bị có phiên bản Android cao hơn targetSdkVersion được xác định, đối với các tính năng android mới, hệ thống có thể đưa ra một số hành vi tương thích ngược để đảm bảo ứng dụng vẫn hoạt động theo cách mà ta đã thiết kế ra nó.

Ví dụ:

Trong Android 12, giao diện của các custom notification đã được thay đổi. Trước đây ta có thể sử dụng toàn bộ khu vực thông báo, nhưng trong Android 12 áp dụng template tiêu chuẩn cho tất cả các custom notification để chúng trông nhất quán hơn.

Nếu targetSdkVersion được thiết lập dưới 31, hệ thống sẽ cho rằng ta chưa test tính năng đó và sẽ hiển thị thông báo theo cách cũ để giảm thiểu nguy cơ thông báo không được hiển thị đúng cách. Chỉ sau khi ta cập nhật targetSdkVersion lên 31, giao diện notification mới sẽ được sử dụng.

Mối quan hệ giữa compile và target SDK version

Ta thấy compileSdkVersiontargetSdkVersion có ý nghĩa hoàn toàn khác nhau,nhưng chúng rõ ràng là không độc lập, mà liên quan đến nhau.

targetSdkVersion không thể cao hơn compileSdkVersion, đơn giản vì chúng ta không thể nhắm được những thứ mà chúng ta không biết gì trong quá trình biên dịch.

Lý tưởng nhất, compileSdkVersiontargetSdkVersion phải bằng nhau và cả hai đều trỏ đến SDK mới nhất. Nhưng tất nhiên chỉ sau khi ta đã test thì những sự thay đổi được giới thiệu trong phiên bản đó mới hoạt động trơn tru được!

Source

Bài viết được dịch từ https://proandroiddev.com/compilesdkversion-and-targetsdkversion-what-is-the-difference-b4227c663ba8

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 1: Làm quen cô nàng Flutter

Lời mở đầu. Gần đây, Flutter nổi lên và được Google PR như một xu thế của lập trình di động vậy.

0 0 281

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 3: Lột trần cô nàng Flutter, BuildContext là gì?

Lời mở đầu. Màn làm quen cô nàng FLutter ở Phần 1 đã gieo rắc vào đầu chúng ta quá nhiều điều bí ẩn về nàng Flutter.

0 0 206

- vừa được xem lúc

[Android] Hiển thị Activity trên màn hình khóa - Show Activity over lock screen

Xin chào các bạn, Hôm nay là 30 tết rồi, ngồi ngắm trời chờ đón giao thừa, trong lúc rảnh rỗi mình quyết định ngồi viết bài sau 1 thời gian vắng bóng. .

0 0 107

- vừa được xem lúc

Tìm hiểu Proguard trong Android

1. Proguard là gì . Cụ thể nó giúp ứng dụng của chúng ta:. .

0 0 100

- vừa được xem lúc

Làm ứng dụng học toán đơn giản với React Native - Phần 6

Chào các bạn một năm mới an khang thịnh vượng, dồi dào sức khỏe. Lại là mình đây Đây là link app mà các bạn đang theo dõi :3 https://play.google.com/store/apps/details?id=com.

0 0 68

- vừa được xem lúc

20 Plugin hữu ích cho Android Studio

1. CodeGlance. Plugin này sẽ nhúng một minimap vào editor cùng với thanh cuộn cũng khá là lớn. Nó sẽ giúp chúng ta xem trước bộ khung của code và cho phép điều hướng đến đoạn code mà ta mong muốn một cách nhanh chóng.

0 0 315