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效果的项目

android studio使用ndk,jni随记的更多相关文章
- Android Studio上NDK/JNI开发环境问题
基础环境: 操作系统 —— Windows 7 Android Studio —— 1.5.1(android-studio-bundle-141.2456560-windows.exe) NDK — ...
- 【android 开 发 】 - Android studio 下 NDK Jni 开发 简单例子
Android 开发了一段时间,一方面 ,感觉不留下点什么.有点对不起自己, 另一方面,好记性不如烂笔头,为了往后可以回头来看看,就当做是笔记,便决定开始写博客.废话不多说 ! 今天想搞一搞 ndk ...
- Android studio 下 NDK Jni 开发 简单例子
1. 创建一个新的工程 2. 创建一个新的类 JniText.java 点击Build--Make Project 后 选中工程 点击F4键 sdk location 中 Android ...
- Android studio 使用NDK工具实现JNI编程
前言: Android开发中常常会使用到第三方的.so库.在使用.so库的时候就要用到JNI编程.JNI是Java Native Interface的缩写.它提供了若干的API实现了Java和其它语言 ...
- 【Android Studio安装部署系列】二十五、Android studio使用NDK生成so文件和arr文件
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio使用ndk的简单步骤. NDK环境搭建 下载NDK 下载链接:https://developer.and ...
- Android Studio 之 NDK篇
由于工作内容的关系,对于NDK的工作涉及比较广(保密性,安全性),所以本章内容讲述一下NDK的基本使用过程. 网上也有很多这样的教程或者描述,但描述的并不完全 开发工具:Android Studio ...
- 关于Android Studio中使用jni进行opencv配置开发环境的要素秘诀
使用jni进行opencv开发可以快速地将PC端的opencv代码移植到手机上,但是如何在android studio下进行配置,网上几乎找不到教程,大多都是eclipse下使用mk文件的方法,找不到 ...
- Mac下Android studio 之NDK配置教程(一)
Mac下Android studio 之NDK配置教程(一) 1.概述 近期项目全线转移到Mac下使用使用Android studio开发. 遇到关键代码封装到 ***native***层,此时在wi ...
- JNI 在Android Studio利用NDK编译运行一个简单的c库
NDK开发,其实是为了项目需要调用底层的一些C/C++的一些东西:另外就是为了效率更加高些.如果你在Eclipse+ADT下开发过NDK就能体会到要么是配置NDK还要下载Cygwin,配置Cygwin ...
随机推荐
- struts-hibernate-ajax完成区县和街道级联下拉框功能
前言:这次dao用的是hibernate,控制层和显示层用的是struts,页面用的是ajax... 啰嗦:我做这个用了很久,用了2周,难点没破解的地方,hibernate的多对一关系生成实体类中属性 ...
- HTML5学习总结-番外04 Cordova/PhoneGap
一 PhoneGap 1 PhoneGap简绍 http://www.cnblogs.com/JustRun1983/p/3819433.html 2 环境安装 http://cordova.apac ...
- Table 表单样式
<style> table th { white-space: nowrap; background-color: #f5f5f5; height:30px; font-size:14px ...
- c# .net获取文件夹下的所有文件(多层递归),并获取区间数据(Jsion,xml等数据)写出到处理文件,学习分享~
static void Main(string[] args) { string path = string.Format(@"C:\Users\Administrator\D ...
- jstack工具查看系统线程问题
背景: 最近在做项目系统的异常测试,项目依赖于nkv,需要模拟依赖组件nkv异常时系统的响应及性能情况.通过tc工具模拟当服务器发送到nkv的请求超时时系统的响应.发现接口返回错误率100%,查看服务 ...
- 【转】[教程]在 win7 / win8 下安装苹果系统 (懒人版)
前言 这篇安装教程的素材在国庆就准备好了,但那时学习任务比较重,没有时间发帖,一直拖到现在.趁这个周末有空,赶紧写完它,希望能帮助一些景友. 论坛已经有不少安装教程,如果对这篇安装教程有疑问可以去 ...
- c# c++ oc java || mac android ios
Unity 使用C/C++ 跨平台终极解决方案(PC,iOS,Android,以及支持C/C++的平台) http://blog.csdn.net/fg5823820/article/details/ ...
- iOS and JAVA 的 RSA 加密解密 (转载整理 )
参考原文地址:http://www.cnblogs.com/makemelike/articles/3802518.html (至于RSA的基本原理,大家可以看 阮一峰的网络日志 的 RSA算法原理( ...
- PHP数组函数--array_filter
(PHP 4 >= 4.0.6, PHP 5, PHP 7) array_filter - 用回调函数过滤数组中的单元 (PHP 4 >= 4.0.6, PHP 5, PHP 7) arr ...
- python基础知识(三)
摘要:主要涉及新数据类型set集合.三元运算.深浅拷贝.函数基础.全局变量与局部变量 一.set --> 无序,不允许重复的集合 不允许重复的列表, 1,创建 s = set() 接收 ...