Kivy应用程序在Android上崩溃

弗洛林·阿辛特(Florin Acsinte)

我用kivy编写了一个简单的应用程序。它在我的桌面上可以正常工作,但是我希望它可以在Android上运行。但是,当我将其安装到Android手机时,启动时会崩溃。

该应用程序在局域网上广播,等待答复。然后,将答复者添加到列表中并显示在屏幕上。

这是我的代码:

import kivy
import random
import socket
import threading

kivy.require('1.7.2')  # replace with your current kivy version !

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import ObjectProperty
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from functools import partial

from multiprocessing import Process, Queue
from time import sleep
import socket
import random

CHECK_MESSAGE = "Who is alive?"


class Communicator:

    def requester(self):
        address = ('<broadcast>', 54545)

        client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        client_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

        string_list =[]

        while True:
            #print "broadcasting done by " + self.my_name
            client_socket.sendto(CHECK_MESSAGE, address)
            recv_data, addr = client_socket.recvfrom(2048)

            if self.my_name == recv_data or recv_data in string_list:
                sleep(3)
                continue

            string_list.append(recv_data)
            self.callback(string_list)
            sleep(3)

    def replyer(self):
        address = ('', 54545)
        server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
        server_socket.bind(address)
        #print my_name

        while True:
            #print "Listening"
            recv_data, addr = server_socket.recvfrom(2048)
            if recv_data == CHECK_MESSAGE:
                server_socket.sendto(self.my_name, addr)

    def __init__(self, callback_function):
        self.callback = callback_function
        self.my_name = socket.gethostname() + ' ' + str(int(random.random()*10000))

    def start_all(self):
        self.start_server()
        self.start_client()

    def start_client(self):
        client = threading.Thread(target=self.requester)
        client.daemon = True
        client.start()

    def start_server(self):
        server = threading.Thread(target=self.replyer)
        server.daemon = True
        server.start()

class Client:
    name = ''

    def get_name(self):
        return self.name

client_list =[]



class Pong(Screen):
    grid_l = ObjectProperty(None)
    top_lbl = ObjectProperty(None)
    list_of_peers = ObjectProperty(None)

    def search_btn_pressed(self, string_list):
        #if self.queue.qsize() > 0:

        #print "sieze:" , self.queue.qsize()
        grid = self.grid_l
        grid.bind(minimum_height=grid.setter('height'),
                  minimum_width=grid.setter('width'))

        x = random.randint(2, 5)

        #if self.list_of_peers is not None:
        #    grid.remove_widget(self.list_of_peers)
        self.grid_l.clear_widgets()

        self.list_of_peers = GridLayout(cols=1, row_default_height=40,
                                        row_force_default=False)
        self.list_of_peers.bind(minimum_height=grid.setter('height'),
                                minimum_width=grid.setter('width'))
        print(socket.gethostbyname(socket.getfqdn()))
        for i in string_list:
                btn1 = Button(size_hint=(1, None))
                btn1.text = str(i)
                #btn1.bind(on_release=partial(self.btn1_pressed, result))
                self.list_of_peers.add_widget(btn1)

        grid.add_widget(self.list_of_peers)

    def btn1_pressed(self, result, *args):
        new_text = result
        self.top_lbl.text = new_text

    def btn2_pressed(self, *args):
        self.grid_l.clear_widgets()
        #pass


class PongApp(App):

    def build(self):

        my_app = Pong()
        queue = Queue()

        my_app.queue = queue
        Communicator(my_app.search_btn_pressed).start_all()

        return my_app

if __name__ == '__main__':
    App = PongApp().run()

和pong.kv:

#:kivy 1.7.2

<Pong>:
    scroll_view: scrollviewID
    top_lbl: lblID
    grid_l: gridlayoutID
    AnchorLayout:
        size_hint: 1, .1
        pos_hint: {'x': 0, 'y': .9}
        anchor_x: 'center'
        anchor_y: 'center'
        Label:
            id: lblID
            text: 'This is the app..'
    Button:
        size_hint: 1, .1
        pos_hint: {'x': 0, 'y': .8}
        text: 'Refresh?'
        #on_release: root.search_btn_pressed()

    ScrollView:
        id: scrollviewID
        orientation: 'vertical'
        pos_hint: {'x': 0, 'y': 0}
        size_hint: 1, .8
        bar_width: '8dp'
        GridLayout:
            id: gridlayoutID
            cols: 1
            size_hint: 1, None
            row_default_height: 40
            row_force_default: False

我跑了“ ./distribute.sh -m” openssl pil kivy“”然后是“ ./build.py --dir〜/ Desktop / MyProject / --package org.test.florin --name” ShareAll“ --version 0.0.1 --permission已安装INTERNET调试“

这会将应用程序带到我的手机上,但是当我启动它时,它崩溃了。我想念什么吗?不知道如何解决任何错误。

这是我第一次使用kivy(或Android)

这是adb logcat http://pastebin.com/embed_js.php?i=28KaFM79

不知道为什么这么大..

激进的

I / python(16193):找不到main.pyo /main.py。

这是文件中的错误(您可以通过greppingpython或使用adb自己的语法来查看与kivy相关的行)。

那么...您的主文件名为main.py吗?如果是这样,则由于某种原因未将其包含在内。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android应用程序在setText上崩溃

来自分类Dev

Android上的TabHost使应用程序崩溃

来自分类Dev

Android应用程序在setOnItemSelectedListener上崩溃

来自分类Dev

应用程序仅在android 4.4.2上崩溃

来自分类Dev

本机应用程序在Android L上崩溃

来自分类Dev

Android应用程序在Typeface.createFromAsset上崩溃

来自分类Dev

本机应用程序在Android L上崩溃

来自分类Dev

HttpPost在Android崩溃的应用程序上

来自分类Dev

Android setOnClickListener使我的应用程序在AVD上崩溃

来自分类Dev

Google Map在Android应用程序上崩溃

来自分类Dev

Android:应用程序在关闭后会在onTaskCompleted上崩溃

来自分类Dev

使用Google Map的Android应用程序在设备上崩溃

来自分类Dev

Android应用程序在Typeface.createFromAsset上崩溃

来自分类Dev

在Android上以Kivy格式保存应用程序数据

来自分类Dev

Kivy应用在Android上崩溃

来自分类Dev

Kivy Android Sqlite3 fts应用程序崩溃,出现“无此模块”错误

来自分类Dev

KitKat上的应用程序崩溃

来自分类Dev

HttpLoggingInterceptor上的应用程序崩溃

来自分类Dev

Rails应用程序在Heroku上崩溃

来自分类Dev

iPad上的UIScrollView崩溃应用程序

来自分类Dev

应用程序在Droid X上崩溃

来自分类Dev

应用程序在findViewById()上崩溃

来自分类Dev

应用程序仅在设备上崩溃

来自分类Dev

应用程序在if语句上崩溃

来自分类Dev

应用程序在 viewWillDisappear() 上随机崩溃

来自分类Dev

应用程序在图像选择上崩溃

来自分类Dev

应用程序在 isHidden 属性上崩溃

来自分类Dev

Android上的Kivy:即使最小化应用程序,也可以保持Kivy时钟运行

来自分类Dev

Android应用程序在简单应用程序中崩溃

Related 相关文章

热门标签

归档