kivy + gspread在试用Android手机时崩溃,但在我的笔记本电脑上工作正常

时间:2017-03-30 05:23:32

标签: kivy gspread oauth2client

我在一个非常简单的kivy应用程序中使用gspread和oauth2client,我只想更新我的Google工作表中的一个单元格。代码在我的电脑上运行得很好但是当我使用buildozer构建apk文件并将其上传到我的Android手机时它会崩溃。 gspread和kivy之间有没有冲突????代码如下所示;

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
import gspread
from oauth2client.service_account import ServiceAccountCredentials

scope = ['https://spreadsheets.google.com/feeds']
creds = ServiceAccountCredentials.from_json_keyfile_name('cl_sec.json', scope)
client = gspread.authorize(creds)
sheet = client.open('project2').sheet1

class bxlayout(BoxLayout):
    def __init__(self, **kwargs):
        super(bxlayout, self).__init__(**kwargs)

        btn1 = Button(text='ON')
        btn1.bind(on_press=self.clk1)
        self.add_widget(btn1)
        btn2 = Button(text='OFF')
        btn2.bind(on_press=self.clk2)
        self.add_widget(btn2)

    def clk1(self, obj):
        self.background_color = [0,0,1,1]
        sheet.update_cell(2,1, '1')
        self.background_color = [1,1,1,1]

    def clk2(self, obj):
        self.background_color = [0,0,1,1]
        sheet.update_cell(2,1, '0')
        self.background_color = [1,1,1,1]

class appfile(App):
    def build(self):
        ml = bxlayout()
        return ml

if __name__ == "__main__":
    appfile().run()

1 个答案:

答案 0 :(得分:0)

如果没有logcat这样的任何问题,那么问题就是没有,因为:

  • 代码显然有用(笔记本电脑)
  • 包装显然也是(你可以安装并启动应用程序)

正如Eugene建议的那样,问题最有可能是你不在buildozer的{​​{1}}文件中包含该包 - 重要部分如下所示:

.spec

并且您要使用第三方库,必须在该特定行中提及其名称:

requirements = kivy

或使用类似的requirements = kivy,gspread 控制台切换。

根据它是纯python还是C-extension,它会在包装过程中产生或不会产生错误。如果它是扩展名,则需要为其编写recipe