AndroidX είναι ένα σύνολο βιβλιοθηκών Jetpack από την Google που αντικατέστησε την ξεπερασμένη Support Library. Σύμφωνα με το Google Developer Documentation, 2024, το AndroidX παρέχει συμβατά προς τα πίσω στοιχεία για όλες τις εκδόσεις Android και αποτελεί το πρότυπο σύγχρονης ανάπτυξης Android. Οι βιβλιοθήκες AndroidX περιλαμβάνουν εργαλεία για UI, πλοήγηση, εργασία με δεδομένα, κάμερα και εργασίες παρασκηνίου.
Κύρια σημεία
AndroidX είναι μια βιβλιοθήκη ανοιχτού κώδικα που αποτελεί μέρος του Android Jetpack. Η Google κυκλοφόρησε το AndroidX το 2018 ως αντικατάσταση του Support Library, το οποίο από το 2011 παρείχε συμβατά προς τα πίσω στοιχεία για παλαιές εκδόσεις Android.
Πριν από την εμφάνιση του AndroidX, κάθε στοιχείο του Support Library είχε τη δική του έκδοση συνδεδεμένη με το targetSdkVersion. Οι προγραμματιστές έπρεπε να συνδέουν ταυτόχρονα πολλές εκδόσεις της ίδιας βιβλιοθήκης, γεγονός που οδηγούσε σε συγκρούσεις εξαρτήσεων και αύξηση του μεγέθους του αρχείου APK.
AndroidX έλυσε αυτό το πρόβλημα με τη σημασιολογική έκδοση (SemVer). Τώρα κάθε βιβλιοθήκη είναι ένα ξεχωριστό τεχνούργημα Gradle με έκδοση σε μορφή MAJOR.MINOR.PATCH. Ο προγραμματιστής μπορεί να ενημερώσει το Room από 2.4.0 σε 2.6.0 χωρίς να αγγίξει το Activity, το Fragment ή άλλες μονάδες.
Η πρώτη σταθερή έκδοση AndroidX 1.0.0 κυκλοφόρησε τον Δεκέμβριο του 2018 μαζί με το Android 9 Pie. Η Google ανακοίνωσε ότι το Support Library μεταβαίνει σε λειτουργία υποστήριξης και ότι όλα τα νέα στοιχεία — Navigation, WorkManager, Compose — θα κυκλοφορούν μόνο στο πλαίσιο του AndroidX. Η τελευταία έκδοση του Support Library — 28.0.0 — κυκλοφόρησε το 2019.
Σύμφωνα με το Google I/O 2019, ο βασικός λόγος για τη μετάβαση ήταν η ανάγκη επιτάχυνσης της κυκλοφορίας ενημερώσεων. Στο παλιό μοντέλο, η μία βιβλιοθήκη περίμενε την άλλη λόγω της ενιαίας έκδοσης πακέτου. Το AndroidX εξάλειψε αυτήν την μπλοκάρισμα και το Jetpack άρχισε να λαμβάνει κύριες και δευτερεύουσες εκδόσεις κάθε 2-3 μήνες.
Η κύρια διαφορά είναι ο χώρος ονομάτων. Το Support Library χρησιμοποιούσε το πακέτο android.support.*, ενώ το AndroidX μεταπήδησε στο androidx.*. Αυτή η αλλαγή επέτρεψε τον διαχωρισμό βιβλιοθηκών σε λειτουργικές μονάδες. Για παράδειγμα, το Fragment από το Support Library ονομαζόταν android.support.v4.app.Fragment, ενώ στο AndroidX — androidx.fragment.app.Fragment.
Η δεύτερη σημαντική διαφορά είναι η αρχιτεκτονική. Το AndroidX παρέχεται μαζί με το Jetpack — ένα σύνολο συστάσεων για την αρχιτεκτονική εφαρμογών. Το Jetpack περιλαμβάνει ViewModel, LiveData, Room, Navigation και WorkManager, τα οποία σχεδιάστηκαν ως ένα ενιαίο οικοσύστημα, όχι ως διάσπαρτα βοηθητικά προγράμματα.
Η συμβατότητα προς τα πίσω επίσης βελτιώθηκε. Ενώ το Support Library υποστήριζε Android 2.3+, το AndroidX εγγυάται λειτουργία σε συσκευές με Android 4.0 (API 14) και νεότερες — αυτό καλύπτει πάνω από το 99% των ενεργών συσκευών σύμφωνα με το Google Play Console 2024.
AndroidX περιλαμβάνει πάνω από 100 βιβλιοθήκες χωρισμένες σε ομάδες. Κάθε ομάδα είναι υπεύθυνη για ένα συγκεκριμένο τομέα: UI, δεδομένα, πλοήγηση, εργασίες παρασκηνίου, πολυμέσα και δοκιμές. Παρακάτω δίνεται μια επισκόπηση των βασικών μονάδων.
androidx.core:core — η βασική βιβλιοθήκη που περιέχει συμβατές προς τα πίσω εκδόσεις συστημικών API: NotificationCompat, ActivityCompat, ContextCompat. Η μονάδα core-ktx παρέχει επεκτάσεις Kotlin για εργασία με αρχεία, SharedPreferences και στοιχεία προβολής.
Η βιβλιοθήκη androidx.activity:activity εισήγαγε το Activity Result API (registerForActivityResult), το οποίο αντικατέστησε το ξεπερασμένο startActivityForResult. Η μονάδα fragment:fragment διαχειρίζεται τον κύκλο ζωής των τμημάτων και υποστηρίζει FragmentManager για συναλλαγές και στοίβα επιστροφής.
androidx.lifecycle — το θεμέλιο της αρχιτεκτονικής Jetpack. Το LifecycleOwner και το LifecycleObserver επιτρέπουν στα στοιχεία να αντιδρούν σε αλλαγές του κύκλου ζωής του Activity ή του Fragment. Το ViewModel διατηρεί δεδομένα κατά την περιστροφή οθόνης, και το LiveData ειδοποιεί το UI για αλλαγές δεδομένων.
class MainViewModel : ViewModel() {
private val _users = MutableLiveData<List<User>>()
val users: LiveData<List<User>> = _users
fun loadUsers() {
viewModelScope.launch {
val result = repository.getUsers()
_users.value = result
}
}
}
androidx.recyclerview:recyclerview — ένα ισχυρό στοιχείο για εμφάνιση λιστών και πλεγμάτων. Το RecyclerView υποστηρίζει LayoutManager (LinearLayoutManager, GridLayoutManager), ItemDecoration και κινούμενα σχέδια μέσω ItemAnimator. Η βιβλιοθήκη ListAdapter με AsyncListDiffer απλοποιεί την ενημέρωση λίστας με αυτόματο υπολογισμό διαφορών.
androidx.navigation:navigation — η βιβλιοθήκη για πλοήγηση μεταξύ οθονών. Το Navigation Component λειτουργεί με NavHostFragment και NavController, υποστηρίζει Safe Args για μεταφορά παραμετροποιημένων παραμέτρων και Deep Links για εξωτερικούς συνδέσμους. Το NavGraph περιγράφει όλες τις διαδρομές σε ένα αρχείο XML.
androidx.compose.ui — το δηλωτικό πλαίσιο UI Jetpack Compose, χτισμένο σε Kotlin. Σε αντίθεση με το σύστημα View, το Compose επανασχεδιάζει μόνο τα τροποποιημένα στοιχεία μέσω recomposition. Τα στοιχεία Material Design 3 (Button, TextField, Scaffold) είναι διαθέσιμα στη μονάδα material3.
| Βιβλιοθήκη | Τεχνούργημα | Σκοπός |
|---|---|---|
| Fragment | androidx.fragment | Διαχείριση τμημάτων και συναλλαγών |
| RecyclerView | androidx.recyclerview | Λίστες και πλέγματα με βελτιστοποίηση |
| Navigation | androidx.navigation | Πλοήγηση μεταξύ οθονών |
| Compose UI | androidx.compose.ui | Δηλωτικό UI σε Kotlin |
androidx.room:room — ORM για τοπική αποθήκευση δεδομένων. Το Room δημιουργεί κλάσεις DAO από σχολιασμένα ερωτήματα SQLite, ελέγχει τη σύνταξη SQL στο στάδιο μεταγλώττισης και υποστηρίζει RxJava και Kotlin Flow. Η έκδοση 2.6 περιλαμβάνει υποστήριξη για KSP για ταχύτερη δημιουργία κώδικα.
androidx.work:workmanager — βιβλιοθήκη για εργασίες παρασκηνίου με εγγυημένη εκτέλεση. Το WorkManager υποστηρίζει περιοδικές εργασίες, αλυσίδες εργασίας (beginWith, then) και κριτήρια έναρξης (Constraints: δίκτυο, φόρτιση, μνήμη). Ακόμα κι αν η εφαρμογή είναι κλειστή, το WorkManager παραδίδει την εργασία μετά από επανεκκίνηση της συσκευής.
androidx.datastore:datastore — η σύγχρονη αντικατάσταση του SharedPreferences. Το DataStore χρησιμοποιεί Kotlin Coroutines και Flow, λειτουργεί σύγχρονα και ασύγχρονα, εξαλείφοντας το μπλοκάρισμα του νήματος UI. Το Preferences DataStore αποθηκεύει απλά ζεύγη κλειδιού-τιμής, ενώ το Proto DataStore — παραμετροποιημένα αντικείμενα μέσω Protocol Buffers.
Αυτόματη μετεγκατάσταση είναι η συνιστώμενη από την Google μέθοδος μετάβασης από το Support Library στο AndroidX. Το Android Studio από την έκδοση 3.2 περιλαμβάνει το ενσωματωμένο εργαλείο Refactor Migrate to AndroidX, το οποίο αντικαθιστά τους χώρους ονομάτων και ενημερώνει τις εξαρτήσεις στο build.gradle.
Πριν από τη μετεγκατάσταση, πρέπει να ενημερώσετε την έκδοση compileSdk σε 28 ή υψηλότερη. Επίσης, βεβαιωθείτε ότι όλες οι βιβλιοθήκες τρίτων υποστηρίζουν AndroidX. Εάν κάποια εξάρτηση δεν έχει ακόμη μετεγκατασταθεί, μπορείτε να χρησιμοποιήσετε τη σημαία android.enableJetifier=true στο gradle.properties — αυτή ξαναγράφει αυτόματα τον bytecode βιβλιοθηκών τρίτων.
Στο Android Studio, επιλέξτε Refactor Migrate to AndroidX από το μενού. Το IDE θα σαρώσει ολόκληρο το έργο, θα βρει όλες τις εισαγωγές από το πακέτο android.support.* και θα τις αντικαταστήσει με androidx.*. Επίσης, οι εξαρτήσεις στο app/build.gradle θα ενημερωθούν — τα τεχνουργήματα Support Library θα αντικατασταθούν με αντίστοιχες εκδόσεις AndroidX.
Μετά τη μετεγκατάσταση, ο Gradle Sync μπορεί να εμφανίσει σφάλματα εάν κάποιες εξαρτήσεις δεν βρέθηκαν. Ελέγξτε τη λίστα των χρησιμοποιούμενων βιβλιοθηκών στην τεκμηρίωση του Google Maven — όλα τα τεχνουργήματα AndroidX έχουν δημοσιευτεί στο google(). Εάν η βιβλιοθήκη δεν είναι διαθέσιμη, προσθέστε το mavenCentral() στο repositories.
android {
compileSdk 34
}
dependencies {
// Support Library (ξεπερασμένο)
// implementation 'com.android.support:appcompat-v7:28.0.0'
// AndroidX
implementation 'androidx.core:core-ktx:1.13.1'
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'androidx.activity:activity-ktx:1.9.3'
implementation 'androidx.fragment:fragment-ktx:1.8.5'
implementation 'androidx.recyclerview:recyclerview:1.3.2'
implementation 'androidx.room:room-runtime:2.6.1'
ksp 'androidx.room:room-compiler:2.6.1'
}
Εάν το έργο είναι πολύ μεγάλο ή περιέχει προσαρμοσμένες Προβολές από το Support Library, η αυτόματη αντικατάσταση μπορεί να είναι ελλιπής. Αντικαταστήστε χειροκίνητα όλες τις συμβολοσειρές στον κώδικα: αλλάξτε τις εισαγωγές, τα χαρακτηριστικά σε XML (app/src/main/res) και τις αναφορές στο δηλωτικό. Για χαρακτηριστικά Support Library, το πρόθεμα android: αλλάζει σε app: (π.χ. app:cardCornerRadius αντί για android:cardCornerRadius).
Μετά τη χειροκίνητη μετεγκατάσταση, ελέγξτε τις αναφορές R. Το Support Library εξήγαγε πόρους μέσω android.support.v7.appcompat.R, ενώ το AndroidX μέσω androidx.appcompat.R. Εκτελέστε αναζήτηση στο έργο και αντικαταστήστε όλες τις αναφορές παλαιών διαδρομών R. Η δημιουργία του έργου πρέπει να ολοκληρωθεί χωρίς σφάλματα και προειδοποιήσεις απαξίωσης.
Το πρώτο πλεονέκτημα του AndroidX είναι η αρθρωτότητα. Συνδέετε μόνο τις βιβλιοθήκες που πραγματικά χρησιμοποιείτε. Εάν η εφαρμογή χρειάζεται μόνο RecyclerView και Navigation, δεν υπάρχει λόγος να συμπεριλάβετε ολόκληρο το Support Library με όλα τα στοιχεία View. Αυτό μειώνει το μέγεθος APK και επιταχύνει τη δημιουργία του έργου.
Το δεύτερο πλεονέκτημα — τακτικές ενημερώσεις. Το Jetpack κυκλοφορεί σταθερές εκδόσεις κάθε 1-3 μήνες. Το Room 2.6.0, που κυκλοφόρησε το 2024, πρόσθεσε υποστήριξη για KSP και Kotlin 2.0. Το Navigation 2.8.0 εισήγαγε ασφαλείς διαδρομές βάσει σειριοποίησης Kotlinx Serialization. Οι προγραμματιστές λαμβάνουν νέες δυνατότητες χωρίς να περιμένουν την επόμενη έκδοση Android.
Το τρίτο πλεονέκτημα — ενσωμάτωση με Kotlin. Όλες οι βιβλιοθήκες AndroidX έχουν μονάδες -ktx με συναρτήσεις επέκτασης. Το viewLifecycleOwner.lifecycleScope εκκινεί coroutines στο πλαίσιο του τμήματος, το collectLatest επεξεργάζεται το Flow, και τα SharedFlow και StateFlow είναι πλήρως συμβατά με στοιχεία Lifecycle-aware. Αυτό κάνει τον κώδικα πιο συνοπτικό και ασφαλή.
Συμβατότητα προς τα πίσω — το βασικό πλεονέκτημα του AndroidX σε σύγκριση με νέα API πλατφόρμας. Μπορείτε να χρησιμοποιήσετε AppCompatDelegate.setDefaultNightMode για σκοτεινό θέμα σε Android 4.0+, NotificationCompat.setBubble για φυσαλίδες σε Android 5.0+ και LocationRequestCompat για fused location σε Android 4.0+. Η κάλυψη συσκευών φτάνει το 99% χωρίς αύξηση της ελάχιστης έκδοσης SDK.
Το τέταρτο πλεονέκτημα — δοκιμές. Το AndroidX περιλαμβάνει τη βιβλιοθήκη androidx.test για σύνταξη ενόργανων και μοναδιαίων δοκιμών. Το FragmentScenario και το ActivityScenario επιτρέπουν τη δοκιμή στοιχείων UI σε απομόνωση, και το TestNavHostController — τον έλεγχο πλοήγησης χωρίς εκκίνηση πραγματικής συσκευής. Τα MockK και Robolectric συμπληρώνουν το οικοσύστημα.
Συχνές ερωτήσεις
AndroidX χρησιμοποιεί τον χώρο ονομάτων androidx.* αντί για android.support.*, έχει ανεξάρτητη έκδοση (SemVer), περιλαμβάνει βιβλιοθήκες Jetpack και υποστηρίζει επεκτάσεις Kotlin -ktx. Το Support Library παγώθηκε στην έκδοση 28.0.0 το 2019.
Στο Android Studio ενεργοποιήστε τη σημαία Use AndroidX στο βήμα δημιουργίας έργου. Για υπάρχον έργο, προσθέστε android.useAndroidX=true και android.enableJetifier=true στο gradle.properties. Στη συνέχεια, αντικαταστήστε τις εξαρτήσεις στο build.gradle με τεχνουργήματα από την ομάδα androidx.
Το Google Play απαιτεί όλες οι εφαρμογές και ενημερώσεις να χρησιμοποιούν AndroidX. Η υποστήριξη για το Support Library έχει διακοπεί και δεν λαμβάνει διορθώσεις ασφαλείας. Εάν η εφαρμογή σας δεν έχει ακόμη μετεγκατασταθεί, αυτό μπορεί να οδηγήσει σε απόρριψη της ενημέρωσης στο Google Play Console.
Jetpack είναι ένα σύνολο βιβλιοθηκών, εργαλείων και συστάσεων από την Google για ανάπτυξη εφαρμογών Android. Το AndroidX αποτελεί τη βάση του Jetpack. Το Jetpack περιλαμβάνει Architecture Components (Lifecycle, ViewModel, Room), UI (Compose, Fragment, RecyclerView) και Behavior (WorkManager, Navigation, CameraX).
Ναι, το Jetpack Compose το ίδιο είναι μέρος του AndroidX (androidx.compose.ui). Οι βιβλιοθήκες ViewModel, Navigation, Room και WorkManager είναι πλήρως συμβατές με το Compose. Οι συναρτήσεις collectAsState() και collectAsStateWithLifecycle() εξασφαλίζουν ενσωμάτωση του Flow με συναρτήσεις Compose.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης