2016-08-19 47 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