Pourquoi méta-données Pas android.content.SyncAdapter l'enregistrement de synchronisation adaptateur?

StackOverflow https://stackoverflow.com/questions/4505449

Question

Je suis la SampleSyncAdapter et au démarrage, il semble que mon SyncAdapter est pas correctement configuré. Il signale une erreur en essayant de charger ses méta-données. Comment puis-je isoler le problème? Vous pouvez voir les autres comptes dans le système qui enregistrent correctement.

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)

A noter également, je l'ai essayé de forcer une mauvaise configuration pour voir si je pouvais changer l'erreur d'une manière qui indiquerait mon défaut. Malheureusement, la plupart des erreurs de configuration sont pris par le compilateur (pré).

J'ai réussi à trouver cette entrée logcat après une désinstallation / installation qui correspond à mon noeud méta-données contenues dans la AndroidManifest.xml pour l'entrée de service de l'adaptateur Sync. Il peut être un indice très important que j'enquête.

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
Était-ce utile?

La solution

Je l'ai trouvé! Effectivement, ce message de démarrage est la clé pour trouver l'erreur. J'ai eu une erreur dans mon manifeste. Je mets les noeuds méta-données à l'intérieur du filtre à l'intention de l'adaptateur de synchronisation. Par conséquent, mes méta-données ont été cachées à l'intérieur du filtre intention. Inutile de dire que le service n'a pas pu être enregistré.

Je suis maintenant à mon prochain bug:)

J'espère que cette session est utile aux autres.

Autres conseils

Une autre façon d'obtenir cette exception et le message est à orthographier le nom dans les métadonnées dans votre manifeste. Par exemple:

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

où il devrait être:

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

D'où la " Pas android.content.SyncAdapter méta-données " parce qu'il avait "android. ccc ontent.SyncAdapter" au lieu. Un exemple plus subtil serait "Androi d: c ontent.SyncAdapter". Ces deux jetteront l'exception:

org.xmlpull.v1.XmlPullParserException: No android.content.SyncAdapter meta-data
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top