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 签名不匹配出于测试目的,我可以通过设置以下 env 变量来禁用此检查来解决此问题:

导出 WITH_DEXPREOPT=false 导出 DISABLE_DEXPREOPT=true

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

于 2014-08-19T00:16:30.247 回答