# 6. Χρήση της Python σε Android

Η Python σε Android διαφέρει από την Python σε πλατφόρμες επιτραπέζιων υπολογιστών. Σε μια πλατφόρμα επιτραπέζιων υπολογιστών, η Python εγκαθίσταται γενικά ως πόρος συστήματος που μπορεί να χρησιμοποιηθεί από οποιονδήποτε χρήστη αυτού του υπολογιστή. Οι χρήστες στη συνέχεια αλληλεπιδρούν με την Python εκτελώντας ένα εκτελέσιμο python και εισάγοντας εντολές σε μια διαδραστική γραμμή εντολών ή εκτελώντας ένα Python script.

Στο Android, δεν υπάρχει η έννοια της εγκατάστασης ως πόρου συστήματος. Η μόνη μονάδα διανομής λογισμικού είναι μια «εφαρμογή». Δεν υπάρχει κονσόλα όπου θα μπορούσατε να εκτελέσετε ένα εκτελέσιμο αρχείο python, ή να αλληλεπιδράσετε με ένα Python REPL.

Ως αποτέλεσμα, ο μόνος τρόπος για να χρησιμοποιήσετε την Python σε Android είναι σε ενσωματωμένη λειτουργία – δηλαδή, γράφοντας μια εγγενή εφαρμογή Android, ενσωματώνοντας έναν διερμηνέα Python χρησιμοποιώντας το `libpython`, και καλώντας κώδικα Python χρησιμοποιώντας το Python embedding API. Ο πλήρης διερμηνέας Python, η τυπική βιβλιοθήκη, και όλος ο κώδικας Python συσκευάζονται στη συνέχεια στην εφαρμογή σας για δική της ιδιωτική χρήση.

Η τυπική βιβλιοθήκη της Python έχει κάποιες αξιοσημείωτες παραλείψεις και περιορισμούς στο Android. Δείτε τον API availability guide για λεπτομέρειες.

## 6.1. Προσθήκη της Python σε μια εφαρμογή Android

Η πλειονότητα των ατόμων που προγραμματίζουν εφαρμογές θα πρέπει να χρησιμοποιούν ένα από τα ακόλουθα εργαλεία, τα οποία παρέχουν ευκολότερη εμπειρία:

- Briefcase, από το έργο BeeWare

- Buildozer, από το έργο Kivy

- Chaquopy

- pyqtdeploy

- Termux

Αν θέλετε να τα κάνετε όλα αυτά χειροκίνητα, συνεχίστε την ανάγνωση. Μπορείτε να χρησιμοποιήσετε την εντολή testbed app ως οδηγό· κάθε βήμα παρακάτω περιέχει έναν σύνδεσμο προς το σχετικό αρχείο.

- Πρώτον, αποκτήστε μια έκδοση της Python για Android:

  - Ο ευκολότερος τρόπος είναι να κατεβάσετε μια έκδοση Android από το python.org. Ο φάκελος `prefix` που αναφέρεται παρακάτω βρίσκεται στο ανώτατο επίπεδο του πακέτου.

  - Ή αν θέλετε να το δημιουργήσετε μόνοι σας, ακολουθήστε τις οδηγίες στο αρχείο:source:Android/README.md. Ο φάκελος `prefix` θα δημιουργηθεί κάτω από το `cross-build/HOST`.

- Προσθέστε κώδικα στο αρχείο σας build.gradle για να αντιγράψετε τα ακόλουθα στοιχεία στο έργο σας. Όλα εκτός από τον δικό σας κώδικα Python μπορούν να αντιγραφούν από το `prefix/lib`:

  - Στις JNI βιβλιοθήκες σας:

    - `libpython*.*.so`

    - `lib*_python.so` (εξωτερικές βιβλιοθήκες όπως το OpenSSL)

  - Στα στοιχεία σας:

    - `python*.*` (η τυπική βιβλιοθήκη της Python)

    - `python*.*/site-packages` (ο δικός σας Python κώδικας)

- Προσθέστε κώδικα στην εφαρμογή σας για να εξαγάγετε τα στοιχεία στο σύστημα αρχείων.

- Προσθέστε κώδικα στην εφαρμογή σας για να ξεκινήσετε την Python σε ενσωματωμένη λειτουργία. Αυτός θα πρέπει να είναι κώδικας C που καλείται μέσω JNI.

## 6.2. Δημιουργία ενός πακέτου Python για Android

Τα πακέτα Python μπορούν να δημιουργηθούν για Android ως wheels και να κυκλοφορήσουν στο PyPI. Το προτεινόμενο εργαλείο για αυτό είναι το cibuildwheel, το οποίο αυτοματοποιεί όλες τις λεπτομέρειες του στησίματος ενός περιβάλλοντος διασταυρούμενης μεταγλώττισης, της δημιουργίας του wheel και της δοκιμής του σε έναν εξομοιωτή.