【问题标题】:Android Dragon board 820 - Add System ServiceAndroid Dragon board 820 - 添加系统服务
【发布时间】:2016-12-26 15:52:31
【问题描述】:

我正在尝试在 6.0.1 中添加 Android 系统服务。

我实现了一个添加 Android 系统服务的示例。 Android 系统构建一切正常,没有任何错误。

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

在以下部分:

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

系统找不到类。

这是设备启动日志:

art : 在先前失败的类上拒绝重新初始化 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 I SystemServer: 进入安卓 系统服务器!

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

01-01 00:58:16.356 2806 2806 艺术 : art/runtime/jni_internal.cc:497] JNI FatalError 称为:Native 注册找不到类“com/android/server/xxxService”; 中止...

我尝试了一些示例,但结果始终相同,我正在使用 msm8996 编译 Android 6.0.1。

以前有人遇到过吗?

请指教。

【问题讨论】:

    标签: android java-native-interface


    【解决方案1】:

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

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

    并将xxxService.java文件放到frameworks/base/services/core/java/com/android/server/xxx/xxxService.java中

    【讨论】:

    • 我已经看到了这个问题。这不是问题。开发板有些奇怪。尝试了以下方法:将设备保持在引导循环中(因为没有类 def),并在 frameworks/base/ 和 walla 上执行 adb sync!设备加载正常,如果启动服务! BUTTTTT 开机后,一切又失败了。启动过程中有一些我不明白的奇怪事情。
    猜你喜欢
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多