6. Använda Python på Android

Python på Android är olikt Python på stationära plattformar. På en stationär plattform installeras Python i allmänhet som en systemresurs som kan användas av alla användare av den datorn. Användare interagerar sedan med Python genom att köra en körbar python och ange kommandon i en interaktiv prompt, eller genom att köra ett Python-skript.

På Android finns det inget koncept för installation som en systemresurs. Den enda enheten för distribution av programvara är en ”app”. Det finns inte heller någon konsol där du kan köra en python-körbar fil eller interagera med en Python REPL.

Som ett resultat är det enda sättet du kan använda Python på Android i inbäddat läge - det vill säga genom att skriva en inbyggd Android-applikation, bädda in en Python-tolk med libpython och anropa Python-kod med Python embedding API. Den fullständiga Python-tolken, standardbiblioteket och all din Python-kod paketeras sedan i din app för eget privat bruk.

Pythons standardbibliotek har några anmärkningsvärda utelämnanden och begränsningar på Android. Se API availability guide för mer information.

6.1. Lägga till Python i en Android-app

De flesta apputvecklare bör använda något av följande verktyg, som ger en mycket enklare upplevelse:

Om du är säker på att du vill göra allt detta manuellt kan du läsa vidare. Du kan använda testbed app som en guide; varje steg nedan innehåller en länk till den relevanta filen.

  • Bygg Python genom att följa instruktionerna i Android/README.md. Detta kommer att skapa katalogen cross-build/HOST/prefix.

  • Lägg till kod i din build.gradle-fil för att kopiera följande objekt till ditt projekt. Allt utom din egen Python-kod kan kopieras från prefix/lib:

    • I dina JNI-bibliotek:

      • libpython*.*.so

      • lib*_python.so (externa bibliotek som t.ex. OpenSSL)

    • I dina tillgångar:

      • python*.* (Pythons standardbibliotek)

      • python*.*/site-packages (din egen Python-kod)

  • Lägg till kod i din app för att extrahera tillgångarna till filsystemet.

  • Lägg till kod i din app för att starta Python i inbäddat läge. Detta kommer att behöva vara C-kod som anropas via JNI.

6.2. Bygga ett Python-paket för Android

Python-paket kan byggas för Android som hjul och släppas på PyPI. Det rekommenderade verktyget för att göra detta är cibuildwheel, som automatiserar alla detaljer för att ställa in en korskompileringsmiljö, bygga hjulet och testa det på en emulator.