从您的应用调用 Android 的 cpp 代码

Calling Android's cpp code from your app

我想从我自己的应用程序中调用 android 源中 com_android_bluetooth_hid.cpp 中提供的函数。目标 Android 版本为 >=4.4 和 <=5.x。我了解 JNI,可以编译我自己的代码并从我自己的应用程序调用。

是否可以从我的应用程序调用 android 的库?如何

此外,要调用该特定 cpp 文件中的函数,蓝牙和 BLUETOOTH_ADMIN 权限是否足够或是否需要其他权限(其他权限或 root)?

调用 Android 的 CPP 代码最简洁的方法通常是将相关部分复制到您的存储库并作为应用程序的一部分进行构建。按照这种方法,您的应用程序将仅调用 public API - Java 或 C/C++。

但如果此代码必须 运行 具有特殊权限,作为系统服务,如媒体服务器或蓝牙堆栈,这可能不相关。

恐怕您想要 运行 的代码属于第二类,因此 none 的可用技巧将无济于事。

另一方面,自定义 ROM 可能是您正在寻找的解决方案。您可能不需要伪造一个完整的系统。使用已获得 root 权限的设备并将蓝牙服务替换为您的自定义服务可能就足够了。

我仍然建议您为服务提供缺少的回调,而不是直接从您的应用程序调用函数:您最好不要混合用户-space 应用程序和系统服务之间的上下文。