Android emulator在尝试运行BeeWare应用程序时显示黑屏

2024-05-17 05:05:40 发布

您现在位置:Python中文网/ 问答频道 /正文

问题

我在我的Linux笔记本电脑上构建了一个BeeWare应用程序。当我使用briefcase runbriefcase dev运行它时,它会按预期运行。但是,当尝试通过运行以下命令在Android模拟器中运行它时:

  1. briefcase create android
  2. briefcase build android
  3. briefcase run android

我可以得到:

  • 第一次在模拟器中运行应用程序时,顶部有一个白色屏幕,上面有一个条,给出了我的应用程序的名称;或者
  • 此后,每次我在模拟器中运行应用程序时,都会出现一个黑屏

需要注意的其他几点:

  • 我已经完成了BeeWare教程,包括在Android仿真器中运行HelloWorld应用程序,没有任何问题
  • 我在命令行中看不到任何错误消息或警告

代码

这是我的app.py文件中代码的精简版本。我很高兴根据需要发布更多的代码

import toga
from toga import Box, MainWindow
from toga.fonts import Font, SANS_SERIF, SERIF
from toga.style import Pack
from toga.style.pack import COLUMN, ROW

from sibylline.dimensions import NUMBER_OF_COLUMNS, NUMBER_OF_ROWS
from sibylline.custom_placement_menu import CustomPlacementMenu
from sibylline.recommendations_menu import RecommendationsMenu
from sibylline.mini_erebus.arrivals_manager_daughter import \
    ArrivalsManagerDaughter
from sibylline.mini_erebus.departures_manager_daughter import \
    DeparturesManagerDaughter

TITLE_FONT_SIZE = 30
STANDARD_PAD = 5

class Sibylline(toga.App):
    def __init__(self, internal=False, delete_existing=False):
        super().__init__()
        self.internal = internal
        self.delete_existing = delete_existing

    def startup(self):
        self.recs_dictionary = dict()
        self.columns = NUMBER_OF_COLUMNS
        self.rows = NUMBER_OF_ROWS
        self.arrivals_manager = ArrivalsManagerDaughter(self)
        self.departures_manager = DeparturesManagerDaughter(
                                      internal=self.internal,
                                      delete_existing=self.delete_existing)
        self.recs_menu = RecommendationsMenu()
        self.custom_placement_menu = None
        self.main_box = Box()
        self.main_box.add(self.recs_menu.display)
        self.main_window = MainWindow(title=self.formal_name)
        self.main_window.content = self.main_box
        self.demo()
        self.main_window.show()

    def add_recommendation(self, recommendation):
        self.recs_dictionary[recommendation["ticket"]] = recommendation
        self.recs_menu.renew_recs_table()

    def remove_recommendation(self, ticket):
        del self.recs_dictionary[ticket]
        self.recs_menu.renew_recs_table()

    def switch_to_custom_placement(self, recommendation):
        self.custom_placement_menu = CustomPlacementMenu(
                                         recommendation, self.rows,
                                         self.columns)
        self.main_box.remove(self.recs_menu.display)
        self.main_box.add(self.custom_placement_menu.display)

    def switch_back_to_recommendations(self):
        self.main_box.remove(self.custom_placement_menu.display)
        self.main_box.add(self.recs_menu.display)

    def demo(self):
        rec = { "ticket": 1, "epc": "epc0", "column": 0, "row": 0 }
        self.add_recommendation(rec)

def main():
    result = Sibylline(internal=True, delete_existing=True)
    return result

我想知道的是

  • 我该如何解决这个问题
  • 这可能是仿真器本身的问题,因此不是实际Android设备上会出现的问题吗
  • 浏览模拟器的日志会有帮助吗?如果是的话,我在哪里能找到它们

Tags: fromimportselfboxmaintogadefcustom