2016-08-19 45 views
0

我想在6.0.1中添加一个Android系统服务。Android龙板820 - 添加系统服务

我实现了一个添加Android系统服务的例子。 Android系统可以毫无错误地构建一切正常。

但是当我尝试注册JNI类方法时,我总是会在运行时遇到异常。

在下面的部分:

int register_android_server_xxxService(JNIEnv *env) 
{ 
    return jniRegisterNativeMethods(env, "com/android/server/xxxService", 
    method_table, NELEM(method_table)); 
}; 

系统无法找到类。

的是设备启动日志:

艺术:先前失败的类 拒绝重新初始化的java.lang.Class

01-01 00:58:16.319 2806 2806我的艺术:拒绝重新初始化 先前失败的类java.lang.Class

01-01 00:58:16.334 2806 2806 W SystemServer:系统时钟在 1970;设置为1970.

01-01 00:58:16.335 2806 2806我系统服务器:输入了Android 系统服务器!

01-01 00:58:16.355 2806 2806我艺术:在 以前失败的一流拒绝重新初始化的java.lang.Class

01-01 00:58:16.356 2806 2806˚F艺术: art/runtime/jni_internal.cc:497] JNI致命错误调用:原生 注册无法找到类'com/android/server/xxxService'; aborting ...

我试过几个例子,但总是相同的结果,我正在用msm8996编译Android 6.0.1。

以前是否发生过任何人?

请指教。

回答

0

我有一个类似的错误,这是由于没有把java文件放在正确的位置并正确定义路径。你可以试试这个。

int register_android_server_xxxService(JNIEnv *env) 
{ 
return jniRegisterNativeMethods(env, "com/android/server/xxx/xxxService", 
method_table, NELEM(method_table)); 
}; 

,放在框架的xxxService.java文件/基/服务/核心/ JAVA/COM /安卓/服务器/ XXX/xxxService.java

+0

我已经看到了这个问题。它不是问题。开发板上有一些奇怪的东西。尝试以下操作:将设备保持在启动循环(cuz of no class def),并在frameworks/base /和walla上执行adb sync。设备加载好了,如果启动服务! BUTTTTT引导后,一切都失败了。有一些奇怪的事情,启动过程,我不明白。 – user3429745