AndroidX là gì?


255

Tôi đang đọc về một thư viện phòng của Android. Tôi thấy họ đổi gói androidthành androidx. Tôi không hiểu điều đó. Ai đó có thể giải thích?

implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"

Ngay cả điều này có sẵn với các androidgói cũng.

implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version"
  • Những gì cần thiết để đóng gói thư viện hỗ trợ mới androidxthay vì android?
  • Trường hợp sử dụng và các yếu tố ảnh hưởng trong các dự án hiện có.

4
Đọc developer.android.com/topic/lologists/support-l Library / . androidx.*là hệ thống phân cấp gói cho các thư viện hỗ trợ. Tất cả chúng sẽ xuất hiện cùng một gói khi chúng ta đến thời đại androidx(Giống như các thành phần kiến ​​trúc, các thư viện hỗ trợ khác).
ADM

3
Những gì bạn đã không hiểu chính xác? Tại sao họ thay đổi gói?
Rohit5k2

@ADM tại sao họ chuyển sang androidxgói từ CORE android.
Khemraj

2
Họ chỉ thiết kế lại cấu trúc gói vì đơn giản. Điều này cũng đã được thông báo trong IO 2018 nếu bạn muốn có một cái nhìn. Thx
ADM

Câu trả lời:


334

AndroidX - Thư viện tiện ích mở rộng Android

Từ tài liệu AndroidX

Chúng tôi đang triển khai cấu trúc gói mới để làm rõ hơn gói nào được gói cùng với hệ điều hành Android và gói nào được đóng gói với APK của ứng dụng của bạn. Sắp tới, hệ thống phân cấp gói android. * Sẽ được dành riêng cho các gói Android đi kèm với hệ điều hành. Các gói khác sẽ được phát hành trong hệ thống phân cấp gói androidx. * Mới như một phần của thư viện AndroidX.

Cần AndroidX

AndroidX là một thư viện được thiết kế lại để làm cho tên gói rõ ràng hơn. Vì vậy, từ bây giờ hệ thống phân cấp Android sẽ chỉ dành cho các lớp mặc định của Android, đi kèm với hệ điều hành Android và các thư viện / phụ thuộc khác sẽ là một phần của androidx (có ý nghĩa hơn). Vì vậy, từ bây giờ tất cả các phát triển mới sẽ được cập nhật trong androidx.

com.android.support. **: androidx.
com.android.support:appcompat-v7: androidx.appcompat: appcompat com.android.support:recyclerview-v7: androidx.recyclerview: recyclerview com.android.support:design: com.google.android.material: tài liệu

Hoàn thành ánh xạ Artifact cho các gói AndroidX

AndroidX sử dụng phiên bản Semantic

Trước đây, đã support librarysử dụng phiên bản SDK nhưng AndroidX sử dụng Semantic-version. Nó sẽ trở lại phiên bản từ 28.0.0 → 1.0.0.

Làm thế nào để di chuyển dự án hiện tại

Trong Android Studio 3.2 (tháng 9 năm 2018), có một tùy chọn trực tiếp để di chuyển dự án hiện có sang AndroidX. Điều này tái cấu trúc tất cả các gói tự động.

Trước khi bạn di chuyển, chúng tôi khuyên bạn nên sao lưu dự án của mình.

Dự án hiện có

  • Android Studio> Menu Refactor> Di chuyển sang AndroidX ...
  • Nó sẽ phân tích và sẽ mở cửa sổ khúc xạ ở phía dưới. Chấp nhận thay đổi để được thực hiện.

hình ảnh

Dự án mới

Đặt những lá cờ này trong của bạn gradle.properties

android.enableJetifier=true
android.useAndroidX=true

Kiểm tra ánh xạ thư viện @ cho gói AndroidX bằng nhau .

Kiểm tra @ Trang chính thức của Di chuyển sang AndroidX

Máy bay phản lực là gì?

