Pregunta

Estoy siguiendo el SampleSyncAdapter y en el inicio, parece que mi SyncAdapter no está configurado correctamente. Se informa de un error al intentar cargar sus metadatos. ¿Cómo puedo aislar el problema? Se puede ver las otras cuentas en el sistema que registra correctamente.

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)

También nota, he tratado de fuerza de fallos de configuración para ver si podía cambiar el error de una manera que sería señalar mi error. Por desgracia, la mayoría de los errores de configuración están atrapados por el (pre) compilador.

he conseguido encontrar esta entrada Logcat después de una desinstalación / instalación que corresponde al nodo de meta-datos dentro de la AndroidManifest.xml para la entrada de servicio del Adaptador de sincronización. Puede ser una pista muy importante que estoy investigando.

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
¿Fue útil?

Solución

he encontrado! Efectivamente, ese mensaje de puesta en marcha era clave para encontrar el error. Tenía un error en mi manifiesto. Puse los nodos meta-datos dentro de la intención de filtro del adaptador de sincronización. Por lo tanto, mi meta-datos se ocultan en el interior del filtro intención. No hace falta decir que el servicio no se pudo registrar.

Ahora estoy en mi próximo error:)

Espero que esta sesión es útil a los demás.

Otros consejos

Otra forma de obtener esta excepción y el mensaje es para escribir mal el nombre de los metadatos en su manifiesto. Por ejemplo:

<meta-data
            android:name="android.cccontent.SyncAdapter"
            android:resource="@xml/syncadapter" />

donde debe estar:

<meta-data
            android:name="android.content.SyncAdapter"
            android:resource="@xml/syncadapter" />

Por lo tanto el " No android.content.SyncAdapter meta-datos " porque tenía "androide. ccc ontent.SyncAdapter" en su lugar. Un ejemplo más sutil sería "Androi d: c ontent.SyncAdapter". Ambos le emitir la excepción:

org.xmlpull.v1.XmlPullParserException: No android.content.SyncAdapter meta-data
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top