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, from the BeeWare project

* 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 και της δοκιμής του σε έναν εξομοιωτή.