Lỗi di cư

  • Nếu bạn xây dựng ứng dụng và tìm thấy một số lỗi sau khi di chuyển, thì bạn cần sửa những lỗi nhỏ đó. Bạn sẽ không bị kẹt ở đó, bởi vì điều đó có thể dễ dàng sửa chữa.
  • Thư viện của bên thứ 3 không được chuyển đổi sang AndroidX trong thư mục, nhưng chúng được chuyển đổi vào thời gian chạy bởi Jetifier , vì vậy đừng lo lắng về lỗi biên dịch thời gian, ứng dụng của bạn sẽ chạy hoàn hảo.

Hỗ trợ 28.0.0 là bản phát hành cuối cùng?

Từ bản sửa đổi hỗ trợ Android 28.0.0

Đây sẽ là bản phát hành tính năng cuối cùng trong bao bì android.support và các nhà phát triển được khuyến khích chuyển sang AndroidX 1.0.0

Vì vậy, hãy đi với AndroidX, vì Android sẽ chỉ cập nhật gói androidx kể từ bây giờ.

Đọc thêm

https://developer.android.com/topic/lologists/support-l Library / androidx-overview

https://android-developers.googleblog.com/2018/05/hello-world-androidx.html


2
@androidmalin Rất vui khi được nghe từ bạn - thông tin này đã giúp bạn :)
Khemraj

Trong trường hợp nào bạn có thể / nên đặt enableJetifier thành false?
Đánh dấu

1
@Mark enableJetifier=falselà giá trị mặc định. Đó là sai khi bạn không đặt nó. Điều đó có nghĩa là không có thư viện nào của bạn sẽ được viết lại cho AndroidX.
Khemraj

4
Việc di chuyển của studio android hoạt động kém. tôi đã phải tự sửa hàng trăm tệp ... tôi dành nhiều thời gian hơn để sửa mã do thay đổi công cụ của Google hơn là thực sự lập trình mã có vấn đề ... thở dài
LearningPath

1
Bây giờ (3.3) được gọi làMigrate to AndroidX
Dale

32

Dựa trên tài liệu :

androidx là cấu trúc gói mới để làm rõ hơn gói nào được gói cùng với hệ điều hành Android và gói nào được đóng gói với APK của ứng dụng của bạn. Sắp tới, hệ thống phân cấp gói android. * Sẽ được dành riêng cho các gói Android đi kèm với hệ điều hành; các gói khác sẽ được phát hành trong hệ thống phân cấp gói androidx. * mới.

Cấu trúc gói được thiết kế lại là để khuyến khích các thư viện nhỏ hơn và tập trung hơn. Bạn tìm thấy chi tiết liên quan đến các ánh xạ tạo tác ở đây .

Có các thư viện hỗ trợ (chứa thành phần và gói để tương thích ngược) có tên là "v7" khi mức SDK tối thiểu được hỗ trợ là 14, việc đặt tên mới giúp hiểu rõ sự phân chia giữa các API được đóng gói với nền tảng và thư viện dành cho nhà phát triển ứng dụng được sử dụng trên các phiên bản khác nhau của Android. Bạn có thể tham khảo thông báo chính thức để biết thêm chi tiết.


22

AndroidX là dự án nguồn mở mà nhóm Android sử dụng để phát triển, thử nghiệm, gói, phiên bản và thư viện phát hành trong Jetpack .

AndroidX là một cải tiến lớn đối với Thư viện hỗ trợ Android gốc . Giống như Thư viện hỗ trợ, AndroidX phân phối riêng với HĐH Android và cung cấp khả năng tương thích ngược trên các bản phát hành Android. AndroidX thay thế hoàn toàn Thư viện hỗ trợ bằng cách cung cấp tính năng tương đương và các thư viện mới.

