なぜandroid.content.syncadapter meta-data登録sync-adapterを登録しないのですか?
-
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)コンパイラによって捕らえられています。
Sync AdapterのサービスエントリのAndroidManifest.xml内のメタデータノードに対応するアンインストール/インストールの後、このログキャットエントリを見つけることができました。それは私が調査している非常に重要な手がかりかもしれません。
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
解決
見つけた!案の定、その起動メッセージはエラーを見つけるための鍵でした。マニフェストに間違いがありました。 Syncアダプターの意図フィルター内にメタデータノードを配置します。したがって、私のメタデータは意図フィルターの中に隠されていました。言うまでもなく、サービスは登録できませんでした。
私は今、私の次のバグに進んでいます:)
このセッションが他の人に役立つことを願っています。
他のヒント
この例外とメッセージを取得する別の方法は、マニフェストのメタデータの名前を間違えたことです。例えば:
<meta-data
android:name="android.cccontent.SyncAdapter"
android:resource="@xml/syncadapter" />
それがどこにあるべきか:
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/syncadapter" />
従って "android.content.syncadapter meta-dataなし「それがあったから」Android。CCContent.syncadapter "代わりに。もっと微妙な例は「androi」ですD:content.syncadapter "。これらの両方が例外をスローします。
org.xmlpull.v1.XmlPullParserException: No android.content.SyncAdapter meta-data