所以我创建了一个新服务并添加到 AOSP。从应用程序调用该服务时运行良好。但我想从框架代码(Source/frameworks/base/core/java/android/content/pm/PackageParser.java)内部调用服务的几个方法。
是否有一种特殊的方式我需要调用为服务创建实例才能在框架内使用它。
ITestService om = ITestService.Stub.asInterface(ServiceManager.getService("Test"));
以上是我在 PackageParser.java 中为服务创建实例的方式(当我尝试从应用程序访问它时,同样工作正常)。
以下是我从 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
就在此错误之前,我能够看到成功日志消息,说明我的服务已启动。
我刚刚在 PackageParser.java 中注释了一行,它为我的服务提供了实例,并且代码似乎可以创建 system.img
关于这个问题的任何意见都会对我有很大帮助。
先感谢您。