AndroidX bao gồm các tính năng sau:

  • Tất cả các gói trong AndroidX sống trong một không gian tên nhất quán bắt đầu bằng chuỗi androidx. Các gói Thư viện hỗ trợ đã được ánh xạ vào các gói androidx. * Tương ứng. Để có bản đồ đầy đủ của tất cả các lớp cũ và xây dựng các tạo phẩm cho các lớp mới, hãy xem trang Tái cấu trúc gói.

  • Không giống như Thư viện hỗ trợ, các gói AndroidX được duy trì và cập nhật riêng. Các gói androidx sử dụng nghiêm ngặt Semantic Versioningbắt đầu với phiên bản 1.0.0. Bạn có thể cập nhật thư viện AndroidX trong dự án của mình một cách độc lập.

  • Tất cả sự phát triển Thư viện hỗ trợ mới sẽ diễn ra trong thư viện AndroidX. Điều này bao gồm bảo trì các tạo phẩm của Thư viện hỗ trợ ban đầu và giới thiệu các thành phần Jetpack mới.

Sử dụng AndroidX

Xem Di chuyển sang AndroidX để tìm hiểu cách di chuyển một dự án hiện có.

Nếu bạn muốn sử dụng AndroidX trong một dự án mới, bạn cần đặt SDK biên dịch thành Android 9.0 (cấp độ API 28) trở lên và đặt cả hai cờ plugin Android Gradle sau thành đúng trong gradle.propertiestệp của bạn .

  • android.useAndroidX: Khi được đặt thành true, plugin Android sử dụng thư viện AndroidX thích hợp thay vì Thư viện hỗ trợ. Cờ là sai theo mặc định nếu nó không được chỉ định.

  • android.enableJetifier: Khi được đặt thành true, plugin Android sẽ tự động di chuyển các thư viện bên thứ ba hiện có để sử dụng AndroidX bằng cách viết lại các nhị phân của chúng. Cờ là sai theo mặc định nếu nó không được chỉ định.

Đối với ánh xạ Artifact xem điều này


14

Bài viết này Android Jetpack: Các thông báo gần đây có ý nghĩa gì đối với Thư viện hỗ trợ của Android? giải thích nó tốt

Ngày nay, nhiều người coi Thư viện hỗ trợ là một phần thiết yếu trong phát triển ứng dụng Android, đến mức nó được sử dụng bởi 99% ứng dụng trong cửa hàng Google Play. Tuy nhiên, khi Thư viện hỗ trợ đã phát triển, sự không nhất quán đã xuất hiện xung quanh quy ước đặt tên của thư viện.

Ban đầu, tên của từng gói chỉ ra mức API tối thiểu được gói đó hỗ trợ, ví dụ: support-v4. Tuy nhiên, phiên bản 26.0.0của Thư viện hỗ trợ đã tăng API tối thiểu lên 14, vì vậy ngày nay nhiều tên gói không liên quan gì đến mức API được hỗ trợ tối thiểu. Khi cả hai gói support-v4 và support-v7 đều có API tối thiểu là 14, thật dễ hiểu vì sao mọi người lại nhầm lẫn!

Để xóa bỏ sự nhầm lẫn này, Google hiện đang tái cấu trúc Thư viện hỗ trợ thành thư viện tiện ích mở rộng Android mới cấu trúc gói (AndroidX) mới. AndroidX sẽ có các tên gói được đơn giản hóa, cũng như Maven groupIds và artifactIds phản ánh tốt hơn từng nội dung của gói và các cấp API được hỗ trợ của nó.

Với quy ước đặt tên hiện tại, cũng không rõ gói nào được gói cùng với hệ điều hành Android và gói nào được đóng gói với APK (Bộ gói Android) của ứng dụng của bạn . Để giải quyết sự nhầm lẫn này, tất cả các thư viện chưa được xử lý sẽ được chuyển sang không gian tên androidx. *, Trong khi hệ thống phân cấp gói android. * Sẽ được dành riêng cho các gói đi kèm với hệ điều hành Android .


12

Chỉ cần một số bit bổ sung từ phía tôi cho tất cả các câu trả lời có sẵn

Cần AndroidX

  1. Như đã nói trong câu trả lời tuyệt vời của @KhemRaj,

