原文:

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这三个文件,代码如下:

 
com_zhangyp_higo_myndk_MyNdk.h
/* 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 实现(无需命令行)【转载】的更多相关文章

  1. 超级简单的Android Studio jni 实现(无需命令行)

    1.配置Anroid Studio(这步是关键) 使用[command+,] 打开Preferences,选择External Tools,点击加号框如下图: Paste_Image.png 点击+号 ...

  2. Android Studio JNI开发入门教程

    Android Studio JNI开发入门教程 2016-08-29 14:38 3269人阅读 评论(0) 收藏 举报  分类: JNI(3)    目录(?)[+]   概述 在Andorid ...

  3. android studio JNI使用

    Step: 1. 添加native接口注意写好native接口和System.loadLibrary()即可了,并无特别之处. Step: 2.执行Build->Make Project 生成了 ...

  4. Android 调试桥 (adb) 是 命令行命令--官方拷贝过来的,留作自己查看

    Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信.adb 命令便于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令 ...

  5. Windows下搭建Android NDK开发环境及命令行编译

    首先说明本文内的相关安装操作参考<Pro Android C++ with the NDK>一书. 安装 Windows搭建Android NDK开发环境需要安装如下部分(同时需要配置对应 ...

  6. Android Studio JNI 开发简单案例

    转载:http://www.androidchina.net/5744.html 进程保活,热修复,硬件接入等等都需要底层的支持,而底层代码是 C .C++ 写的,那么在 Android 中怎么调用底 ...

  7. Android Studio JNI体验

    近期项目中须要调用c/c++的实现,Android是支持JNI的.所以体验了一下JNI的全过程 1. 前期环境准备 (1) 下载NDK,网址是https://developer.android.com ...

  8. Android Studio Jni 环境搭建

    第一步:NDK环境搭建,点击下图红色框区域查看NDK下载和环境配置 安照正常情况是很慢的或者无法下载成功的,这个时候可以去下载NDK压缩包进行解压.下面给出两个下载地址 (1)官网:http://we ...

  9. Android Studio JNI/NDK 编程(二) Windows 下环境搭建 demo 开发

    环境 windows 8  (注:其实 Linux 开发可能更方便) Android Studio 2.1; 一 . 下载 安装android-ndk开发包 地址:链接:http://pan.baid ...

随机推荐

  1. 如何解决串session:

    在IE快捷方式上点击鼠标右键>属性>快捷方式>目标:"C:\Program Files\Internet Explorer\iexplore.exe" -nome ...

  2. BZOJ2157 边转点 树链剖分

    https://www.lydsy.com/JudgeOnline/problem.php?id=2157 现在就是后悔,非常后悔 本来想随便拿个树剖热身,不料开了个毒瘤题. 题意:动态维护一棵树上的 ...

  3. CSS外边框、边界样式常用组合

    一.CSS框线一览表 border-top : 1px solid #6699cc; /*上框线*/ border-bottom : 1px solid #6699cc; /*下框线*/ border ...

  4. MyBatis-获取 SqlSession

    Main 方法,mybatis 版本为 3.5.0 返回一个 DefaultSQlSession 对象,包含 Executor 和 Configuration InputStream inputStr ...

  5. mysql 安装部署

    如下方法 安装完成后 没有my.ini 配置文件,请结合下篇(mysql安装绑定my.ini)文章一起看. 安装包的安装方式:参考:https://www.cnblogs.com/ayyl/p/597 ...

  6. VS2015快捷键大全

    Ctrl+E,D —-格式化全部代码 Ctrl+E,F —-格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SH ...

  7. STM32学习笔记:【001】时钟树与RCC

    导言 如果学过单片机的同学应该不会陌生,学习51单片机时最经常听到的就是“最小系统”. 最小系统里面少不了晶振,否则单片机无法工作. 单片机需要晶振(时钟源)来工作,那么对于STM32芯片同样如此. ...

  8. Web前端框架与移动应用开发第七章

    1.练习1:焦点图切换 html: <!doctype html><html><head> <meta charset="utf-8" / ...

  9. LeetCode(192. Word Frequency)

    192. Word Frequency Write a bash script to calculate the frequency of each word in a text file words ...

  10. toString() 和 强制类型转换 (String)

    转自https://www.cnblogs.com/yuxiaoqi/p/3562161.html 简述 在Java中,往往需要把一个类型的变量转换成String 类型.作为菜鸟,有时候我会使用(St ...