Autore: Fabio Di Matteo
Ultima revisione: 08/11/2022 - 09:45
Durante le mie prime prove alcune cose sono andate storte. In primo luogo ho dovuto creare un mekefile che modificasse la versione del plugin di gradle per android portandolo a 4.2.0 altrimenti non compilava l'apk. Poi ho avuto qualche difficoltà nel trovare della documentazione valida per le api android. Nel senso che la documentazione esiste, ma non è di altissimo livello ancora. Probabilmente la cosa si evolvera' in meglio prossimamente.
Mi permetto di riassumere i vantaggi e gli svantaggi che ho incontrato nelle prime prove.
Vantaggi di usare Python for Android |
---|
Ti porti dientro il python, il linguaggio che ami da sempre :) |
Svantaggi di usare Python for Android |
---|
Ogni apk con la sola webview pesa almeno 8mb |
ANDROID_PACKAGE=org.fabiodm.demo P4A_DISTNAME=p4a_demo PRIVATE_FOLDER=/home/fabio/Progetti/Python/p4a/demo PROJECT_NAME="P4A-demo" all: p4a apk --debug --dist_name=$(P4A_DISTNAME) --private $(PRIVATE_FOLDER) --package=$(ANDROID_PACKAGE) \ --name $(PROJECT_NAME) --version 0.1 --bootstrap=webview --requirements=python3,hostpython3,bottle,plyer --port=8080 --arch armeabi-v7a \ --sdk-dir /opt/android-sdk --ndk-dir /opt/android-ndk --android-api 27 --window --no-compile-pyo \ --permission "android.permission.ACCESS_FINE_LOCATION" \ --permission "android.permission.WRITE_EXTERNAL_STORAGE" \ --permission "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" \ --permission "android.permission.ACCESS_BACKGROUND_LOCATION" \ --permission "android.permission.INTERNET" \ --permission "android.permission.VIBRATE" \ --permission "android.permission.POST_NOTIFICATIONS" \ ; make fix && cp /home/fabio/.local/share/python-for-android/dists/$(P4A_DISTNAME)/build/outputs/apk/debug/$(P4A_DISTNAME)-debug.apk . \ && make run run: adb install -r $(P4A_DISTNAME)-debug.apk adb shell monkey -p $(ANDROID_PACKAGE) -c android.intent.category.LAUNCHER 1 adb logcat |grep python fix: cp build.gradle /home/fabio/.local/share/python-for-android/dists/$(P4A_DISTNAME) cd /home/fabio/.local/share/python-for-android/dists/$(P4A_DISTNAME)/ && /home/fabio/.local/share/python-for-android/dists/$(P4A_DISTNAME)/gradlew assembleDebug serve: python -m http.server cleanall: p4a clean_all clean: p4a clean_builds
Come gia' accennato nelle mie prove ho incontrato una incompatibilita' del file build.gradle con il resto dell'ambiente. Cercando online ho trovato la soluzione. Ho ridotto la versione del plugin di gradle per android. L'ho portata a 4.2.0 . Il make fix non fa altro che sovrascrivere il build.gradle con uno opportunamente patchato. Lo allego qui sotto.
build.gradle (fix temporaneo, spero si risolva in qualche modo piu' elegante)
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:4.2.0' } } allprojects { repositories { google() jcenter() flatDir { dirs 'libs' } } } apply plugin: 'com.android.application' android { compileSdkVersion 27 buildToolsVersion '30.0.2' defaultConfig { minSdkVersion 21 targetSdkVersion 27 versionCode 10211 versionName '0.1' manifestPlaceholders = [:] } packagingOptions { jniLibs { useLegacyPackaging = true } doNotStrip '**/*.so' } buildTypes { debug { } release { } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } sourceSets { main { jniLibs.srcDir 'libs' java {} } } aaptOptions { noCompress "tflite" } } dependencies { }
Per fare il debug configurare il telefono per ADB e impartire i seguenti comandi:
adb logcat |grep python
In questa maniera verra filtrati i logs relativi all'interprete Python. Sara' piu' facile fare il debug delle applicazioni.
Il nostro wiki installa solamente cookie tecnici necessari al funzionamento della piattaforma "Dokuwiki". Niente analitics, statistiche, tracciamenti o altro.