Mastering Gradle για το Android: Tasks Gradle και Kotlin

Συγγραφέας: Lewis Jackson
Ημερομηνία Δημιουργίας: 11 Ενδέχεται 2021
Ημερομηνία Ενημέρωσης: 1 Ιούλιος 2024
Anonim
Top 7 Technology Trends for Java back-end developers in 2022 [MJC]
Βίντεο: Top 7 Technology Trends for Java back-end developers in 2022 [MJC]

Περιεχόμενο


Αντί της Java, της XML ή του Kotlin, αυτά τα αρχεία κατασκευής Gradle χρησιμοποιούν τη γλώσσα που βασίζεται σε τομέα Groovy (DSL). Αν δεν είστε εξοικειωμένοι με τον Groovy, τότε θα εξετάσουμε κάθε ένα από αυτά τα αρχεία Gradle, έτσι ώστε μέχρι το τέλος αυτού του άρθρου να είστε άνετοι με την ανάγνωση και τη σύνταξη απλού κώδικα Groovy.

Το Gradle στοχεύει να κάνει τη ζωή σας πιο εύκολη, παρέχοντας ένα σύνολο προκαθορισμένων ρυθμίσεων που μπορείτε συχνά να χρησιμοποιήσετε με ελάχιστη χειροκίνητη ρύθμιση - όταν είστε έτοιμοι να δημιουργήσετε το έργο σας, απλά πατήστε το πλήκτρο "Run" του Android Studio και το Gradle θα ξεκινήσει τη διαδικασία κατασκευής για σενα.

Παρά την προσέγγιση "convention over configuration" του Gradle, εάν οι προεπιλεγμένες ρυθμίσεις δεν ανταποκρίνονται στις ανάγκες σας, τότε μπορείτε να προσαρμόσετε, να διαμορφώσετε και να επεκτείνετε τη διαδικασία δημιουργίας και ακόμη και να τροποποιήσετε τις ρυθμίσεις Gradle για να εκτελέσετε πολύ συγκεκριμένες εργασίες.


Αφού τα γραφήματα Gradle περιέχονται στα δικά τους αρχεία, μπορείτε να τροποποιήσετε τη διαδικασία δημιουργίας της εφαρμογής σας ανά πάσα στιγμή, χωρίς να χρειάζεται να αγγίξετε τον πηγαίο κώδικα της εφαρμογής σας. Σε αυτό το σεμινάριο, θα τροποποιήσουμε τη διαδικασία κατασκευής χρησιμοποιώντας γεύσεις, παραλλαγές κατασκευής και μια προσαρμοσμένη εργασία Gradle - όλα χωρίς πάντα αγγίζοντας τον κώδικα εφαρμογής μας.

Εξερευνώντας τα αρχεία build του Gradle

Κάθε φορά που δημιουργείτε ένα έργο, το Android Studio θα δημιουργήσει την ίδια συλλογή αρχείων build του Gradle. Ακόμα κι αν εισάγετε ένα υπάρχον έργο στο Android Studio, θα το κάνετε ακόμη δημιουργήστε αυτά ακριβώς τα αρχεία Gradle και προσθέστε τα στο έργο σας.

Για να αρχίσουμε να έχουμε καλύτερη κατανόηση του Gradle και της σύνταξης του Groovy, ας εξετάσουμε το κάθε ένα από τα αρχεία Gradle Android του Android.

1. Ρυθμίσεις

Το αρχείο settings.gradle είναι όπου θα ορίσετε όλες τις μονάδες της εφαρμογής σας με το όνομα, χρησιμοποιώντας τη λέξη-κλειδί "include". Για παράδειγμα, αν είχατε ένα έργο που αποτελείται από "app" και "secondModule", τότε το αρχείο settings.gradle θα φαινόταν έτσι:


περιλαμβάνουν: app,: rootmodel.project.name = MyProject

Ανάλογα με το μέγεθος του έργου σας, αυτό το αρχείο μπορεί να είναι σημαντικά μεγαλύτερο.

Κατά τη διάρκεια της διαδικασίας δημιουργίας, το Gradle θα εξετάσει τα περιεχόμενα του αρχείου settings.gradle του έργου σας και θα εντοπίσει όλες τις μονάδες που χρειάζεται να συμπεριλάβει στη διαδικασία δημιουργίας.

