如何使用 Android App Widget 进行调试?

Posted

技术标签:

【中文标题】如何使用 Android App Widget 进行调试?【英文标题】:How to debug with Android App Widget? 【发布时间】:2013-01-18 09:01:36 【问题描述】:

对于普通的Activity,我可以设置一些断点,在Eclipse中点击F11进行调试。 但是,当我开发应用程序小部件时它不起作用。那么,我该如何调试呢?

【问题讨论】:

这个链接可能有用tech.shantanugoel.com/2010/06/14/… @StarsSky 我认为您的评论是问题的正确答案,也许您应该将其作为答案重新发布,以便 jjLin 可以接受? 【参考方案1】:

Here你可以找到一个很好的答案:

调试您的小部件代码所需的一切几乎与您对普通应用程序所做的相同。只需按照以下步骤操作:

1. 在 Eclipse 菜单上按“调试”(或“运行”似乎无关紧要)

2. 将小部件 apk 同步并安装到您的模拟器/设备后,将您的 Eclipse 工作区切换到 DDMS 模式。您可以通过点击右上角的“DDMS”按钮来执行此操作,或者如果找不到它,请转到“Window->Open Perspective->DDMS”。

3. 从显示的进程列表中选择小部件的进程名称。默认情况下,此列表显示在 DDMS 窗口的左上方。 (见下面的截图)。如果您在列表中看不到小部件的进程名称,则可能是小部件尚未添加到主屏幕。所以,这样做吧。

4.按下进程列表上方的绿色调试按钮(见下方截图)

5. 就是这样。现在,如果您在代码中放置了一个断点,请执行一些执行该代码的操作。

【讨论】:

谢谢,但我的 Eclipse 停止调试(约 30 秒后),好像进程已终止。即使在我单击小部件后,DDMS 也仅显示 mainactivity 进程而不显示小部件进程。 可以看到widget进程,但是看不到绿色的调试按钮:( android studio中怎么做? 您提供的链接已损坏。这是正确的链接:shantanugoel.com/2010/06/13/how-to-debug-android-widgets 按运行/调试不起作用,因为未找到默认活动【参考方案2】:

我假设“App Widget”是指用户可以通过长按背景壁纸来添加到主屏幕的小部件?

如果您的 AndroidManifest.xml 文件设置正确,您就可以像调试任何其他 Android 应用程序一样调试这些小部件。

但请注意,您需要先将小部件添加到主屏幕。

完成此操作后,您应该会在 Eclipse 的 DDMS 模式透视图中看到您的小部件进程。您可以附加调试器并调试您的代码。

【讨论】:

【参考方案3】:

Android Studio

我没有找到显式调试 App Widget 的“结构化”方式。

我的解决方法:

确保您的项目中有一个 Activity - 通常您至少会有一个 Setting Activity,但如果没有,只需创建一个不需要做任何事情的虚拟 Activity。

在您的 Manifest 中,添加此 Activity 并将其标记为启动 Activity:

<activity android:name=".activity.SettingActivity"
    android:label="@string/setting_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

现在您应该将断点放置在您想要调试的任何位置,并使用 按钮启动您的应用程序。 现在整个应用程序的代码都在调试会话下,调试器将在任何断点处停止,包括小部件。

注意:在生产之前,如果您不打算直接从设备启动板启动此 Activity,请从清单中删除启动意图过滤器

        <activity android:name=".activity.**SettingActivity**"
        android:label="@string/setting_name">
        <!--<intent-filter>-->
            <!--<action android:name="android.intent.action.MAIN"/>-->
            <!--<category android:name="android.intent.category.LAUNCHER"/>-->
        <!--</intent-filter>-->
    </activity>

【讨论】:

【参考方案4】:

Android 工作室

其实很简单。只需在 extends AppWidgetProvider 的类中设置调试点。

从这里...

    启动您的模拟器通过 USB 数据线连接您的手机 像往常一样选择Debug图标。 等待您的应用启动 转到您的主屏幕 添加您的小部件转到已显示小部件的屏幕

从这里开始,如果您在onUpdate(...) 方法中有一个断点,那么您的小部件调试将开始

日食

StarsSky的回答

【讨论】:

此方案不允许用户在应用尚未启动的情况下调试其widget... 它没有帮助,也没有在答案中添加任何内容来说“它真的很简单” 这些答案在我的情况下都不起作用,我的情况可能有所不同,我的代码是 Kotlin,Widget 有一个设置活动。我应该问一个新问题吗?

以上是关于如何使用 Android App Widget 进行调试?的主要内容,如果未能解决你的问题,请参考以下文章

Android开发之创建App Wiget和更新Widget内容

如何把应用程序app编译进android系统

Android 之窗口小部件详解--App Widget

Android App Widget - 更新中的 AsyncTask API 调用

如何把应用程序app编译进android系统

Android- Widget (应用微件/小组件/插件) 使用介绍