2011-01-09 1 views
6

C'è un modo per integrare completamente Python con codice Java su piattaforma Android?Integrazione completa di python android

Sì, ho visto the question about running Python on Android e Android Scripting Environment (ASE).

Ma quello non sembra essere abbastanza (correggimi se sbaglio). Volevo essere in grado non solo di invocare uno script Python dal codice Java, ma di avere una piena integrazione. La caratteristica di cui ho più bisogno è la possibilità di avere uno stato di esecuzione del codice Python salvato ed essere in grado di eseguire diverse parti del codice su richiesta contro lo stesso stato di esecuzione.

Su JavaSE mi affido a Jython. Credo its simplest example mostra tutto (e alcune altre caratteristiche troppo, come qualcosa che chiamerei introspezione stato variabile):

// http://www.jython.org/archive/21/docs/embedding.html 
    PythonInterpreter interp = new PythonInterpreter(); 

    System.out.println("Hello, brave new world"); 
    interp.exec("import sys"); 
    interp.exec("print sys"); 

    interp.set("a", new PyInteger(42)); 
    interp.exec("print a"); 
    interp.exec("x = 2+2"); 
    PyObject x = interp.get("x"); 

    System.out.println("x: "+x); 
    System.out.println("Goodbye, cruel world"); 

E 'possibile su Android? ASE è un modo per andare?

+0

Molti hanno provato. – motoku

risposta

0

ASE è probabilmente la strada da percorrere.

Non sono un esperto di Jython, ma mi aspetto che parte del problema con il tentativo di percorrere quella rotta sia che Android non sia realmente Java - mentre la lingua di base è la stessa, il codice Java di Android non ne condivide nessuno delle librerie Java "standard" e si compila nel proprio linguaggio bytecode.

Detto questo, c'è un progetto defunto per l'utilizzo di Jython con Android. Il suo autore ha ucciso il progetto ed è indirizzare gli utenti ad ASE:

http://code.google.com/p/jythonroid/

+0

Grazie. 'una qualsiasi delle "librerie Java" standard - non è vero al 100%. Condivide alcuni pacchetti, solo alcuni sono esclusi. Jythonroid - sì, l'ho visto. –