2.gradi.gradle (επίπεδο έργου)

Το αρχείο build.grable σε επίπεδο έργου βρίσκεται στον ριζικό κατάλογο του έργου σας και περιέχει τις ρυθμίσεις στις οποίες θα εφαρμοστεί όλα τις ενότητες σας (που επίσης αναφέρονται ως έργα από το Gradle).

Θα πρέπει να χρησιμοποιήσετε αυτό το αρχείο για να ορίσετε τυχόν πρόσθετα, αποθετήρια, εξαρτήσεις και επιλογές διαμόρφωσης που ισχύουν για κάθε ενότητα σε όλο το έργο Android. Σημειώστε ότι αν ορίσετε οποιεσδήποτε εργασίες Gradle μέσα στο αρχείο build.gradle σε επίπεδο έργου, τότε εξακολουθεί να είναι δυνατή η αντικατάσταση ή επέκταση αυτών των εργασιών για μεμονωμένες ενότητες, με την επεξεργασία των αντίστοιχων επίπεδο-επίπεδο build.grade αρχείο.

Ένα τυπικό αρχείο build.gradle σε επίπεδο έργου θα φαίνεται κάπως έτσι:

buildscript {repositories {google () jcenter ()} εξαρτήσεις {classpath com.android.tools.build:gradle:3.5.0-alpha06 // ΣΗΜΕΙΩΣΗ: Μην τοποθετείτε εδώ τις εξαρτήσεις της εφαρμογής σας. ανήκουν // στην ατομική ενότητα build.gradle files}} allprojects {αποθήκες {google () jcenter ()}} καθήκον καθαρό (πληκτρολογήστε: Διαγραφή) {delete rootProject.buildDir}

Αυτό το αρχείο δημιουργίας βάσης σε επίπεδο έργου χωρίζεται στα ακόλουθα τμήματα:

  • Κατασκευάστηκε. Αυτό περιέχει τις ρυθμίσεις που απαιτούνται για την εκτέλεση της κατασκευής.
  • Αποθετήρια. Το Gradle είναι υπεύθυνο για τον εντοπισμό των εξαρτήσεων του έργου σας και τη διάθεσή τους στην κατασκευή σας. Ωστόσο, δεν εξαρτώνται όλες οι εξαρτήσεις από τον ίδιο χώρο αποθήκευσης, επομένως θα πρέπει να ορίσετε όλες τις αποθήκες που πρέπει να αναζητήσει το Gradle, προκειμένου να ανακτήσετε τις εξαρτήσεις του έργου σας.
  • Εξαρτήσεις. Αυτή η ενότητα περιέχει τις εξαρτήσεις του plugin σας, οι οποίες μεταφορτώνονται και αποθηκεύονται στην τοπική μνήμη cache. Θα έπρεπε δεν ορίστε οποιεσδήποτε εξαρτήσεις εξαρτημάτων εντός αυτού του μπλοκ.
  • Όλα τα έργα. Σε αυτό το σημείο θα ορίσετε τις αποθήκες που θα πρέπει να είναι διαθέσιμες όλα των ενοτήτων του έργου σας.

3. build.grade (επίπεδο μονάδας)

Πρόκειται για το αρχείο build.gradle σε επίπεδο ενότητας, το οποίο υπάρχει σε κάθε ενότητα του έργου σας. Εάν το πρόγραμμά σας Android αποτελείται από πολλαπλές μονάδες, τότε θα αποτελείται από πολλαπλά αρχεία build.gradle σε επίπεδο ενότητας.

Κάθε αρχείο κειμένου build.gradle σε επίπεδο μονάδας περιέχει το όνομα του πακέτου του έργου, το όνομα έκδοσης και τον κώδικα έκδοσης, καθώς και το ελάχιστο και το SDK στόχου για αυτήν τη συγκεκριμένη ενότητα.

Ένα αρχείο κτιρίου build-level σε επίπεδο ενότητας μπορεί επίσης να έχει το δικό του μοναδικό σύνολο οδηγιών δημιουργίας και εξαρτήσεων. Για παράδειγμα, αν δημιουργείτε μια εφαρμογή με ένα στοιχείο Wear OS, τότε το έργο σας στο Android Studio θα αποτελείται από μια ξεχωριστή ενότητα smartphone / tablet και μια ενότητα Wear - δεδομένου ότι στοχεύουν εντελώς διαφορετικές συσκευές, αυτές οι ενότητες έχουν δραστικά διαφορετικές εξαρτήσεις!

Ένα βασικό αρχείο build.gradle σε επίπεδο module θα εμφανίζεται συνήθως ως εξής:

εφαρμογή plugin: com.android.application android {compileSdkVersion 28 defaultConfig {applicationId "com.jessicathornsby.speechtotext" minSdkVersion 23 targetSdkVersion 28 versionCode 1 έκδοσηName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"} buildTypes {release {minifyEnabled false proguardFiles Επεξεργασία αρχείου (dir: libs, include:) υλοποίηση androidx.appcompat: appcompat: 1.0.2 υλοποίηση androidx.constraintlayout: constraintlayout: 1.1. 3 testImplementation junit: junit: 4.12 androidTestImplementation androidx.test.ext: junit: 1.1.0 androidTestImplementation androidx.test.espresso: πυρήνας espresso: 3.1.1}

Ας ρίξουμε μια πιο προσεκτική ματιά σε κάθε ένα από αυτά τα τμήματα:

  • εφαρμογή plugin. Αυτή είναι μια λίστα με τα πρόσθετα που απαιτούνται για την κατασκευή αυτής της λειτουργικής μονάδας. Το plugin com.android.application είναι απαραίτητο για τη ρύθμιση της διαδικασίας δημιουργίας συγκεκριμένων Android, οπότε αυτό προστίθεται αυτόματα.
  • android. Στο σημείο αυτό θα πρέπει να τοποθετήσετε όλες τις επιλογές που αφορούν την πλατφόρμα.
  • compileSdkVersion. Αυτό είναι το επίπεδο API με το οποίο καταρτίζεται αυτή η ενότητα. Δεν μπορείτε να χρησιμοποιήσετε λειτουργίες από ένα API υψηλότερο από αυτήν την τιμή.
  • buildToolsVersion. Αυτό υποδεικνύει την έκδοση του μεταγλωττιστή. Στο Gradle 3.0.0 και νεότερο, το buildToolsVersion είναι προαιρετικό. αν δεν καθορίσετε μια τιμή buildToolsVersion τότε το Android Studio θα προεπιλέξει την πιο πρόσφατη έκδοση των εργαλείων Build.
  • defaultConfig. Περιέχει επιλογές που θα εφαρμοστούν σε όλες τις εκδόσεις δομής της εφαρμογής σας, όπως οι εκδόσεις εντοπισμού σφαλμάτων και εκδόσεων.
  • applicationId. Αυτό είναι το μοναδικό αναγνωριστικό της εφαρμογής σας.
  • minSdkVersion. Αυτή η παράμετρος καθορίζει το χαμηλότερο επίπεδο API που υποστηρίζει αυτή η ενότητα.
  • targetSdkVersion. Αυτό είναι το μέγιστο επίπεδο API που έχει δοκιμαστεί η εφαρμογή σας. Στην ιδανική περίπτωση, θα πρέπει να ελέγξετε την εφαρμογή σας χρησιμοποιώντας το πιο πρόσφατο API, πράγμα που σημαίνει ότι η τιμή targetSdkVersion θα είναι πάντα ίση με την τιμή compileSdkVersion.
  • versionCode. Αυτή είναι μια αριθμητική τιμή για την έκδοση της εφαρμογής σας.
  • versionName. Αυτή είναι μια φιλική προς το χρήστη συμβολοσειρά, η οποία αντιπροσωπεύει την έκδοση της εφαρμογής σας.
  • buildTypes. Από προεπιλογή, το Android υποστηρίζει δύο τύπους δημιουργίας: αποσφαλμάτωση και απελευθέρωση. Μπορείτε να χρησιμοποιήσετε τα μπλοκ "debug" και "release" για να καθορίσετε τις ρυθμίσεις του τύπου της εφαρμογής σας.
  • εξαρτήσεις. Εδώ θα ορίσετε τις βιβλιοθήκες στις οποίες εξαρτάται αυτή η ενότητα.

Δηλώνοντας τις εξαρτήσεις του έργου σας: Τοπικές βιβλιοθήκες

Μπορείτε να διαθέσετε πρόσθετες λειτουργίες για τα έργα Android σας, προσθέτοντας μία ή περισσότερες εξαρτήσεις έργου. Αυτές οι εξαρτήσεις μπορεί να είναι τοπικές ή μπορούν να αποθηκευτούν σε απομακρυσμένο αποθετήριο.

Για να δηλώσετε μια εξάρτηση από ένα τοπικό αρχείο JAR, θα πρέπει να προσθέσετε το JAR στον κατάλογο "libs" του έργου σας.

Στη συνέχεια, μπορείτε να τροποποιήσετε το αρχείο build.gradle σε επίπεδο ενότητας για να δηλώσετε την εξάρτηση από αυτό το αρχείο. Για παράδειγμα, εδώ δηλώνουμε την εξάρτηση από ένα JAR "mylibrary".

αρχεία υλοποίησης (libs / mylibrary.jar)

Εναλλακτικά, εάν ο φάκελός σας "libs" περιέχει αρκετούς JAR, τότε ίσως είναι ευκολότερο απλά να δηλώσετε ότι το σχέδιό σας εξαρτάται από όλα τα αρχεία που βρίσκονται στο φάκελο "libs", για παράδειγμα:

υλοποίηση fileTree (dir: libs, include:)

Προσθήκη εξαρτήματος δημιουργίας: Απομακρυσμένα αποθετήρια

Εάν μια βιβλιοθήκη βρίσκεται σε απομακρυσμένο χώρο αποθήκευσης, τότε θα πρέπει να ολοκληρώσετε τα παρακάτω βήματα:

  • Καθορίστε το αποθετήριο όπου βρίσκεται αυτή η εξάρτηση.
  • Δηλώστε την ατομική εξάρτηση.

Σύνδεση σε απομακρυσμένο αποθετήριο

Το πρώτο βήμα, λέει στο Gradle ποιο αποθετήριο (ή αποθετήρια) πρέπει να ελέγξει, προκειμένου να ανακτήσει όλες τις εξαρτήσεις του έργου σας. Για παράδειγμα:

αποθήκες {google () jcenter ()}}

Εδώ, η γραμμή "jcenter ()" εξασφαλίζει ότι το Gradle θα ελέγξει το αποθετήριο JCenter, το οποίο είναι ένα δωρεάν δημόσιο αποθετήριο που φιλοξενείται στο bintray.

Εναλλακτικά, αν εσείς ή ο οργανισμός σας διατηρείτε ένα προσωπικό αποθετήριο, τότε θα πρέπει να προσθέσετε τη διεύθυνση URL αυτού του αποθετηρίου στη δήλωση εξάρτησης. Εάν ο χώρος αποθήκευσης είναι προστατευμένος με κωδικό πρόσβασης, τότε θα πρέπει επίσης να δώσετε τα στοιχεία σύνδεσής σας, για παράδειγμα:

αποθετήρια {mavenCentral () maven {// Διαμορφώστε τη διεύθυνση URL προορισμού // url "http://repo.mycompany.com/myprivaterepo"} maven {διαπιστευτήρια {username myUsername password myPassword} url "http://repo.mycompany.com / myprivaterepo "}

Εάν υπάρχει εξάρτηση μέσα σε πολλαπλές αποθήκες, τότε το Gradle θα επιλέξει την "καλύτερη" έκδοση αυτής της εξάρτησης, με βάση παράγοντες όπως η ηλικία κάθε αποθετηρίου και η στατική έκδοση.

Δηλώνει απομακρυσμένη εξάρτηση

Το επόμενο βήμα είναι η δήλωση της εξάρτησης στο αρχείο build.gradle σε επίπεδο ενότητας. Μπορείτε να προσθέσετε αυτές τις πληροφορίες στο μπλοκ "εξαρτήσεις", χρησιμοποιώντας οποιοδήποτε από τα παρακάτω:

  • Εκτέλεση. Αυτή είναι μια κανονική εξάρτηση που χρειάζεστε κάθε φορά που δημιουργείτε το έργο σας. Θα υπάρξει εξάρτηση από την εφαρμογή όλα τις κατασκευές σας.
  • Τεκμηρίωση. Αυτή είναι μια εξάρτηση που απαιτείται για να μεταγλωττίσετε την πηγή δοκιμής της εφαρμογής σας και να εκτελέσετε δοκιμές βασισμένες σε JVM. Όταν επισημάνετε μια εξάρτηση ως "Testimplementation", το Gradle θα γνωρίζει ότι δεν χρειάζεται να εκτελεί καθήκοντα για αυτήν την εξάρτηση κατά τη διάρκεια μιας κανονικής κατασκευής, η οποία μπορεί να συμβάλει στη μείωση του χρόνου κατασκευής.
  • Εφαρμογή Androidtesti. Αυτή είναι μια εξάρτηση που απαιτείται όταν εκτελείτε δοκιμές σε μια συσκευή, για παράδειγμα το πλαίσιο Espresso είναι μια κοινή εφαρμογή Androidtesti.

Ορίζουμε μια εξ αποστάσεως εξάρτηση, χρησιμοποιώντας μία από τις παραπάνω λέξεις-κλειδιά, ακολουθούμενη από τα χαρακτηριστικά της ομάδας εξάρτησης, το όνομα και την έκδοση, για παράδειγμα:

dependencies {υλοποίηση fileTree (dir: libs, include:) υλοποίηση androidx.appcompat: appcompat: 1.0.2 υλοποίηση androidx.constraintlayout: constraintlayout: 1.1.3 testImplementation junit: junit: 4.12 androidTestImplementation androidx.test.ext: junit: 1.1.0 androidTestImplementation androidx.test.espresso: espresso-core: 3.1.1}

Δημιουργία πολλαπλών αρχείων APK: Τρόπος δημιουργίας παραλλαγών κατασκευής

Μερικές φορές, ίσως χρειαστεί να δημιουργήσετε πολλές εκδόσεις της εφαρμογής σας. Για παράδειγμα, μπορεί να θέλετε να απελευθερώσετε μια δωρεάν έκδοση και μια πληρωμένη έκδοση, η οποία περιλαμβάνει ορισμένες πρόσθετες λειτουργίες.

Αυτή είναι μια εργασία δημιουργίας που μπορεί να σας βοηθήσει ο Gradle, οπότε ας δούμε πώς τροποποιήσατε τη διαδικασία δημιουργίας για τη δημιουργία πολλών APK από ένα μόνο έργο:

  • Ανοίξτε το αρχείο strings.xml και διαγράψτε την αρχική συμβολοσειρά ονόματος εφαρμογής.
  • Στη συνέχεια, ορίστε τα ονόματα κάθε γεύσης του προϊόντος που θέλετε να δημιουργήσετε. σε αυτήν την περίπτωση, χρησιμοποιώ:

Η δωρεάν εφαρμογή μου Η πληρωμένη μου εφαρμογή

  • Ανοίξτε το αρχείο AndroidManifest.xml και αντικαταστήστε το android: label = "@ string / app_name" με:

android: label = "$ {appName}"

  • Ανοίξτε το αρχείο build.gradle σε επίπεδο ενότητας και προσθέστε τα ακόλουθα στο μπλοκ "android":

γεύσηΔιαστάσεις "mode" productFlavors {ελεύθερη {διάσταση "mode" applicationIdSuffix ".free" manifestPlaceholders =} πληρωμένη {ιδιότητα "mode" applicationIdSuffix ".paid" manifestPlaceholders =}}}

Ας καταρρίψουμε τι συμβαίνει εδώ:

  • flavorDimensions. Το plugin Android δημιουργεί παραλλαγές κατασκευής συνδυάζοντας γεύσεις από διαφορετικές διαστάσεις. Εδώ δημιουργούμε μια διάσταση γεύσης αποτελούμενη από "δωρεάν" και "πληρωμένες" εκδόσεις της εφαρμογής μας. Με βάση τον παραπάνω κώδικα, το Gradle θα δημιουργήσει τέσσερις παραλλαγές κατασκευής: payDebug, paidRelease, freeDebug και freereelease.
  • productFlavors. Αυτό καθορίζει μια λίστα με τις γεύσεις και τις ρυθμίσεις τους, οι οποίες στον παραπάνω κώδικα είναι «πληρωμένες» και «δωρεάν».
  • Δωρεάν / πληρωμένο. Αυτά είναι τα ονόματα των δύο γεύσεων των προϊόντων μας.
  • Διάσταση. Πρέπει να καθορίσουμε μια τιμή παραμέτρου "διάσταση". σε αυτήν την περίπτωση, χρησιμοποιώ τη λειτουργία.
  • applicationIdSuffix. Δεδομένου ότι θέλουμε να δημιουργήσουμε πολλαπλές εκδόσεις της εφαρμογής μας, πρέπει να δώσουμε σε κάθε APK ένα μοναδικό αναγνωριστικό εφαρμογής.
  • εκδηλώσεωνΑυτοί. Κάθε έργο έχει ένα μόνο αρχείο Manifest που περιέχει σημαντικές πληροφορίες σχετικά με τη διαμόρφωση του έργου σας. Κατά τη δημιουργία πολλαπλών παραλλαγών δημιουργίας, συνήθως θα θέλετε να τροποποιήσετε μερικές από αυτές τις ιδιότητες Manifest κατά τη δημιουργία χρόνου. Μπορείτε να χρησιμοποιήσετε τα αρχεία build του Gradle για να καθορίσετε μοναδικές καταχωρίσεις Manifest για κάθε παραλλαγή κατασκευής, οι οποίες στη συνέχεια θα εισαχθούν στη Manifest σας κατά την κατασκευή. Στον παραπάνω κώδικα, τροποποιούμε την τιμή "appName" ανάλογα με το αν το Gradle χτίζει την δωρεάν ή την πληρωμένη έκδοση της εφαρμογής μας.

Δημιουργία μιας προσαρμοσμένης εργασίας Gradle

Μερικές φορές ενδέχεται να χρειαστεί να προσαρμόσετε τη διαδικασία δημιουργίας χρησιμοποιώντας το Gradle καθήκοντα.

Μια εργασία είναι μια ομαδοποιημένη συλλογή ενεργειών που θα εκτελεί το Gradle καθώς εκτελεί μια κατασκευή, για παράδειγμα δημιουργώντας ένα Javadoc. Το Gradle υποστηρίζει άφθονες εργασίες από προεπιλογή, αλλά μπορείτε επίσης να δημιουργήσετε προσαρμοσμένες εργασίες, οι οποίες μπορούν να σας βοηθήσουν εάν έχετε στο μυαλό σας ένα πολύ συγκεκριμένο σύνολο οδηγιών κατασκευής.

Σε αυτή την ενότητα θα δημιουργήσουμε μια προσαρμοσμένη εργασία Gradle που θα επαναλάβει όλες τις παραλλαγές κατασκευής του έργου μας (payDebug, paidRelease, freeDebug και freeRelease), θα δημιουργήσει μια σφραγίδα ημερομηνίας και ώρας και στη συνέχεια θα προσθέσει αυτές τις πληροφορίες σε κάθε παραγόμενο APK.

Ανοίξτε το αρχείο build.gradle σε επίπεδο ενότητας και προσθέστε τα εξής:

task addDateAndTime () {// Επεξεργαστείτε όλες τις παραλλαγές κατασκευής εξόδου // android.applicationVariants.all {παραλλαγή -> // Επεξεργαστείτε όλα τα αρχεία APK // variant.outputs.all {output -> // Δημιουργία στιγμιότυπου την τρέχουσα ημερομηνία και ώρα, με τη μορφή που καθορίστηκε // def dateAndTime = new Date () format. ("yyyy-MM-dd: HH-mm") // Προσθέστε αυτές τις πληροφορίες στο όνομα αρχείου APK // def fileName = όνομα + "_" + dateAndTime + ".apk" output.outputFileName = όνομα_αρχείου}}}

Στη συνέχεια, πρέπει να πούμε στο Gradle όταν θα πρέπει να εκτελέσει αυτήν την εργασία. Κατά τη διάρκεια μιας κατασκευής, το Gradle ταυτίζει όλα όσα χρειάζεται για να κατεβάσει και όλες τις εργασίες που πρέπει να εκτελέσει και τα οργανώνει σε ένα κατευθυνόμενο ακυκλικό γράφημα (DAG). Στη συνέχεια, το Gradle θα εκτελέσει όλες αυτές τις εργασίες, σύμφωνα με τη σειρά που ορίζεται στο DAG του.

Για την εφαρμογή μου, πρόκειται να χρησιμοποιήσω τη μέθοδο "whenReady", η οποία διασφαλίζει ότι η εργασία μας θα καλείται μόλις συμπληρωθεί το DAG και το Gradle είναι έτοιμο να αρχίσει να εκτελεί τα καθήκοντά του.

Προσθέστε τα εξής στο αρχείο build.gradle σε επίπεδο ενότητας:

// Εκτελέστε αυτή την εργασία // gradle.taskGraph.whenReady {addDateAndTime}

Ας βάλουμε το δικό μας έργο και να δημιουργήσουμε την παραλλαγή κώδικα στη δοκιμή, δημιουργώντας αυτό το έργο χρησιμοποιώντας μια εντολή Gradle.

Δημιουργήστε το έργο σας με το περιτύλιγμα Gradle

Εκδίδετε εντολές Gradle χρησιμοποιώντας το περιτύλιγμα Gradle ("gradlew"). Αυτό το σενάριο είναι ο προτιμώμενος τρόπος για να ξεκινήσετε μια κατασκευή Gradle, καθιστώντας την εκτέλεση της κατασκευής ανεξάρτητη από την έκδοση του Gradle. Αυτός ο διαχωρισμός μπορεί να είναι χρήσιμος εάν συνεργάζεστε με άλλους που δεν έχουν απαραίτητα την ίδια έκδοση του Gradle.

Όταν εκδίδετε τις εντολές περιτύλιξης Gradle, θα χρησιμοποιήσετε το "gradlew" για λειτουργικά συστήματα που μοιάζουν με Unix, συμπεριλαμβανομένων macOS και "gradlew.bat" για Windows. Έχω ένα Mac, οπότε θα χρησιμοποιήσω εντολές "gradlew".

Μπορείτε να εκδώσετε εντολές Gradle από το Android Studio:

  • Στη γραμμή εργαλείων του Android Studio, επιλέξτε "Προβολή> Εργαλεία Windows> Τερματικό." Αυτό ανοίγει ένα παράθυρο τερματικού στο κάτω μέρος του παραθύρου του IDE.
  • Εισάγετε την ακόλουθη εντολή στο τερματικό:

./gradlew build

Το Android Studio θα πρέπει να μοιάζει με αυτό:

  • Πατήστε το πλήκτρο "Enter" στο πληκτρολόγιό σας. Το Gradle θα δημιουργήσει τώρα το έργο σας.

Το Gradle αποθηκεύει όλα τα παραγόμενα APK στον κατάλογο εφαρμογών / build / outputs / apk του έργου σας, γι 'αυτό περιηγηθείτε στον κατάλογο. Ο φάκελος "APK" θα πρέπει να περιέχει πολλούς φακέλους και υποφακέλους. βεβαιωθείτε ότι το Gradle έχει δημιουργήσει ένα APK για κάθε μία από τις παραλλαγές σας κατασκευής και ότι έχουν προστεθεί οι σωστές πληροφορίες ημερομηνίας και ώρας σε κάθε αρχείο.

Τι άλλες εργασίες Gradle είναι διαθέσιμες;

Εκτός από τυχόν προσαρμοσμένες εργασίες που μπορεί να δημιουργήσετε, το Gradle υποστηρίζει μια λίστα προκαθορισμένων εργασιών εκτός πλαισίου. Εάν είστε περίεργοι να δείτε ακριβώς ποιες εργασίες είναι διαθέσιμες, τότε:

  • Ανοίξτε το παράθυρο του τερματικού του Android Studio, αν δεν είναι ήδη ανοιχτό (επιλέγοντας "Προβολή> Εργαλεία Windows> Τερματικό" από τη γραμμή εργαλείων του Android Studio).
  • Πληκτρολογήστε τα εξής στο τερματικό:

./gr tasks -q

  • Πατήστε το πλήκτρο "Enter" στο πληκτρολόγιό σας.

Αυτή η εργασία "εργασίες" θα τρέξει τώρα και μετά από λίγα λεπτά το Terminal θα εμφανίσει μια λίστα με όλες τις εργασίες που είναι διαθέσιμες για αυτό το έργο, συνοδευόμενη από μια σύντομη περιγραφή κάθε εργασίας.

Αξιοποίηση του Gradle: Προσθήκη πρόσθετων στοιχείων

Τα σκάφη Gradle διαθέτουν προεγκατεστημένα πρόσθετα plugins, αλλά μπορείτε να επεκτείνετε περαιτέρω το Gradle προσθέτοντας νέα πρόσθετα. Αυτά τα πρόσθετα καθιστούν διαθέσιμα νέα καθήκοντα στα έργα σας στο Android, για παράδειγμα το Java plugin περιλαμβάνει εργασίες που σας επιτρέπουν να μεταγλωττίσετε πηγαίο κώδικα Java, να εκτελέσετε δοκιμές μονάδων και να δημιουργήσετε ένα αρχείο JAR, όπως "compileJava", "compileText", "jar" "Javadoc", και "καθαρό".

Για να εφαρμόσετε μια προσθήκη, προσθέστε τη δήλωση "apply plugin" στο αρχείο build_grade σε επίπεδο module, ακολουθούμενο από το όνομα του plugin. Για παράδειγμα, εδώ εφαρμόζουμε την προσθήκη Java:

εφαρμογή plugin: java

Αν είστε περίεργοι να δείτε ποια πρόσθετα είναι διαθέσιμα, τότε ελέγξτε την αναζήτηση Gradle Plugin, η οποία παρέχει ένα περιεκτικό μητρώο plug-in Gradle.

Το Gradle Kotlin DSL

Από προεπιλογή, θα γράφετε τα σενάρια Gradle build χρησιμοποιώντας το Groovy DSL, αλλά εάν είστε ένας από τους πολλούς προγραμματιστές που έχετε υιοθετήσει την ανάπτυξη του Kotlin για Android, τότε ίσως προτιμάτε να γράψετε τα script build σας στο Kotlin.

Σε αντίθεση με τον Groovy, ο Kotlin είναι μια στατικώς πληκτρολογημένη γλώσσα προγραμματισμού, οπότε αν κάνετε τον διακόπτη, τότε τα αρχεία σας θα είναι συμβατά με τα χαρακτηριστικά αυτόματης συμπλήρωσης και πηγαίου κώδικα του Android Studio. Επιπλέον, η μετάβαση από τον Groovy στον Kotlin σημαίνει ότι θα χρησιμοποιείτε την ίδια γλώσσα προγραμματισμού σε ολόκληρο το έργο σας, γεγονός που μπορεί να κάνει την ανάπτυξη πιο απλή - ειδικά αν δεν είστε εξοικειωμένοι με Groovy!

Εάν θέλετε να αρχίσετε να γράφετε τη λογική σας κατασκευής στο Kotlin, τότε θα χρειαστεί να ρυθμίσετε το Gradle Kotlin DSL και να ακολουθήσετε τις οδηγίες στον οδηγό μετανάστευσης.

Τυλίγοντας

Σε αυτό το άρθρο, διερευνήσαμε το εργαλείο αυτοματοποίησης κατασκευής και διαχείρισης εξάρτησης του Android Studio. Εξετάσαμε τον τρόπο με τον οποίο το Gradle αυτοματοποιεί τη διαδικασία κατασκευής εκτός πλαισίου και τον τρόπο με τον οποίο μπορείτε να τροποποιήσετε τη διαδικασία δημιουργίας, επεξεργάζοντας τα αρχεία Gradle του έργου σας, συμπεριλαμβανομένης της δημιουργίας προσαρμοσμένων εργασιών Gradle και δημιουργώντας πολλαπλές παραλλαγές κατασκευής από ένα μόνο έργο.

Έχετε επεκτείνει το Gradle για να αυτοματοποιήσετε άλλα μέρη της διαδικασίας κατασκευής του Android; Ενημερώστε μας στα σχόλια παρακάτω!

Οι μπαταρίες στερεάς κατάστασης αναμένεται να αντικαταστήσουν τις μπαταρίες ιόντων λιθίου που βρίσκονται αυτή τη στιγμή σε martphone και μια δέσμη άλλων προϊόντων στο εγγύς μέλλον. Σύμφωνα με μια έκθε...

Η έναρξη του amung Galaxy 10 είναι μόνο ημέρες μακριά σε αυτό το σημείο. Ωστόσο, αποδεικνύεται ότι η amung έχει περισσότερα για να κάνει το ντεμπούτο παρά μόνο την τελευταία της σειρά martphone: τα πρ...

Επιλογή Τόπου