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插件来支持! ...
随机推荐
- 如何关闭sublime更新提示
前提:sublime已激活
- Go语言 2 变量、常量和数据类型
文章由作者马志国在博客园的原创,若转载请于明显处标记出处:http://www.cnblogs.com/mazg/ Go学习群:415660935 2.1 变量 变量是对一块内存空间的命名,程序可以通 ...
- Sublime text 3中文汉化教程
想弄个中文版的sublime,居然可以不用重新下载汉化包或者重新下载简体中文版了~而是只需要安装个插件即可! 工具/原料 电脑 sublime text3编辑器 方法/步骤 启动并进入s ...
- Mysql储存过程3:if语句
--if/else语句 if 条件 then SQL语句 else SQL语句elseifSQL语句 end if; create procedure test1( number int ) begi ...
- python基础===基于cv2的播放器
import cv2 import threading import win32gui,win32con class Producer(threading.Thread): ""& ...
- FPM定制RPM包
安装FPM FPM是ruby写的打包工具,ruby版本要大于1.8.5 #安装ruby环境和gem包管理器 [root@test88 ~]# yum install -y ruby rubygems ...
- HTML表格的基本操作
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- Java学习(一)Scanner报错java.util.NoSuchElementException
我在一个方法A中使用了Scanner的 Scanner input=new Scanner(System.in),随后又将其关闭了,因为Eclipse里面你若不关闭,他会有一个warning:Reso ...
- EasyUi – 5.修改$.messager.show() 弹出窗口在浏览器顶部中间出现
由于在easyui中$.messager.show() 只有一种弹出方式(在浏览器的或下角弹出),我最近在做一个项目的时候需要在浏览器的顶部中间出现.由于自己写花那么多的时间,所以就去修改了原码(不推 ...
- 服务器fsockopen函数和pfsockopen函数开启及作用
摘要: fsockopen()函数的作用是可以用来打开一个socket连接,另一个函数pfsockopen()也有相似的功能,只不过后者是一个“持续”(persistent)的fsockopen()函 ...