我在一个非常简单的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()
答案 0 :(得分:0)
如果没有logcat
这样的任何问题,那么问题就是没有,因为:
正如Eugene建议的那样,问题最有可能是你不在buildozer
的{{1}}文件中包含该包 - 重要部分如下所示:
.spec
并且您要使用第三方库,必须在该特定行中提及其名称:
requirements = kivy
或使用类似的requirements = kivy,gspread
控制台切换。
根据它是纯python还是C-extension,它会在包装过程中产生或不会产生错误。如果它是扩展名,则需要为其编写recipe。