SampleSyncAdapter断点不起作用

时间:2011-12-19 09:44:02

标签: android debugging sample android-syncadapter

我正在使用Eclipse来了解SampleSyncAdapter示例的工作原理。我不能让我的断点工作。我在多个位置设置了一个断点但没有被击中。例如,AuthenticatorActivity.onCreate()永远不会被调用。谁知道为什么?

感谢。

6 个答案:

答案 0 :(得分:22)

实际上,同步适配器在配置它的过程中运行。文档建议设置android:process =“:sync”,但这只是一个建议。对于调试,您始终可以删除此行。

对于Android Studio + Gradle,您可以考虑在src / debug /中添加清单的调试版本。事实证明,Gradle插件无法仅仅在android:process属性中合并,因此您需要分别在src / release / AndroidManifest.xml和src / debug / AndroidManifest.xml中定义服务和提供程序,这样就不会发生合并冲突。

答案 1 :(得分:13)

SyncAdapter执行线程发生在生成的后台进程中,而不是在应用程序本身的进程中,这就是你附加了java调试器的过程。

简单而丑陋的方式:log()是你的朋友。

更好的方法:首先查看Debugging a service,然后找出是否需要针对这种情况进行调整。

答案 2 :(得分:2)

我遇到了这个问题,解决方案非常简单。如前所述,SyncAdapter在不同的线程上运行,因此您需要将调试器指向此线程。 在Android Studio上,您可以在SyncAdapter类中添加(代码如下):

android.os.Debug.waitForDebugger();

当您调试应用时,同步适配器服务无法自动运行,因此您必须启动它然后定位该过程。

将调试程序附加到Android进程(它是绿色错误旁边的图标)

应该可以正常工作

答案 3 :(得分:0)

关注@Eric Woodruff的回答我得到了这个想法,我分享给那些想要在Eclipse中专门用于同步适配器的调试会话的人:  1.切换到DDMS透视图  2.在设备/仿真器进程中找到:synch(见图)  3.然后单击绿色错误按钮(调试所选过程:如果它的源项目存在并在工作区中打开) enter image description here

这对我来说很好,并给我一个更现实的观点: enter image description here

答案 4 :(得分:0)

android:process=":sync"

正如其他答案中给出的那样,效果很好。

最重要的是,如果您对ContentResolver.requestSync(mAccount,AUTHORITY,settingsBundle)的调用有任何问题,您的服务将不会被调用而不会抛出任何错误。 您需要仔细检查Authority字符串是否与清单和xml以及java代码匹配。此外,使用正确的帐户类型正确创建了Account对象,并使用以下方法将其添加到AccountManager中:

accountManager.addAccountExplicitly(newAccount, null, null)

(变量名以官方android教程here命名:

答案 5 :(得分:0)

检查了几个答案后,这对我有用

  1. 在清单中带有:sync的标记过程

                                                         

  2. 以调试模式运行

  3. 将断点放置在所需位置

  4. 在调试过程中,按“将调试器附加到Android进程”

Attach Debugger to Android process

  1. 一次激活同步-如果您的同步适配器已与某项(例如联系人)同步,则可以转到设置/帐户和备份/帐户/您的帐户/同步帐户,然后按“立即同步”以进行激活。

  2. 首次激活同步时,您将在“选择进程”窗口中看到您的包名称:同步。选择它,然后按确定

  3. 下次激活同步时,它将转到您的断点