Android NDK限制?

Kai*_*aan 15 c permissions android native android-ndk

我对Android平台上本机代码的限制有疑问.

基本上我已经开发了一个本机C代码库,它使用UDP套接字进行SIP/RTP,并使用OpenAL进行音频录制/回放 - 基本上是整个应用程序.我们的想法是尽可能使用本机C代码而不是Java代码.我想这样做是因为我将在其他平台上使用它.

我的问题很简单 - 是否可以只使用Java进行GUI,然后使用本机代码进行所有处理?当我的本机代码尝试创建套接字,绑定它,录制音频,播放它等时会发生什么 - 因为它是本机代码,我是否需要为它设置权限(例如应用程序访问麦克风和诸如此类)或将它只是绕过这个东西,因为它的本机代码?原生代码可以像在PC上那样在Android上做任何想做的事吗?

对不起,如果不清楚; 告诉我,我会尽力改进它

谢谢

Ebo*_*ike 4

您可以在本机代码中做几乎任何您想做的事情,但真正支持的唯一操作系统级别的东西是 OpenGL、OpenSL 和一些数字处理库(压缩、数学等)。

但是,您可以随时使用 JNI 来调用 Java 方法,因此您可以使用标准 Android API 进行网络(诸如Socket等类)。显然,由于调用是通过 Java API 进行的,因此所有正常的 Android 权限都适用(如android.permission.INTERNET)。

编辑:正如评论中所述,属于 NDK 一部分的标准库确实支持套接字。

  • @EboMike,您关于需要 jni 的套接字的说法是错误的。与大多数其他标准 unixism 一样,它们可以通过本机代码完成。它主要是 UI 和其他需要 jni 的 Android 服务内容。 (5认同)