如何在Android应用小部件中进行调试?

16

对于普通的Activity,我可以设置一些断点并在Eclipse中单击F11进行调试。但是,在开发应用程序小部件时无法使用此方法。那么,我该如何调试?


1
也许这个链接有用:http://tech.shantanugoel.com/2010/06/14/how-to-debug-android-widgets.html - StarsSky
@StarsSky 我认为你的评论是这个问题的正确答案,也许你应该把它重新发布为一个回答,以便 jjLin 可以接受它? - Jose_GD
4个回答

10
这里你可以找到一个好的答案:
调试Android小部件代码所需的步骤与普通应用程序基本相同。只需按照以下步骤操作即可: 1. 在Eclipse菜单上按“debug”(或“run”,似乎没有问题)。 2. 一旦小部件apk在模拟器/设备上同步并安装完成,将Eclipse工作区切换到DDMS模式。您可以通过按右上角标有“DDMS”标签的按钮来执行此操作,或者如果您找不到该按钮,则可以通过转到“Window->Open Perspective->DDMS”来进行操作。 3. 从显示的进程列表中选择小部件的进程名称。默认情况下,此列表出现在DDMS窗口的左上方。(请参见下面的屏幕截图)。如果您在列表中看不到小部件的进程名称,则可能是因为尚未将小部件添加到主屏幕。所以,请这样做。 4. 按进程列表上方的绿色调试按钮。(请参见下面的屏幕截图) 5. 就这样。现在,如果您在代码中放置了断点,请执行执行该代码片段的操作。 enter image description here

2
谢谢,但我的 Eclipse 在调试约 30 秒后就停止了(就像进程被终止一样)。即使我点击小部件,DDMS 也只显示主 Activity 进程,而不是小部件进程。 - hB0
我可以看到小部件的进程,但是我看不到绿色的调试按钮:( - vikifor
1
如何在Android Studio中实现? - natsumiyu
您提供的链接已经失效。这是正确的链接:https://shantanugoel.com/2010/06/13/how-to-debug-android-widgets/ - Ahmed Alnabhan
按下运行/调试按钮无法工作,因为找不到默认活动。 - Richard Barraclough

1

Android Studio

我没有找到一种“结构化”的方式来显式地调试一个应用小部件。

我的解决方法:

确保您的项目中有一个Activity - 通常您至少会有一个设置Activity,但如果没有,只需创建一个不需要执行任何操作的虚拟Activity即可。

在您的清单文件中添加此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>

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

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

        <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>

1
我假设你所说的“App Widget”是指用户长按背景墙纸添加到他们的主屏幕上的小部件?
如果你的AndroidManifest.xml文件设置正确,你可以像调试任何其他Android应用程序一样调试这些小部件。
然而,请注意你需要首先将你的小部件添加到主屏幕。
完成后,在Eclipse的DDMS模式透视图下,你应该能够看到列出你的小部件进程。你可以附加调试器并调试你的代码。

-1

Android Studio

这很简单。只需在您的类中设置调试点,该类extends AppWidgetProvider

从这里开始...

  1. 启动模拟器通过USB电缆连接手机
  2. 像平常一样选择Debug图标。
  3. 等待应用程序启动
  4. 转到主屏幕
  5. 添加您的小部件转到已经有您的小部件的屏幕

从这一点开始,如果您在onUpdate(...)方法中设置了断点,则您的小部件调试将开始

Eclipse

StarsSky的答案


这个解决方案不允许用户在应用程序尚未启动时调试其小部件... - Virthuss
2
这并没有帮助,也没有为答案增添任何内容,说“这真的很简单”是毫无意义的。 - flurbius
这些答案都不适用于我的情况,可能是因为我的情况有所不同,我的代码是 Kotlin,Widget 有一个设置活动。我应该提出一个新问题吗? - flurbius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接