Introducción a la programación en Python para Android

Iniciado por Expermicid, Septiembre 16, 2014, 09:16:57 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Nos llega este interesante proyecto de la mano de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, un framework basado en OpenGL escrito en python que nos permite hacer aplicaciones desktop, IOS, Windows y tambien Android.

Hace poco vimos cómo compilar con el SDK de Android desde otro lenguaje que no sea Java, por ejemplo desde No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.
Ahora con  No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, que es a la vez un framework y un toolkit como PythonQT o como el GTK+ toolkit de Gnome, podemos crear botones, animaciones, elementos visuales desde Python.

Mathieu Virbel, leader programmer de Kivy nos publica hace pocos días este script en Python que permite compilar desde python con el toolchain de Android y de esta forma  obtener un APK para Android.

Introducción: Instalación del Framework Kivy

En nuestro caso no es necesario instalar a kivy, el script de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta nos descaraga directemente el framework de Kivy.

Solo instalamos Kivy para tener los ejemplo Demo a Compilar, no es necesario tenerlo instalado se puede saltar al siguiente paso.

En Mac os, es simple uno se puede bajar el archivo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta para snow Leopard y lo instala como de costumbre, esto instalará todas las dependencias de Python OpenGL

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

[update] En Ubuntu, para instalarlo desde apt-get:

Código: text
sudo apt-add-repository ppa:kivy-team/kivy
sudo apt-get install python-kivy


Para Compilar kivy desde easy_install:

Si estas en ubuntu o con Debian, se puede compilar el framework Kivy desde easy_install.

Al instalar desde easy_install, para instalarse, se requiere muchas dependencias como No tienes permitido ver los links. Registrarse o Entrar a mi cuenta que pueden ser descargadas desde pip o easy_install.

Código: text
sudo apt-get install python-setuptools python-pygame python-opengl python-gst0.10 python-enchant gstreamer0.10-plugins-good cython python-dev build-essential mesa-common-dev libgl1-mesa-dev libgles2-mesa-dev


Código: text
sudo pip install Cython==0.17.1

Código: text
sudo easy_install pyrex

Código: text
sudo easy_install kivy


Aqui inicia el paso para Python-For-Android ...

Instalación del NDK y del SDK de Android

Descargar los ejemplos demos:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Descargar y descomprimir el SDK y el NDK de Android en una carpeta opt.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Luego hay que bien configurar los Paths del SDK y del NDK. Con un Export de ANDROIDSDK y ANDROIDNDK.

Código: text
vi ~/.bashrc


Código: text
export ANDROIDSDK="/opt/android-sdk-linux_86″
export ANDROIDNDK="/opt/android-ndk-r8″
export ANDROIDNDKVER=r8
export ANDROIDAPI=14


Debes estar seguro que tenes el PATH del SDK y del NDK en tu PATH, podes comprobar esto con un simple echo $PATH, sino agregalos a tu archivo .bashrc
cuando ya terminaste con las variables env, para tomar las variables en tu shell, ejecutas:

Código: text
source ~/.bashrc


Si no tenés instalado en Ubuntu el git core build essentials Tambien hay que hacerlo:

Código: text
sudo apt-get install build-essential patch git-core ccache


y vas a necesitar también No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, que es a la vez un lenguaje y una extension para usar librerias en C desde Python:

Código: text
sudo pip install Cython==0.17.1


Instalación del script python-for-android

Con un simple Clone del proyecto desde github:

Código: text
git clone git://github.com/kivy/python-for-android.git


Ahora creamos una distribución de la toolchain de Android incluyendo al modulo de Kivy.

Código: text
./distribute.sh -m "kivy"


Y ya tenemos nuestra toolchain lista para compilar un script en Python que va a generar un APK. Buscamos la carpeta dist y buscamos un ejemplo a compilar.

Podemos mirar el codigo del ejemplo del touchtracer que está en los ejemplos demo de Kivy.

Código: text
$ vi kivydemo-for-android/touchtracer/main.py


Código: python
import kivy
kivy.require('1.0.6')

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.graphics import Color, Rectangle, Point, GraphicException
from random import random
from math import sqrt


def calculate_points(x1, y1, x2, y2, steps=5):
    dx = x2 - x1
    dy = y2 - y1
    dist = sqrt(dx * dx + dy * dy)
    if dist < steps:
        return None
    o = []
    m = dist / steps
    for i in xrange(1, int(m)):
        mi = i / m
        lastx = x1 + dx * mi
        lasty = y1 + dy * mi
        o.extend([lastx, lasty])
    return o


