android - Using C/C++ Library on Android
问题描述
I have coded a library that provides some function add, sub, divide, multi by c/c++ programming language. It's built to library.so by using Android NDK. So now, I want to call these function of library by using Android. I want to as How I can do ?
Thank.
解决方案
NDK 包
Android Studio 仅包含默认工具和 SDK,因此需要单独下载和安装 NDK 包。有两种方法可以做到这一点。第一个也是最简单的是 SDK 工具选项卡中的自动安装选项。这是一个很大的下载 (~1GB),所以请确保有良好的互联网连接和/或耐心。
第二种方法是从NDK 下载页面手动下载 NDK 。由于下载大小较小(<.5 GB),这可以节省一些时间,但需要进行一些设置。为您的平台下载适当的 NDK 包并按照安装说明进行操作。您可以将提取的包放在您想要的任何位置,但请记住此位置,因为您稍后将需要它。
你好世界
让我们运行一个测试项目,看看 NDK 安装是否有效。NDK 包文件夹包含示例,但如果没有额外的配置,它们似乎无法在 Android Studio 中开箱即用。相反,我们将导入从欢迎屏幕工作的示例。这些来自 GitHub 的 NDK 示例也可以直接下载或克隆。此示例集合与最新版本的 Android Studio 具有更好的兼容性。
选择导入 Android 代码示例并在搜索框中输入 hello 以过滤列表。从 Ndk 类别下的过滤列表中选择 Hello JNI。单击下一步以编辑应用程序名称和项目位置,然后单击完成。
JNI
在代码加载完毕并且 Gradle 同步之后,我们来看看生成的项目结构。您可能已经注意到项目名称中的差异。为什么叫 HelloJNI 而不是 HelloNDK?什么是“JNI”,它与“NDK”有何不同?“Java Native Interface”是一个框架,它使 Java 应用程序能够与本机代码进行交互。JNI 和 NDK 协同工作,为 Android 应用程序提供原生支持。NDK 是 Android 框架的一部分,而 JNI 可用于任何 Java 应用程序,而不仅仅是 Android 应用程序。
项目内部是一个名为 jni 的文件夹,其中包含应用程序的所有本机 C 或 C++ 源代码。JNI 提供了双向接口。C/C++代码能够调用Java代码,包括标准的Android库,Java代码能够调用C/C++代码中定义的native函数。本机代码由与 Java 代码相同的沙箱和安全规则管理,因此应用程序不会完全不受限制地访问硬件。有关 JNI 的更详细讨论,请阅读Android 开发者网站上的 JNI 文章。
推荐阅读
- mysql - 不使用TRIGGER约束MySQL限制年龄
- c# - C# 多线程 GameOverlay.Drawing.Graphics
- php - 在 LAMP 上触发预定的电子邮件或 SMS
- reactjs - 使用 reactjs 禁用或激活按钮
- flutter - Flutter中如何在两个页面上实现动画textField
- ios - Flutter -ios - pod install gRPC-C++ sed ssl 问题
- javascript - 在 Java Script 上找到我自己的公共 IP 地址?
- python - 为什么openCV“阻止”我的python脚本?
- python - 在显示面上管理多个 Tkinter Windows 的大小
- php - 如何在 Eloquent 中加入关系?