Android Studio NDK开发浅谈
环境:
Android Studio 1.1.0
NDK-r10d
1、新建项目---》包名:com.mxl.az.ndk
新建包含native方法的类:JniOperation.class
public class JniOperation { public static native String getString();
public native int add(int a, int b); }
2、然后使用javah命令生成.h文件
打开“小黑框”,进入项目目录的.../app/build/intermediates/classes/debug/中
javah -jni com.mxl.az.ndk.JniOperation
执行命令后,会在debug目录下生成.h文件
3、在src/main目录下新建jni文件夹
把.h文件copy到jni文件夹中
4、新建main.c,include-->.h文件,并实现其中的俩个方法
#include "com_mxl_az_ndk_JniOperation.h"
#include <android/log.h> #define LOG_TAG "HelloJni"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) JNIEXPORT jstring JNICALL Java_com_mxl_az_ndk_JniOperation_getString
(JNIEnv * env, jclass cla)
{
int i;
int size = ; for(i=; i<size; i++){
LOGI("MXL");
} return (*env)->NewStringUTF(env, "JNI 运算结果:");
} JNIEXPORT jint JNICALL Java_com_mxl_az_ndk_JniOperation_add
(JNIEnv * env, jobject obj, jint a, jint b)
{
return a + b;
}
5、在local.properties中配置ndk路径
ndk.dir=/Users/mxl/Android/android-ndk-r10d
6、配置一下build.gradle文件中的ndk
defaultConfig {
minSdkVersion
targetSdkVersion
versionCode
versionName "1.0" ndk {
abiFilter "armeabi"
moduleName "hellojni"
ldLibs "log", "z", "m", "jnigraphics", "android"
} }
7、在Activity中加载库,运行
public class MainActivity extends ActionBarActivity { static {
System.loadLibrary("hellojni");
} private TextView tv; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv);
JniOperation jniOperation = new JniOperation();
tv.setText(JniOperation.getString() + jniOperation.add(2,8));
}
}
Android Studio NDK开发浅谈的更多相关文章
- 【Android】Android Studio NDK 开发
Android Studio NDK 开发 记录在Android Studio中NDK简单开发的步骤 用到的Android Studio版本为3.5. 配置NDK 下载NDK 一般在SDK下已经有自带 ...
- (原)使用android studio ndk开发流程
先使用android stuido创建一个app工程,创建工程的时候,.gradle目录结构下为2.8目录.(note:2.10目录为后续更新结果出现.) 依次修改上述红色方框标注部分内容: 1)修改 ...
- android studio ndk 开发入门
ndk 开发没什么神秘的ndk 说白了就是一个交叉编译的工具链,用它来生成各个CPU架构下的静态或动态链接库,linux 下就是 .a 和 .so 文件.原理就是 java 通过 JNI 和 C.C+ ...
- Android Studio NDK开发环境搭建
一. 下载安装Android studio 和 NDK 二. 在Android studio中配置NDK(和SDK配置一样) 三. 用Android studio建立一个工程,打开proj ...
- Android Studio NDK开发-JNI调用Java方法
相对于NDK来说SDK里面有更多API可以调用,有时候我们在做NDK开发的时候,需要在JNI直接Java中的方法和变量,比如callback,系统信息等.... 如何在JNI中调用Java方法呢?就需 ...
- Android Studio NDK开发入门
从Android Studio 1.3 Beta1开始,就支持了NDK,我目前使用的版本是1.5.首先强调几点. 1.必须安装NDK并配置好环境变量(和配置JDK环境变量如出一辙:新建NDK_HOME ...
- Android Studio && NDK开发
Android Studio下载安装网址:http://www.android-studio.org/index.php/download/hisversion 在下载界面可以查看安装包内是否包含SD ...
- Android Studio NDK 开发 问题记录
Android NDK 开发 问题解决 编译:找不到gles3库 使用旧的编译方式,写Android.mk 进行编译.报错如下 gles3/gl3.h no such file or director ...
- NDK开发-Android Studio+gradle-experimental开发ndk
在最新的Android Studio2.2的preview版中,增加全新的ndk支持,使用了新的gradle,以及DSL语言. 新的NDK需要使用新的Gradle插件和新的Android插件来支持! ...
随机推荐
- C语言二分查找
#include <stdio.h> /* 二分查找条件: 1.有序序列 2.数据在数组中 */ int baseBinarySearch(int a[],int h,int k) { ; ...
- Redis数据类型之散列(hash)
1. 什么是散列 散列类似于一个字典,是一个<K, V>对的集合,不过这个key和value都只能是字符串类型的,不能嵌套,可以看做Java中的Map<String, String& ...
- Sublime之快捷键(二)
1. 在使用Sublime的时候,经常用到选中文件中相同的一些字段,那怎么办呢? 快捷键: ctrl + d 可以快速的选择,你所选中的文字,每次按下该快捷键,就会自动的寻找相同的字段: Alt + ...
- 63.UniquePaths II---dp
题目链接 题目大意:与62题类似,只是这个题中间有障碍. 法一:dfs,依旧超时.代码如下: public int uniquePathsWithObstacles(int[][] obstacleG ...
- 工作当中遇到的ssh错误
[root@1bcc1d3f9666 externalscripts]# /usr/sbin/sshd Could not load host key: /etc/ssh/ssh_host_rsa_k ...
- curl 发送请求的时候报错
AWS HTTP error: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see ...
- 关于VS2010的一些操作
自动插入接口实现 1: class MyClass : IMyInterface 2: { 3: 4: } .csharpcode, .csharpcode pre { font-size: sm ...
- beego学习笔记(4):开发文档阅读(6)
beego的响应流程: 1.监听的端口接收数据,默认是8080端口. 2.用户请求到达8080端口后,开始数据处理流程. 3.初始化CONTEXT对象.判断是否是WEBSOCKET请求,如果是,设置I ...
- (转)粒子编辑器Particle designer属性的介绍
转载:http://blog.csdn.net/ym19860303/article/details/9210539 Particle designer粒子编辑器可到这里下载(包含授权码):http: ...
- day6 random随机数模块
random 我们经常看到网站的随机验证码,这些都是由随机数生成的,因此我们需要了解一下随机数的模块.如何生成随机数. random 生成随机数 random.random() 生成0- ...