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

If you're sure you want to do all of this manually, read on. You can
use the testbed app as a guide; each step below contains a link to the
relevant file.

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

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

  * Or if you want to build it yourself, follow the instructions in
    Platforms/Android/README.md. The "prefix" directory will be
    created under "cross-build/*HOST*".

* Add code to your build.gradle file to copy the following items into
  your project. All except your own Python code can be copied from
  "prefix/lib":

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

    * "libpython*.*.so"

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

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

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

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

* Add code to your app to extract the assets to the filesystem.

* Add code to your app to start Python in embedded mode. This will
  need to be C code called via JNI.


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

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