在AndroidStudio2.3.2下JNI开发的详细步骤(转)
转自:http://blog.csdn.net/luhaoying1111/article/details/72468867
安装NDK
在工具栏点击File->Settings->Appearance & Behavior->System Settings->Android SDK->SDK Tools选中LLDB和NDK,点击确认,软件会自动安装NDK。
- 1
- 2
默认安装路径: 你的sdk路径\ndk-bundle文件夹
新建一个工程
在main文件夹下新建一个目录jni
在jni目录下新建一个文件 hello-jni.c
在hello-jni.c 中编写c代码
#include <jni.h>
//jstring: 返回值类型 String
//规则: Java_包名_类名_方法名(jvm虚拟机的指针,调用者对象)
jstring Java_com_lhy_jnidemo01_MainActivity_helloFromC(JNIEnv* env,jobject thiz){
return (*env)->NewStringUTF(env, "你好,我来自C代码 !!!");
}
- 1
- 2
- 3
- 4
- 5
- 6
在jni目录下新建Android.mk文件
添加如下内容:
#指定编译的文件夹 指定当前文件目录
LOCAL_PATH := $(call my-dir)
#编译器会定义很多的临时变量,中间变量,最好清空所有的中间变量。
include $(CLEAR_VARS)
#编译出来模块的名称
LOCAL_MODULE := hello-jni
# 编译的源代码的名称
LOCAL_SRC_FILES := hello-jni.c
#编译一个动态库,静态库
#静态库 文件名.a 包含所有的函数并且函数运行的依赖,体积大,包含所有的API
#动态库 文件名.so 包含函数,不包含函数运行的依赖,体积小,运行的时候,去操作系统寻找需要的API
include $(BUILD_SHARED_LIBRARY)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
在build.gradle中配置
externalNativeBuild {
ndkBuild {
path file("src\\main\\jni\\Android.mk")
}
}
- 1
- 2
- 3
- 4
- 5
点击 Make Project(或Ctrl+F9) 即可生成.so文件
.so文件的路径: app\build\intermediates\ndk-build
在MainActivity里面:
1,需要把动态链接库加载到jvm虚拟机,添加以下代码:
static{
//System.loadLibrary("库文件名称不带前缀,后缀名");
System.loadLibrary("hello-jni");
}
- 1
- 2
- 3
- 4
2,声明native的方法:
public native String helloFromC();
- 1
3,像调用一般java代码一样调用native的方法.
String str = helloFromC();
- 1
在AndroidStudio2.3.2下JNI开发的详细步骤(转)的更多相关文章
- android下JNI开发
android下JNI开发 what 什么是JNI JNI java native interface native本地 java本地接口 通过JNI可以实现java和本地代码之间相互调用 jni可以 ...
- Android studio 下 JNI 开发实例
在AS中进行 NDK 开发之前,我们先来简单的介绍几个大家都容易搞懵的概念: 到底什么是JNI,什么是NDK? 何为“交叉编译”? 先看什么是 JNI?JNI 的全称就是 Java Native In ...
- centos7下安装oracle11gR2的详细步骤
环境准备 安装包: CentOS-7-x86_64-DVD linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip 本教 ...
- linux下JNI开发—Hello为例
转自:https://www.cnblogs.com/snake-hand/archive/2012/05/25/2517412.html 前期准备: 1.Java JDK 2.gcc 3.g++ 确 ...
- 01_c++下jni开发说明
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...
- [傻瓜版] Redis在Windows下的开发环境配置步骤
redis默认运行在unix体系下,windows无法直接运行官方版.以下是几种解决方案, 一)Windows移植版.启动速度飞快,优先推荐使用. a) 2.6.12 是稳定版,我用64位版来做开发环 ...
- CentOS 6.5下搭建LAMP环境详细步骤
1.确认搭建LAMP所需的环境是否已经安装: [root@localhost ~]#rpm -q make gcc gcc-c++ zlib-devel libtool libtool-ltdl li ...
- xxx金融后台管理系统详细版:包括本地开发调试详细步骤
效果演示地址, github地址: demo演示: 1.About 此项目是 vue2.0 + element-ui + node+mongodb 构建的后台管理系统,所有的数据都是从 ...
- 【申嵌视频】基于VMWare虚拟机下安装ubuntu操作系统的详细步骤
[申嵌视频]基于VMWare虚拟机下安装ubuntu操作系统 适合搭建mini2440, Tiny6410, smart210,Tiny4412, NanoPC-T2, NanoPC-T3, Nano ...
随机推荐
- 从零开始做一个Android自动化
移动端自动化简单说就是,写好操作app的程序,运行起来,自动执行程序和测试用例,输出执行结果,结果正确,测试通过. 自动化可以方便地完成安装/卸载.启动/运行.UI适配等环节,节省时间: 同一测试脚本 ...
- Spring MVC processing flow
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484057.html DispatcherServlet receives the request. ...
- C/C++ C++ 11 std::bind()
{ #define CC_CALLBACK_0(__selector__,__target__, ...) std::bind(&__selector__,__target__, ##__VA ...
- 部署.net Core 到 Windows server 2008 r2 IIs
1. 将项目发布 2.iis 新建网站,设置 3 安装windows server hosting 4 关于报错 1.下载sdk https://www.microsoft.com/net/lea ...
- tcpdump使用小记
1, 类型的关键字主要包括:host, net, port: 2, 确定传输方向的关键字主要包括:src, dst, dst or src, dst and src: 3, 协议的关键字主要包括:fd ...
- vue-cli创建的项目中引入第三方库报错'caller', 'calle', and 'arguments' properties may not be...
本文链接:https://blog.csdn.net/Sophie_U/article/details/76223978 问题: 在vue的main.js中引入mui.min.js时,报错. 如上,单 ...
- 阿里云移动研发平台EMAS,是如何连续5年安全护航双11的?
摘要: 阿里云作为阿里巴巴IT基础设施的基石,每年的双十一都面临前所未有的巨大技术挑战.阿里云的EMAS移动研发平台,连续5年支持双11,不仅保障了手机淘宝.支付宝这些阿里巴巴集团App的使用体验,也 ...
- 6.zabbix微信告警3.2
原文地址: https://blog.cactifans.com/2016/01/27/zabbix%E5%BE%AE%E4%BF%A1%E5%91%8A%E8%AD%A6/ pdf : 链接: ht ...
- 【进阶技术】一篇文章搞掂:Docker
注意!!注意系统内存,一开始我使用阿里云1核1G系统,各种问题,搞了几天,原来是内存不足 一.使用VM虚拟机,安装CentOS7.X系统,并安装和使用Docker 1.1.虚拟机安装CentOS7.X ...
- SPOJ_QTREE系列题解
QTREE4 #pragma comment(linker, "/STACK:102400000,102400000") //#include<bits/stdc++.h&g ...