Android Studio Jni 开发实例
来源:互联网 发布:手机直播源码破解版 编辑:程序博客网 时间:2024/05/17 00:52
android studio jni 开发步奏如下:
1、在AS中新建一个Project,新建native JniUtils类
public class JniUtils { public native String getVersion();}
2、生成class文件
3、根据生成的class文件,javah生成对应的 .h头文件。
C:\Users\xin\workspace\jniDemo\app\build\intermediates\classes\debug>javah -jni com.demo.sheng.jnidemo.JniUtils C:\Users\xin\workspace\jniDemo\app\build\intermediates\classes\debug>ls android com com_demo_sheng_jnidemo_JniUtils.h
注:当java类中有相关的android依赖类时(android.content.Context),会报异常javah 找不到类android.content.Context。
原因是环境变量未设置,要在CLASSPATH下增加
C:\...\sdk\platforms\android-23\android.jar
h文件内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_demo_sheng_jnidemo_JniUtils */#ifndef _Included_com_demo_sheng_jnidemo_JniUtils#define _Included_com_demo_sheng_jnidemo_JniUtils#ifdef __cplusplusextern "C" {#endif/* * Class: com_demo_sheng_jnidemo_JniUtils * Method: getVersion * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_demo_sheng_jnidemo_JniUtils_getVersion (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif5、在app/main目录下创建jni目录,把h拷贝过来,并编写JniUtils.c文件
#include "com_demo_sheng_jnidemo_JniUtils.h"JNIEXPORT jstring JNICALL Java_com_demo_sheng_jnidemo_JniUtils_getVersion (JNIEnv * env, jobject obj){ return (*env)->NewStringUTF(env," Android Studio NDK JNI developer ! current version 1.0 !");}
6、编写Android.mk文件
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := JniUtilsLOCAL_SRC_FILES := JniUtils.cLOCAL_LDLIBS += -llog include $(BUILD_SHARED_LIBRARY)
7、ndk-build 生成so文件
C:\Users\xin\workspace\jniDemo\app\src\main\jni>ndk-build [arm64-v8a] Compile : JniUtils <= JniUtils.c [arm64-v8a] SharedLibrary : libJniUtils.so [arm64-v8a] Install : libJniUtils.so => libs/arm64-v8a/libJniUtils.so [x86_64] Compile : JniUtils <= JniUtils.c [x86_64] SharedLibrary : libJniUtils.so [x86_64] Install : libJniUtils.so => libs/x86_64/libJniUtils.so [mips64] Compile : JniUtils <= JniUtils.c [mips64] SharedLibrary : libJniUtils.so [mips64] Install : libJniUtils.so => libs/mips64/libJniUtils.so [armeabi-v7a] Compile thumb : JniUtils <= JniUtils.c [armeabi-v7a] SharedLibrary : libJniUtils.so [armeabi-v7a] Install : libJniUtils.so => libs/armeabi-v7a/libJniUtils.so [armeabi] Compile thumb : JniUtils <= JniUtils.c [armeabi] SharedLibrary : libJniUtils.so [armeabi] Install : libJniUtils.so => libs/armeabi/libJniUtils.so [x86] Compile : JniUtils <= JniUtils.c [x86] SharedLibrary : libJniUtils.so [x86] Install : libJniUtils.so => libs/x86/libJniUtils.so [mips] Compile : JniUtils <= JniUtils.c [mips] SharedLibrary : libJniUtils.so [mips] Install : libJniUtils.so => libs/mips/libJniUtils.so
8、build.gradle中设置(不设置会报错Your project contains C++ files but it is not using a supported native build system.)
sourceSets.main { jniLibs.srcDirs 'src/main/libs' jni.srcDirs = [] // This prevents the auto generation of Android.mk}9、在JniUtils类中加载so文件
static { System.loadLibrary("JniUtils"); }10、编译工程运行
0 0
- Android Studio Jni 开发实例
- Android Studio JNI开发实例
- Android Studio开发jni实例详解 (调用C代码实例)
- 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使用实例
- Android studio使用JNI实例
- android studio JNI过程实例
- Android studio使用JNI实例
- 如何获得SQL server 存储过程的修改时间
- HTTP和URL协议
- iOS 10 因苹果健康导致闪退 crash
- WebView的简单使用
- Android 自动填写验证码
- Android Studio Jni 开发实例
- Spark入门实战系列--4.Spark运行架构
- 51单片机UART通信[发送接收数字字母中文,控制LED亮灭]
- Java进制转换
- 青春对白,邮寄我的时光
- Java线程并发控制基础知识
- C++实现遍历指定文件或文件夹
- (五)C++编写动态库,以及如何调用
- java编程学习日志 第一课:小白的奋斗之路