超级简单的Android Studio jni 实现(无需命令行)【转载】
原文:
http://www.jianshu.com/p/e689d0196a17
1.配置Anroid Studio(这步是关键)
使用[command+,] 打开Preferences,选择External Tools,点击加号框如下图:
点击+号之后,打开Macros 配置宏命令界面,如下图:
2.配置完成就可以使用javah 、ndk-build、ndk-build clean这三个命令了,那么在哪里使用这些命令,请看下图
3.配置完成,我们开始新建工程MyNdk,然后新建jni目录
4.修改app下的build.gradle文件, 如下图
ndk{
moduleName "MyLibrary"
}
sourceSets.main{
jni.srcDirs = []
jniLibs.srcDir "src/main/libs"
}
5.修改MyNdk下的gradle.properties文件(如果没有此文件,自己新建一个),如下图
android.useDeprecatedNdk=true
6.新建MyNdk.java
public class MyNdk {
static {
System.loadLibrary("MyLibrary");
}
public native String getString();
}
7.这步开始创建头文件,操作如下图(注意在MyNdk.java文件上点击右键)
8.执行完成后jni目录下就创建了com_zhangyp_higo_myndk_MyNdk.h文件,然后我们在jni目录下编写 MyLibrary.cpp、Android.mk、Application.mk这三个文件,代码如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_zhangyp_higo_myndk_MyNdk */ #ifndef _Included_com_zhangyp_higo_myndk_MyNdk
#define _Included_com_zhangyp_higo_myndk_MyNdk
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_zhangyp_higo_myndk_MyNdk
* Method: getString
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_zhangyp_higo_myndk_MyNdk_getString
(JNIEnv *, jobject); #ifdef __cplusplus
}
#endif
#endif
MyLibrary.cpp
#include "com_zhangyp_higo_myndk_MyNdk.h" JNIEXPORT jstring JNICALL Java_com_zhangyp_higo_myndk_MyNdk_getString
(JNIEnv * env, jobject obj){
return (*env).NewStringUTF("This is mylibrary !!!");
}
Android.mk
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := MyLibrary
LOCAL_SRC_FILES =: MyLibrary.cpp
include $(BUILD_SHARED_LIBRARY)
Application.mk
APP_MODULES := MyLibrary
APP_ABI := all
9.如何执行ndk-build,请看下图:(注意在jni目录上点击右键)
10.得到so文件,如下图
12.在MainActivity中调用,代码如下
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.tv);
tv.setText(new MyNdk().getString());
}
}
12.大功告成,可以运行了,oh yet!

如果在执行javah命令时报xxx未找到,可能是没有生成相应的class文件,编译一下就好了
超级简单的Android Studio jni 实现(无需命令行)【转载】的更多相关文章
- 超级简单的Android Studio jni 实现(无需命令行)
1.配置Anroid Studio(这步是关键) 使用[command+,] 打开Preferences,选择External Tools,点击加号框如下图: Paste_Image.png 点击+号 ...
- Android Studio JNI开发入门教程
Android Studio JNI开发入门教程 2016-08-29 14:38 3269人阅读 评论(0) 收藏 举报 分类: JNI(3) 目录(?)[+] 概述 在Andorid ...
- android studio JNI使用
Step: 1. 添加native接口注意写好native接口和System.loadLibrary()即可了,并无特别之处. Step: 2.执行Build->Make Project 生成了 ...
- Android 调试桥 (adb) 是 命令行命令--官方拷贝过来的,留作自己查看
Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信.adb 命令便于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令 ...
- Windows下搭建Android NDK开发环境及命令行编译
首先说明本文内的相关安装操作参考<Pro Android C++ with the NDK>一书. 安装 Windows搭建Android NDK开发环境需要安装如下部分(同时需要配置对应 ...
- Android Studio JNI 开发简单案例
转载:http://www.androidchina.net/5744.html 进程保活,热修复,硬件接入等等都需要底层的支持,而底层代码是 C .C++ 写的,那么在 Android 中怎么调用底 ...
- Android Studio JNI体验
近期项目中须要调用c/c++的实现,Android是支持JNI的.所以体验了一下JNI的全过程 1. 前期环境准备 (1) 下载NDK,网址是https://developer.android.com ...
- Android Studio Jni 环境搭建
第一步:NDK环境搭建,点击下图红色框区域查看NDK下载和环境配置 安照正常情况是很慢的或者无法下载成功的,这个时候可以去下载NDK压缩包进行解压.下面给出两个下载地址 (1)官网:http://we ...
- Android Studio JNI/NDK 编程(二) Windows 下环境搭建 demo 开发
环境 windows 8 (注:其实 Linux 开发可能更方便) Android Studio 2.1; 一 . 下载 安装android-ndk开发包 地址:链接:http://pan.baid ...
随机推荐
- eclipse_maven换源
1. 手动新增一个xml文件: <?xml version="1.0" encoding="UTF-8"?> <settings xmlns= ...
- CentOS上手工部署kubernetes集群
本文完全是根据二进制部署kubernets集群的所有步骤,同时开启了集群的TLS安全认证. 环境说明 在下面的步骤中,我们将在三台CentOS系统的物理机上部署具有三个节点的kubernetes1.7 ...
- JAVA核心技术I---JAVA基础知识(数字相关类)
一:相关数字类 –整数 Short, Int, Long –浮点数 Float, Double –大数类 BigInteger(大整数), BigDecimal(大浮点数) –随机数类 Random ...
- ThinkPHP3.2中字段unique验证出错的解决方法
protected $_validate=array( array('stu_id','','学号已存在',1,'unique',1), ) 当一次插入多条数据时: 在进行循环 使用create验证时 ...
- springcloud配置需要主要的地方
Eureka服务端 注册中心 <!-- Eureka服务端 --> <dependency> <groupId>org.springframework.cloud& ...
- Web API中的返回值类型
WebApi中的返回值类型大致可分为四种: Void/ IHttpActionResult/ HttpResponseMessage /自定义类型 一.Void void申明方法没有返回值,执行成功后 ...
- js学习总结:DOM节点一(选择器,节点类型)
DOM:document object model 文档对象模型 DOM就是整个HTML文档的关系图谱(代表整个HTML文档),可以理解为下图: 一.查看元素节点 1.document.getElem ...
- SVN快速入门笔记【转】
1. SVN版本控制软件目的 协作开发 远程开发 版本回退 2. 什么是SVN subVersion 支持平台操作 支持版本回退 3. 获取SVN软件 属于C/S结构软件(客户端与服务端) serve ...
- java实现《剑指offer》(二)11~20 更新中
11.二进制中1的个数 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. (1)最优解 public class Solution { public int NumberOf1(int ...
- SQL结构化查询语句
SQL结构化查询语句 SQL定义了查询所有关系型数据库的规则. 1.通用语法 SQL语句可以单行或者多行书写,以分号结尾 可以使用空格和缩进增强可读性 不区分大小写,但是关键字建议大写 3种注释 注释 ...