0

カスタム システム サービスを AOSP に追加しました。Activity.java クラスで自分のサービスを利用したいと思い、startActivityForResult() メソッドにいくつかの変更を加えたいと考えました。PackageManagerService のインスタンスを作成するのと同じ方法です。しかし、何らかの理由でこれを実行できません。logcat から次のエラーが表示されます。

***********************************************
F/SystemServer(  500): BOOT FAILURE starting Input Manager Service
F/SystemServer(  500): java.lang.RuntimeException: Unable to get provider com.android.providers.settings.SettingsProvider: java.lang.ClassNotFoundException: com.android.providers.settings.SettingsProvider
F/SystemServer(  500):  at android.app.ActivityThread.installProvider(ActivityThread.java:4201)
F/SystemServer(  500):  at android.app.ActivityThread.getProvider(ActivityThread.java:4010)
F/SystemServer(  500):  at android.app.ActivityThread.acquireProvider(ActivityThread.java:4026)
F/SystemServer(  500):  at android.app.ContextImpl$ApplicationContentResolver.acquireProvider(ContextImpl.java:1612)
F/SystemServer(  500):  at android.content.ContentResolver.acquireProvider(ContentResolver.java:948)
F/SystemServer(  500):  at android.provider.Settings$NameValueCache.getString(Settings.java:701)
F/SystemServer(  500):  at android.provider.Settings$Secure.getString(Settings.java:2207)
F/SystemServer(  500):  at com.android.server.InputMethodManagerService.buildInputMethodListLocked(InputMethodManagerService.java:1966)
F/SystemServer(  500):  at com.android.server.InputMethodManagerService.(InputMethodManagerService.java:556)
F/SystemServer(  500):  at com.android.server.ServerThread.run(SystemServer.java:273)
F/SystemServer(  500): Caused by: java.lang.ClassNotFoundException: com.android.providers.settings.SettingsProvider
F/SystemServer(  500):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
F/SystemServer(  500):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
F/SystemServer(  500):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
F/SystemServer(  500):  at android.app.ActivityThread.installProvider(ActivityThread.java:4186)
F/SystemServer(  500):  ... 9 more
I/SystemServer(  500): Accessibility Manager
W/SystemServer(  500): ***********************************************
F/SystemServer(  500): BOOT FAILURE making display ready

Activity.java でサービスのインスタンスを作成する方法。また、Activity.java に systemReady() のようなメソッドがありますか。PackageManagerService にそのような種類のメソッドがあることは知っていますが、それは Activity ではないサービスです。そのため、どのように確認するのが最善なのだろうかと考えています。任意の考えをいただければ幸いです

4

1 に答える 1

0

これは、SettingsProvider.apk の dex opt 署名の不一致が原因でした。テスト目的で、以下の環境変数を設定してこのチェックを無効にすることで、この問題を回避できました。

エクスポート WITH_DEXPREOPT=false エクスポート DISABLE_DEXPREOPT=true

礼儀: https://groups.google.com/forum/#!msg/android-building/vJCkg8Yq9Ic/mgev8ODDia4J

于 2014-08-19T00:16:30.247 に答える