为什么没有android.content.syncadapter meta-data注册同步适配器?
-
12-10-2019 - |
题
我正在遵循SampleSyncadapter并在启动时,看来我的Syncadapter未正确配置。它报告了试图加载其元数据的错误。我如何隔离问题?您可以在系统中看到正确注册的其他帐户。
logcat:
12-21 17:10:50.667 W/PackageManager( 121): Unable to load service info ResolveInfo{4605dcd0 com.myapp.syncadapter.MySyncAdapter p=0 o=0 m=0x108000}
12-21 17:10:50.667 W/PackageManager( 121): org.xmlpull.v1.XmlPullParserException: No android.content.SyncAdapter meta-data
12-21 17:10:50.667 W/PackageManager( 121): at android.content.pm.RegisteredServicesCache.parseServiceInfo(RegisteredServicesCache.java:391)
12-21 17:10:50.667 W/PackageManager( 121): at android.content.pm.RegisteredServicesCache.generateServicesMap(RegisteredServicesCache.java:260)
12-21 17:10:50.667 W/PackageManager( 121): at android.content.pm.RegisteredServicesCache$1.onReceive(RegisteredServicesCache.java:110)
12-21 17:10:50.667 W/PackageManager( 121): at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:892)
12-21 17:10:50.667 W/PackageManager( 121): at android.os.Handler.handleCallback(Handler.java:587)
12-21 17:10:50.667 W/PackageManager( 121): at android.os.Handler.dispatchMessage(Handler.java:92)
12-21 17:10:50.667 W/PackageManager( 121): at android.os.Looper.loop(Looper.java:123)
12-21 17:10:50.667 W/PackageManager( 121): at com.android.server.ServerThread.run(SystemServer.java:570)
12-21 17:10:50.747 D/Sources ( 294): Creating external source for type=com.skype.contacts.sync, packageName=com.skype.raider
12-21 17:10:50.747 D/Sources ( 294): Creating external source for type=com.twitter.android.auth.login, packageName=com.twitter.android
12-21 17:10:50.747 D/Sources ( 294): Creating external source for type=com.example.android.samplesync, packageName=com.example.android.samplesync
12-21 17:10:50.747 W/PackageManager( 121): Unable to load service info ResolveInfo{460504b0 com.myapp.syncadapter.MySyncAdapter p=0 o=0 m=0x108000}
12-21 17:10:50.747 W/PackageManager( 121): org.xmlpull.v1.XmlPullParserException: No android.content.SyncAdapter meta-data
12-21 17:10:50.747 W/PackageManager( 121): at android.content.pm.RegisteredServicesCache.parseServiceInfo(RegisteredServicesCache.java:391)
12-21 17:10:50.747 W/PackageManager( 121): at android.content.pm.RegisteredServicesCache.generateServicesMap(RegisteredServicesCache.java:260)
12-21 17:10:50.747 W/PackageManager( 121): at android.content.pm.RegisteredServicesCache$1.onReceive(RegisteredServicesCache.java:110)
12-21 17:10:50.747 W/PackageManager( 121): at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:892)
12-21 17:10:50.747 W/PackageManager( 121): at android.os.Handler.handleCallback(Handler.java:587)
12-21 17:10:50.747 W/PackageManager( 121): at android.os.Handler.dispatchMessage(Handler.java:92)
12-21 17:10:50.747 W/PackageManager( 121): at android.os.Looper.loop(Looper.java:123)
12-21 17:10:50.747 W/PackageManager( 121): at com.android.server.ServerThread.run(SystemServer.java:570)
另请注意,我试图强迫错误的配置,以查看是否可以以指出我的缺陷的方式更改错误。不幸的是,大多数错误配置被(PRE)编译器捕获。
我设法在卸载/安装后找到了此logCat条目,该输出/安装与我的元数据符号相对应的是我的meta-data节点,用于同步适配器的服务条目。我正在调查这可能是一个非常重要的线索。
12-21 18:46:36.026 D/AndroidRuntime(28641): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
12-21 18:46:36.026 D/AndroidRuntime(28641): CheckJNI is OFF
12-21 18:46:36.106 D/AndroidRuntime(28641): --- registering native functions ---
12-21 18:46:36.836 D/PackageParser( 121): Scanning package: /data/app/vmdl13904.tmp
12-21 18:46:36.856 W/PackageParser( 121): Unknown element under <intent-filter>: meta-data at /data/app/vmdl13904.tmp Binary XML file line #254
12-21 18:46:36.856 W/PackageParser( 121): Unknown element under <intent-filter>: meta-data at /data/app/vmdl13904.tmp Binary XML file line #257
12-21 18:46:37.166 D/PackageManager( 121): Scanning package com.myapp
解决方案
我找到了!果然,该启动消息是找到错误的关键。我的清单上有一个错误。我将元数据节点放在同步适配器的意图过滤器中。因此,我的元数据被隐藏在意图过滤器中。不用说,无法注册该服务。
我现在要解决下一个错误:)
我希望这次会议对他人很有用。
其他提示
获得此例外和消息的另一种方法是在您的清单中拼写元数据中的名称。例如:
<meta-data
android:name="android.cccontent.SyncAdapter"
android:resource="@xml/syncadapter" />
应该在哪里:
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/syncadapter" />
因此no android.content.Syncadapter meta-data“因为它有” Android。CCContent.syncadapter“而是。一个更微妙的例子是”D:content.syncadapter”。这两个都会抛出例外:
org.xmlpull.v1.XmlPullParserException: No android.content.SyncAdapter meta-data
不隶属于 StackOverflow