博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 下 JNI 开发
阅读量:4046 次
发布时间:2019-05-25

本文共 1350 字,大约阅读时间需要 4 分钟。

02_JNI 协议

03_JNI HelloWorld-27

 

1、创建一个android工程;

2、java代码中写声明native方法 

 例如:

//声明一个本地方法

 public native String helloFromC();

3、在Android工程根目录下创建jni目录,编写c代码,方法名字要对应

 

#include<stdio.h>

#include<stdlib.h>

//必须引入jni.h的头文件,因为后面声明的方法中,会引用到jni.h中的类型;

#include<jni.h>

/**

 * Java_com_atguigu_jnihelloworld_MainActivity_helloFromC

 * Java_类名(完整的类名,需要把.替换成_)_方法名

 *

 * JNIEnv* envJNINativeInterface**(JNINativeInterface结构体的二级指针)

 *   (**env).GetVersion 调用结构体方法

 *   (*env).等价于env->所以(**env).等价于(*env)->

 * jobject objjava中调用此方法的对对象。当前是:MainActivity.this对象

 */

jstring Java_com_atguigu_jnihelloworld_MainActivity_helloFromC(JNIEnv* env,jobject obj){

    //  jstring     (*NewStringUTF)(JNIEnv*, const char*);

    char* text = "hello from C!!!";

    //(**env).NewStringUTF(env,text);

    return (*env)->NewStringUTF(env,text);

}

 

 

 

4、编写Android.mk文件

 1、进入到工程目录下:cd /d D:\jni_workspace\JNIHelloWorld

2、输入命令:ndk-build

报错,原因是还没有Android.mk文件

 

  1. 查看文档android-ndk-r9/docs/ANDROID-MK.html

在jni目录创建Adroid.mk文件,把文档内容复制到文件中:

内容如下:

   LOCAL_PATH := $(call my-dir)     include $(CLEAR_VARS)     LOCAL_MODULE    := hello-jni    LOCAL_SRC_FILES := hello-jni.c     include $(BUILD_SHARED_LIBRARY)
 
 
稍微修改Android.mk如下:

LOCAL_PATH := $(call my-dir)

 

 include $(CLEAR_VARS)

 

 LOCAL_MODULE    := atguigu

 LOCAL_SRC_FILES := hello.c

 

 include $(BUILD_SHARED_LIBRARY)

 

 

 

5、NDK编译生成动态链接库

再次执行编译命令:ndk-build

如图编译成功:

 

 

本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。

你可能感兴趣的文章
Jenkins中shell-script执行报错sh: line 2: npm: command not found
查看>>
8.X版本的node打包时,gulp命令报错 require.extensions.hasownproperty
查看>>
Jenkins 启动命令
查看>>
Maven项目版本继承 – 我必须指定父版本?
查看>>
通过C++反射实现C++与任意脚本(lua、js等)的交互(二)
查看>>
利用清华镜像站解决pip超时问题
查看>>
微信小程序开发全线记录
查看>>
CCF 分蛋糕
查看>>
解决python2.7中UnicodeEncodeError
查看>>
小谈python 输出
查看>>
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
查看>>
python:如何将excel文件转化成CSV格式
查看>>
机器学习实战之决策树(一)
查看>>
机器学习实战之决策树二
查看>>
[LeetCode By Python]7 Reverse Integer
查看>>
[leetCode By Python] 14. Longest Common Prefix
查看>>
[LeetCode By Python]121. Best Time to Buy and Sell Stock
查看>>
[LeetCode By Python]122. Best Time to Buy and Sell Stock II
查看>>
[LeetCode By Python]125. Valid Palindrome
查看>>
[LeetCode By Python]136. Single Number
查看>>