IOError: [Errno 2] No existe tal archivo o directorio: u '/… / RetroApp-debug.apk'
Soy principiante en la programación de la biblioteca kivy, pero he hecho una aplicación muy simple, como en el tutorial de Kivy. En el escritorio funciona bien. Pero de lo que quería hacer el archivo .apk (no había usado Linux). He intentado muchos pasos para hacer un archivo .apk, pero finalmente cuando instalé y abrí este programa. Tuvo un error He probado muchas especificaciones y new_android, pero nada funcionó. Finalmente, actualicé mi buildozer a la última versión. Pero ahora, después de la depuración de Android Buildozer, escribe este error:
IOError: [Errno 2] No existe tal archivo o directorio: u '/ home / kivy / reyyy / .buildozer / android / platform / build / dists / RetroApp / build / salidas / apk / RetroApp-debug.apk'.
************* buildozer.spec ***************
[app]
title = Retro App
package.name = retroapp
package.domain = org.test
source.dir = .
source.include_exts = py,png,jpg,kv,atlas
version = 1.0
requirements = kivy
orientation = landscape
osx.python_version = 3
osx.kivy_version = 1.9.1
fullscreen = 1
android.arch = armeabi-v7a
[buildozer]
log_level = 2
warn_on_root = 1
****** python3: main.py *******
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import NumericProperty,ObjectProperty,ReferenceListProperty,StringProperty
from kivy.vector import Vector
from kivy.clock import Clock
from kivy.uix.button import Button
from random import randint,choice
class RetryButton(Button):
pass
class PongBall(Widget):
velocity_y = NumericProperty(0)
velocity_x = NumericProperty(0)
velocity = ReferenceListProperty(velocity_x,velocity_y)
def move(self):
self.pos = Vector(*self.velocity)+self.pos
class PongPaddle(Widget):
score = NumericProperty(0)
def bounce_ball(self,ball):
if self.collide_widget(ball):
vx,vy = ball.velocity
offset = (ball.center_y - self.center_y) / (self.height /10.0)
bounced = Vector(-1 * vx, vy)
vel = bounced * 1.1
ball.velocity = vel.x, vel.y + offset
class PongGame(Widget):
ball = ObjectProperty(None)
player1 = ObjectProperty(None)
player2 = ObjectProperty(None)
win = NumericProperty(0)
middle_rectangle_opacity = NumericProperty(1)
winner = StringProperty('')
def __init__(self,**q):
super().__init__(**q)
self.btn = RetryButton(width = self.width)
self.btn.count = 0
self.max_score = 10
def serve_ball(self,vel = (10,0)):
self.ball.center = self.center
self.ball.velocity = Vector(*vel).rotate(choice([randint(0,30),randint(330,360)]))
def update(self,dt):
if self.win == 0:
self.ball.move()
self.player1.bounce_ball(self.ball)
self.player2.bounce_ball(self.ball)
if self.player1.score >= self.max_score or self.player2.score >=self.max_score:
if self.player1.score >= self.max_score:
self.winner = '1'
else:
self.winner = '2'
self.win = 1
self.middle_rectangle_opacity = 0
if (self.ball.y < self.y) or (self.ball.top > self.height):
self.ball.velocity_y *= -1
if self.ball.x<self.x:
self.player2.score += 1
self.serve_ball((10,0))
if self.ball.x > self.width - self.ball.width:
self.player1.score += 1
self.serve_ball((-10,0))
else:
if self.btn.count == 0:
self.btn.bind(on_press=self.retry)
self.add_widget(self.btn)
self.btn.count += 1
def on_touch_move(self, touch):
if touch.x < self.width/3.0:
self.player1.center_y = touch.y
if touch.x > self.width - self.width/3.0:
self.player2.center_y = touch.y
def retry(self,*q):
self.player1.score = 0
self.player2.score = 0
self.win = 0
self.middle_rectangle_opacity = 1
, self.serve_ball()
self.remove_widget(self.btn)
self.btn.count = 0
class PongApp(App):
def build(self):
game = PongGame()
game.serve_ball()
Clock.schedule_interval(game.update, 1/30.0)
return game
if __name__ == '__main__':
PongApp().run()`
******** KV pong.kv *********
#:kivy 1.0.9
<RetryButton>:
text: 'Retry'
font_size: 17
size: self.width, '100dp'
<PongBall>:
size:50,50
canvas.before:
Ellipse:
pos: self.pos
size: self.size
<PongPaddle>:
size: '25dp','200dp'
canvas:
Rectangle:
pos:self.pos
size: self.size
<PongGame>:
ball: pong_ball
player1: player_left
player2: player_right
canvas:
Color:
rgba: 1,1,1,root.middle_rectangle_opacity
Rectangle:
pos:self.center_x - 5,0
size: 10, self.height
Label:
font_size:35
center_x: root.center_x
center_y: root.height/4*3
text: "Player {} wins!!".format(root.winner)
color: 1,1,1,root.win
Label:
font_size: 70
center_x: root.width/4
top: root.top - 50
text: str(root.player1.score)
Label:
font_size: 70
center_x: root.width/4*3
top: root.top - 50
text: str(root.player2.score)
PongBall:
id: pong_ball
center: self.parent.center
PongPaddle:
id: player_left
x: root.x
center_y: root.center_y
PongPaddle:
id: player_right
x: root.width - self.width
center_y: root.center_y
¡Por favor, ayúdame! Vadim