【问题标题】:How does Android find out native implementations without calling System.loadLibrary?Android 如何在不调用 System.loadLibrary 的情况下找出原生实现?
【发布时间】:2013-03-06 08:33:12
【问题描述】:

我正在深入研究 Android 的内核,以了解 Binder 在内核级别的工作方式以及它如何用于实现 Java 的 API。

目前我正在查看android/os/Parcel.java,有很多原生函数声明为这样的原型:

public final native int dataSize();
public final native int dataAvail();
...

但是没有System.loadLibrary所以我不知道这些原型的实现写在哪里。

我的问题与这些不同:

【问题讨论】:

    标签: java android native-methods


    【解决方案1】:

    该库不必由使用本机库的类加载。在某个地方,在某个库中,需要有一个 C 函数 Java_android_os_Parcel_dataSize()。它在哪里并不重要,它只需要在某个地方。您应该可以使用grep 找到它。

    【讨论】:

    • 我不能,“Java_android_os_Parcel_dataSize()”没有结果
    • @crazyfffan 甚至不必是这样,只是一个具有正确签名的函数,该函数以该名称在 JNI 中注册。尝试搜索“Java_android_os_Parcel_dataSize”。
    • @EJP 您好,谢谢您的回复。 “Java_android_os_Parcel_dataSize”也没有结果...
    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多