Với quy ước đặt tên hiện tại, không rõ gói nào được gói cùng với hệ điều hành Android và gói nào được đóng gói cùng với APK ( Bộ gói Android ) của ứng dụng của bạn . Để làm sáng tỏ sự nhầm lẫn này, tất cả các thư viện unbundled sẽ được chuyển đến AndroidX ‘s androidx. * Namespace, trong khi Android. * Phân cấp gói sẽ được dành riêng cho các gói mà tàu với hệ điều hành Android.

  1. Khác với cái này,

    Ban đầu, tên của từng gói chỉ ra mức API tối thiểu được gói đó hỗ trợ, ví dụ: support-v4 . Tuy nhiên, phiên bản 26.0.0 của Thư viện hỗ trợ đã tăng API tối thiểu lên 14 , vì vậy ngày nay, nhiều tên gói không liên quan gì đến mức API được hỗ trợ tối thiểu. Khi cả hai gói hỗ trợ-v4 và hỗ trợ-v7 đều có API tối thiểu là 14, thật dễ hiểu vì sao mọi người nhầm lẫn!. Vì vậy, bây giờ với AndroidX, không có sự phụ thuộc vào cấp độ API.

Một thay đổi quan trọng khác là các tạo phẩm AndroidX sẽ cập nhật độc lập, do đó bạn sẽ có thể cập nhật các thư viện AndroidX riêng lẻ trong dự án của mình, thay vì phải thay đổi mọi phụ thuộc cùng một lúc. Những thư viện khó chịu này Tất cả các thư viện com.android.support phải sử dụng cùng một thông số kỹ thuật phiên bản chính xác giống nhau Các tin nhắn của quá khứ sẽ trở thành quá khứ!


7

Tôi đã biết về AndroidX từ video Android Dev Summit này . Tóm tắt là -

  1. Không còn thư viện hỗ trợ: Android sẽ không bao giờ được Google duy trì trong không gian tên thư viện hỗ trợ. Vì vậy, nếu bạn muốn tìm các bản sửa lỗi trong thư viện hỗ trợ, bạn phải di chuyển dự án của mình trong AndroidX
  2. Quản lý gói tốt hơn: Để tạo phiên bản chuẩn và độc lập. Bởi vì phiên bản thư viện hỗ trợ trước đó quá khó hiểu. Nó sẽ giải phóng cho bạn nỗi đau của tất cả các thư viện com.android.support phải sử dụng chính xác thông điệp phiên bản chính xác của phiên bản .
  3. Các thư viện Chúa khác đã chuyển sang AndroidX : các dịch vụ Google play, Firebase, Mockito 2, v.v. được chuyển sang AndroidX.
  4. Các thư viện mới sẽ được xuất bản bằng cách sử dụng tạo phẩm AndroidX: Tất cả các thư viện sẽ nằm trong không gian tên AndroidX như Android Jetpack

4

Nó giống như các phiên bản hỗ trợ của AppCompat nhưng nó có ít phiên bản v4 và v7 hơn, vì vậy nó giúp ích rất nhiều từ việc sử dụng các thành phần khác nhau của các thành phần XML của Android.



3

AndroidX là dự án nguồn mở mà nhóm Android sử dụng để phát triển, thử nghiệm, gói, phiên bản và thư viện phát hành trong Jetpack.

Sau nhiều giờ vật lộn, tôi đã giải quyết nó bằng cách đưa vào phần sau trong app / build.gradle:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

Đặt những lá cờ này trong gradle.properies của bạn

android.enableJetifier=true
android.useAndroidX=true

Changes in gradle:

implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha04'

Khi di chuyển trên studio Android, tệp ứng dụng / lớp được tự động cập nhật với các ảnh hưởng của thư viện chỉnh sửa từ thư viện chuẩn

Tham khảo: https://developer.android.com/jetpack/androidx/migrate


0

Android cung cấp một vài bộ thư viện khác nhau. Một cái được gọi là Thư viện hỗ trợ Android và cái còn lại được gọi là AndroidX. Chọn "Sử dụng Android. * Artifacts" cho biết chúng tôi muốn sử dụng AndroidX.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.