Strumenti Utente

Strumenti Sito


Barra laterale

programmazione:android:p4a:prove

Alcune prove di sviluppo applicazioni android con Python e P4A

Autore: Fabio Di Matteo
Ultima revisione: 08/11/2022 - 09:45

In riferimento a questi appunti posto tutto il codice del progetto qui :
p4a-demo

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

Makefile

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

Fix del file build.gradle

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 {
    
}

Debug delle applicazioni

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.


programmazione/android/p4a/prove.txt · Ultima modifica: 12/11/2022 - 16:39 da Fabio Di Matteo