class Touchtracer(FloatLayout):

    def on_touch_down(self, touch):
        win = self.get_parent_window()
        ud = touch.ud
        ud['group'] = g = str(touch.uid)
        with self.canvas:
            ud['color'] = Color(random(), 1, 1, mode='hsv', group=g)
            ud['lines'] = (
                Rectangle(pos=(touch.x, 0), size=(1, win.height), group=g),
                Rectangle(pos=(0, touch.y), size=(win.width, 1), group=g),
                Point(points=(touch.x, touch.y), source='particle.png',
                      pointsize=5, group=g))

        ud['label'] = Label(size_hint=(None, None))
        self.update_touch_label(ud['label'], touch)
        self.add_widget(ud['label'])
        touch.grab(self)
        return True

    def on_touch_move(self, touch):
        if touch.grab_current is not self:
            return
        ud = touch.ud
        ud['lines'][0].pos = touch.x, 0
        ud['lines'][1].pos = 0, touch.y

        points = ud['lines'][2].points
        oldx, oldy = points[-2], points[-1]
        points = calculate_points(oldx, oldy, touch.x, touch.y)
        if points:
            try:
                lp = ud['lines'][2].add_point
                for idx in xrange(0, len(points), 2):
                    lp(points[idx], points[idx+1])
            except GraphicException:
                pass

        ud['label'].pos = touch.pos
        import time
        t = int(time.time())
        if t not in ud:
            ud[t] = 1
        else:
            ud[t] += 1
        self.update_touch_label(ud['label'], touch)

    def on_touch_up(self, touch):
        if touch.grab_current is not self:
            return
        touch.ungrab(self)
        ud = touch.ud
        self.canvas.remove_group(ud['group'])
        self.remove_widget(ud['label'])

    def update_touch_label(self, label, touch):
        label.text = 'ID: %s\nPos: (%d, %d)\nClass: %s' % (
            touch.id, touch.x, touch.y, touch.__class__.__name__)
        label.texture_update()
        label.pos = touch.pos
        label.size = label.texture_size[0] + 20, label.texture_size[1] + 20


class TouchtracerApp(App):
    title = 'Touchtracer'
    icon = 'icon.png'

    def build(self):
        return Touchtracer()

    def on_pause(self):
        return True

if __name__ in ('__main__', '__android__'):
    TouchtracerApp().run()


Nos posicionamos en la carpeta de dónde se encuentra el build, resultado de nuestra compilación.

Código: text
cd dist/default


Luego lanzamos la ejecución del build:

Código: text
./build.py --package org.test.touchtracer --name touchtracer --version 1.0 --dir ~/code/kivydemo-for-android/touchtracer debug


y tenemos un BUILD SUCCESSFUL

Se encuentra el resultado en un apk compilado que esta en la carpeta bin/. Lo instalamos con un simple adb install.
Aqui esta el resultado del No tienes permitido ver los links. Registrarse o Entrar a mi cuenta en el Market de Android.

[update] el APK se ejecutará normalmente en dispositivos android que soportan GPU, OpenGPL 2.0 ES, y android Froyo minimo. Para ver si su dispositivo puede correr Kivy Python, prueban correr antes el No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Si queremos empezar con nuestro propio proyecto:
   
Código: python
if __name__ in ('__main__', '__android__'):
    YourApp().run()


Y si queremos empezar ahora con un simple tutorial, les dejo este: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

La doc del No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Github del proyecto: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta para hacer el clone.

Fuente: androidda

Saludos

Septiembre 21, 2014, 04:17:43 PM #1 Ultima modificación: Septiembre 21, 2014, 04:31:46 PM por $francisco
Esta bastante bien, pero por mi parte me trae algunos problemas al utilizarlo, al instalarlo y al intentar compilarlo me lanza un error "hardwareaccelerated" reinstale en múltiples ocasiones kivy y python for android pero me seguía tirando el error, entonces lo borre todo y exporte las siguientes rutas en el PATH.

Código: php
export PATH=${PATH}:/opt/android-sdk-linux/platform-tools
export PATH=${PATH}:/opt/android-sdk-linux/tools


entonces hice el

Código: php
./distribute.sh -m "kivy"


con androidndk-r8 instalado.

entonces ya no me tiraba el error, pero sigue teniendo problemas, tras reiniciar el ordenador tira un error "ant" y tengo que solucionarlo haciendo otra vez

Código: php
./distribute.sh -m "kivy"


y alguna vez que otra tengo que borrar python for android y volver a descargarlo.

Esto por si a alguien le surge el mismo problema, y cada vez que se baya a compilar hay que exportar todas las rutas, tanto de el SDK, NDK y diría que hasta las de tools y platform-tools.

También lanza algunas veces un error que dice que nose encuentra el archivo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, al parecer crea un archivo que se llama No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y tiene que ser modificado manualmente a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. este archivo se encuetra en python-for-android/dist/default/

Y aqui algunas páginas oficiales que me ayudaron mucho.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

y este último quizás el me mas me ayudo, y si seguís esta página para la instalación no olvidéis exportar a path la ruta de el sdk "tools" y "platform-tools", proporciona el sdk y el ndk, lo mas importante es que porporciona las direcciones de las descargas y eso ayuda mucho.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta