Android Studio下使用JNI编程备忘录
来源:互联网 发布:2017流行的网络用语 编辑:程序博客网 时间:2024/06/05 23:52
1、下载安装NDK的过程略过,网上资料很多。
JNI官网规范见 http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html
2、修改local.properties
如图,增加ndk路径。
3、修改app/build.gradle
代码如下,defaultConfig中增加ndk,模块名为java类名,abiFilters为底层架构。增加sourceSet。
import org.apache.tools.ant.taskdefs.condition.Osapply plugin: 'com.android.application'android { compileSdkVersion 22 buildToolsVersion "21.1.2" defaultConfig { applicationId "cn.lxg.jniHello" minSdkVersion 12 targetSdkVersion 22 versionCode 1 versionName "1.0" ndk { moduleName "MyNativeMethod" stl "stlport_static" ldLibs "log" abiFilters "armeabi", "armeabi-v7a", "x86" } } buildTypes { debug { // 显示Log buildConfigField "boolean", "LOG_DEBUG", "true" minifyEnabled false shrinkResources true } } sourceSets { main { jniLibs.srcDirs = ['libs'] } }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar'])}4、新建java class,名字要与gradle中一致
定义了一个native的函数Display,在C中实现。
package cn.lxg.jniHello;/** * Created by 李晓光 on 2016/4/5. * */public class MyNativeMethod { static { System.loadLibrary("MyNativeMethod"); } public native String DisplayHello();}
5、新建native的.h文件和.cpp文件
h文件,注意文件名要严格按规范,与java类名一致。
#ifndef _Included_cn_lxg_jniHello_MyNativeMethod#define _Included_cn_lxg_jniHello_MyNativeMethod#ifdef __cplusplusextern "C" {#endif#include <jni.h>#include <android/log.h>#ifndef LOG_TAG#define LOG_TAG "MyNativeMethod"#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)#endif/** Class:* Method:* Signature:*/JNIEXPORT jstring JNICALL Java_cn_lxg_jniHello_MyNativeMethod_DisplayHello(JNIEnv *, jobject);#ifdef __cplusplus}#endif#endifcpp文件,用了jni的函数生成一个jstring。
#include "cn_lxg_jniHello_MyNativeMethod.h"JNIEXPORT jstring JNICALL Java_cn_lxg_jniHello_MyNativeMethod_DisplayHello(JNIEnv *env, jobject){ LOGE("Hello! This is Lee!"); char cStr[] = "Hello! This is Lee!"; jstring str = env->NewStringUTF(cStr); return str;}
6、在Android程序中调用native函数
编译,运行,完成。
0 0
- Android Studio下使用JNI编程备忘录
- Android Studio下JNI编程
- Android Studio下使用JNI
- android studio使用备忘录
- Android Studio下JNI的使用案例
- Android studio 下JNI的使用
- Windows下Android Studio使用JNI
- Android studio下使用jni(一)
- android studio JNI编程
- Android studio JNI编程
- android studio JNI使用
- Android Studio使用JNI
- android studio使用jni
- Android Studio 使用JNI
- ANDROID STUDIO JNI使用
- Android studio 使用jni
- Android studio 使用jni
- Android studio 下JNI编程实例并生成so库
- Hive简介
- genymotion安装(unknown generic error)及配置在Android studio环境中
- Spring Boot 教程(一)---入门篇
- 记录我在csdn的第一篇文章
- 用Jsoup获取网页中阅读数、浏览数等后台数据
- Android Studio下使用JNI编程备忘录
- android 预制32 64 位so, bin
- linux进程
- 下拉刷新Phoenix分析
- 【Linux】AWK 简明教程
- RabbitMQ使用场景
- Java开发环境搭建(Windows7)
- CodeForces - 659G Fence Divercity (DP)好题
- Android 中一些小经验总结