android studio使用ndk,jni随记
1.下载ndk(会下载到sdk目录下)
2.配置
3.配置build.gradle(app)
android { defaultConfig { ndk { moduleName "JniDemo" //生成so名称 abiFilters "armeabi","armeabi-v7a","x86" //输出指定三种abi体系结构下的so库,可忽略 //ldLibs "log" 添加log库,看自己需求 } } //这里设置目录,默认就这样写就可以了 sourceSets { main { jni.srcDir "src/main/jni" jniLibs.srcDir "src/main/libs" } } }
gradle.properties添加
android.useDeprecatedNdk = true
loca.properties查看ndk目录是否正确
4.创建包含native方法的类
5.生成.h头文件
(1),使用命令行生成.h。参考Ubuntu下NDK编译环境搭建及在Android Studio中集成NDK
cd app/build/intermediates/classes/debug
javah -jni com.demo.JniUtils
创建jni目录,将.h拷贝到jni并创建.c文件
(2),配置常用命令生成,参考如何优雅使用ndk
6.调用运行
其他参考内容:使用 AndroidStudio 进行 NDK 开发(一)
头文件分析,截图参考这里
#########################################################################以上为配置
1,C中打印log
(1),Android.mk中LOCAL_LDLIBS需要有-llog
(2),gradle中配置
(3),C/C++
#include <android/log.h> #define LOG_TAG "MYJNI" #define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__) #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__) #define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG, __VA_ARGS__)
jint Java_com_jieth_myjnidemo_MyJniUtils_sum (JNIEnv *env,jclass type, jint a,jint b){ LOGE("this is log info string...."); LOGE("this is log info string.... and str is %s", "测试"); jint c = a+b; return c; }
新的,用studio创建官方demo,创建项目的时候勾选上。就会自动创建一个含有jni demo效果的项目
本文来自博客园,作者:西瓜皮不甜,转载请注明原文链接:https://www.cnblogs.com/Jieth/p/6085167.html
标签:
android
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!