Android Studio JNI/NDK 编程(二) Windows 下环境搭建 demo 开发
环境
windows 8 (注:其实 Linux 开发可能更方便)
Android Studio 2.1;
一 . 下载
安装android-ndk开发包
地址:链接:http://pan.baidu.com/s/1c1GSiy8 密码:h7gr;
下载完成后最好解决到一个根目录,中间不要有空格,中文;
二.
1、新建项目MyJNIDemo,选择空Activity就可以;
2. 新建 com.jcdh.jcli.MyJNI 类
public class MyJNI {
static {
System.loadLibrary("hello_jni");
}
public native String getDataFromJni();
}
3、工程app New->Folder->JNI Folder;
4. MainActivity 实现:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView show = (TextView)findViewById(R.id.show);
MyJNI myJni = new MyJNI();
show.setText(myJni.getDataFromJni());
}}
5.Gradle scripts gradle ->build-gradle 在defaultConfig中添加(注意是添加原来的不变)
defaultConfig {
ndk {
moduleName "hello_jni"
}
sourceSets.main {
jni.srcDirs = []
jniLibs.srcDir "src/main/libs"
}
Gradle scripts gradle.properties 增加
android.useDeprecatedNdk=true
6. 点击File->Setting->Tools->External Tools 点击“+”,添加如下以下三项(非必须,也可以用命令行实现)
(1)javah
(2) ndk-build
(3)ndk-build-clean
7.jni 文件夹上右键 NDK->java.h,可以看到控制台编译 ,有了菜单以后都会比较方便
同时jni文件夹下生成了文件 com_jcdh_jcli_myndk_MyJNIDemo.h
8.jni目录下新建hello_jni.cpp文件
#include "com_jcdh_jcli_myjnidemo_MainActivity.h"
JNIEXPORT jstring JNICALL Java_com_jcdh_jcli_myjnidemo_MainActivity_getDataFromJni
(JNIEnv * env, jobject obj)
{
return env->NewStringUTF("hello world!");
}
9.jni目录下分别新建Android.mk与Application.mk
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello_jni
LOCAL_SRC_FILES := hello_jni.cpp
include $(BUILD_SHARED_LIBRARY)
Application.mk
APP_MODULES := hello_jni
APP_ABI := all
10. 右键jni文件夹,ndk->ndk-build,编译
成功后,运行即可在手机上输出 hello world!
DEMO 下载:
http://download.csdn.net/detail/q610098308/9509832
Android Studio JNI/NDK 编程(二) Windows 下环境搭建 demo 开发的更多相关文章
- Android Studio JNI/NDK 编程简介(一)
首先说一下概念及相关的东西: JNI : JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++).从Java1.1开始 ...
- Egret入门(二)--windows下环境搭建
准备材料 安装Node.js TypeScript编辑器 HTTP服务器(可选) Chorme(可选) Egret 安装Node.js 打开www.nodejs.org 下载安装(全部next,全默认 ...
- Windows下快速搭建安卓开发环境android-studio
Windows下快速搭建安卓开发环境android-studio 发布时间:2018-01-18 来源:网络 上传者:用户 关键字: 安卓 搭建 Android Windows 快速 环境 Studi ...
- Redis的简单介绍及在Windows下环境搭建
简单介绍 1,Redis是什么 最直接的还是看官方的定义吧. Redis is an open source (BSD licensed), in-memory data structure stor ...
- Android Studio增加NDK代码编译支持--Mac环境
Android的APP开发基本都是使用Java或者跨平台框架进行开发的,对于很多APP来说已经足够了,但是,对于提供功能给外部使用或者性能要求很高的需求下,如图像处理等,可能会需要C/C++库的支持, ...
- windows下eclipse搭建android_ndk开发环境
安装cygwin: 由于NDK编译代码时必须要用到make和gcc,所以你必须先搭建一个linux环境, cygwin是一个在windows平台上运行的unix模拟环境,它对于学习unix/linux ...
- 数据科学家Docker历险记(1):windows下环境搭建
原文:http://www.xueqing.tv/cms/article/247 Docker是最近炒得很火热的一门技术,在网上可以找到关于它的介绍文章,比如<Docker到底是什么?为什么它这 ...
- redis cluster以及master-slave在windows下环境搭建
一.redis cluster环境搭建: 1.了解Redis Cluster原理: 详细了解可参考:http://doc.redisfans.com/topic/cluster-tutorial.ht ...
- Android jni/ndk编程二:jni数据类型转换(primitive,String,array)
一.数据类型映射概述 从我们开始jni编程起,就不可能避开函数的参数与返回值的问题.java语言的数据类型和c/c++有很多不同的地方,所以我们必须考虑当在java层调用c/c++函数时,怎么正确的把 ...
随机推荐
- 项目中必须知道的关于CSS+DIV的常识
根据模块化的思想,将目录划分为html,css,image三大部分. css部分:(base.css.globa.css和mod文件夹)1.base.css放置的是reset,clearfix等基础类 ...
- 【matlab】MATLAB程序调试方法和过程
3.8 MATLAB程序的调试和优化 在MATLAB的程序调试过程中,不仅要求程序能够满足设计者的设计需求,而且还要求程序调试能够优化程序的性能,这样使得程序调试有时比程序设计更为复杂.MATLAB ...
- WeX5 快速开发平台 V3.6 正式版发布
WeX5 V3.6 正式版核心特性:一.打包特性增强: 1- 提供多WebView选择,引入腾讯X5引擎,可自动适配移动设备环境进行切换,使通过X5打包生成的App具备更高的兼容性及更小的文件尺寸: ...
- 转:Caused by: java.lang.NoSuchMethodError: org.apache.log4j.Category.log
Caused by: java.lang.NoSuchMethodError: org.apache.log4j.Category.log出现的异常:java.lang.reflect.Invocat ...
- jq 操作radio,设置选中、获取选中值
<label><input type="radio" name="sex" value="1">男</labe ...
- SVG 2D入门12 - SVG DOM
使用脚本可以很方便的完成各种复杂的任务,也是完成动画和交互的一种主流方式.由于SVG是html的元素,所以支持普通的DOM操作,又由于SVG本质上是xml文档,所以也有一种特殊的DOM操作,大多称之为 ...
- 超级链接a中javascript:void(0)弹出另外一个框问题
转字:http://my.oschina.net/castusz/blog/68186 结果在IE.Firefox.Chrome都是先执行的onclick事件,在项目中我们尽量不要同时使用这两种方式. ...
- SDK、MFC、QT界面生成的机制
1.SDK进行界面设计的机制 (1)设计窗口类 (2)注册窗口类 (3)创建窗口 (4)显示及更新窗口 (5)消息循环,操作系统接收到应用程序的窗口消息,将消息投递到队列中,通过GetMessage( ...
- Linux TC基于CBQ队列的流量管理范例
参考了TC的很多文档,自己也整理了一篇配置记录.在实际使用过程中效果还不错,在此分享给大家以备参考.环境:局域网规模不是很大40多台机器. NAT共享上网(内网:eth0 外网:eth2)CBQ是通过 ...
- frame和bounds区别
学习ios开发有一段时间了,项目也做了两个了,今天看视频,突然发现view的frame和bound两个属性,发现bound怎么也想不明白,好像饶你了死胡同里,经过一番尝试和思考,终于弄明白bound的 ...