| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android Studio ndk-build 编译C生成.so文件 -> 正文阅读 |
|
[移动开发]Android Studio ndk-build 编译C生成.so文件 |
目录 4.编写Android.mk和Application.mk文件 现在的Android Studio打包so文件有两种方式,第一种是ndk-build编译项目,还有一种用CMake脚本构建项目,在这里主要介绍ndk-build的编译过程,并记录自己的调试过程。 1.下载安装ndk在下载ndk之前要安装好jdk和sdk并配置好环境,这里就不说了,自己之前是配好了的: 为了编译和调试,需要安装ndk组件,?Android 原生开发工具包 (NDK):这套工具集允许您为 Android 使用 C 和 C++ 代码,并提供众多平台库,让您可以管理原生 Activity 和访问物理设备组件,例如传感器和触摸输入。 安装过程:在打开的项目中,从菜单栏选择 File > Settings?>搜索 sdk > 选择SDK tools 点击Apply,等Finish后点击ok。 2.ndk环境配置上述方式下载的ndk一般都自动放在sdk目录下面,打开你的项目的project structure配置ndk: 由于我之前Android NDK location无法配置无法选中修改 也无法下载 Download都是灰的点不了但明明已经下载了ndk并显示完成。实际 File ——?Project Structure SDK location 依然是没有配置NDK路径。然后我就参照网上的博客手动配置了一下ndk环境: 在local.properties 中手动添加本地ndk.dir路径: 然后再打开project structure就会自动出现上述情况了。(我后来改成了sdk下的这一个路径: ndk.dir=D\:\\SDK\\ndk-bundle ) 为最外层工程目录下的gradle.properties的文件末尾加上android.useDeprecatedNdk=true这段代码(如果没有这个目录,自己新建一个),如下图所示: 上面我们把环境给配置好了,下面我们就可以写Java和C代码了 添加环境变量: 3.java和c代码编写首先新建一个java类JNIUtils.java,代码如下:我是创建在(如图)文件下的
? 然后Make Project: 完成后会在工程目录 \app\build\intermediates\javac\debug\classes\com\example\maze 下面看到自己编译后的classes文件JNIUtils.class:注意是在build\intermediates\javac下面,我之前找了好久它在哪里。 用javah命令生成头文件: 打开终端命令Terminal:输入命令:javah -d jni -classpath 自己编译后的class文件的绝对路径 例如我的: ? 按回车之后就会在main目录下生成jni文件夹,同时生成.h文件,如下图所示: 现在我们在jni目录下新建一个 native-lib.c 的 c 文件,内容如下:
4.编写Android.mk和Application.mk文件接着在jni文件夹下新建Android.mk和Application.mk文件。 Android.mk:
Application.mk:
然后在终端进入到jni目录,输入指令 ndk-build,就会生成相应的so文件。 然后需要设定一下jniLibs的文件路径,在app的build.gradle文件中Android{}内添加如下代码,其中'src/main/libs'为libnative-jni.so文件所在的路径
5.结果测试最后在我们来测试一下,只需要在MainActivity中调用一下C就可以了,代码如下:
?然后运行: |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:14:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |