Android 创建第一个jni文件
来源:互联网 发布:太阳能发电原理知乎 编辑:程序博客网 时间:2024/05/16 16:21
1、在项目文件里创建jni文件夹
2、在jni里创建c文件
3、在java代码里,创建一个本地方法helloFromC
public class JniActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void start(View view){ } public native String helloFromC();}
4、在c文件里创建函数jstring com_android_imooc_jni_JniActivity_helloFromC
1)com_android_imooc_jni包名称
2)JniActivity类名称
3)helloFromC方法名称
5、返回Java字符串
#include <stdio.h>#include <stdlib.h>#include <jni.h>jstring com_android_imooc_jni_JniActivity_helloFromC(JNIEnv* env, jobject obj){ char* content = "hello world"; //jstring jstr = (*env)->NewStringUTF(env,content); //转换成java字符串 jstring jstr = (*env)->NewStringUTF(env,content); return jstr;}
6、配置ndk环境变量,并在jni目录下创建Android.mk文件
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)#编译生成的文件的类库叫什么名字 LOCAL_MODULE := hello #要编译的c文件 LOCAL_SRC_FILES := Hello.c include $(BUILD_SHARED_LIBRARY)
7、进入到jni目录,打开命令窗口
运行:ndk-build.cmd回车就能编译了
8、编译完成后在libs目录下会生成一个.so文件
9、加载类库,就能调用c语言写的代码了
static{ //加载类库 System.loadLibrary("hello"); }
10、如果出现错误,可能是系统不兼容的,有些cpu是arm架构,有些是x86等,那我们要怎么解决呢?
在jni文件夹里添加Application.mk文件内容如:
APP_ABI := armeabi armeabi-v7a x86或APP_ABI := all
11、如果函数名很长,很怪,那如何编写jni文件呢?不要紧,可以使用javah搞定,
首先进入到这个项目的src文件夹下
javah com.android.imooc.jni.JniActivity
12、配置NDK的路径
13、配置完,就可以使用工具生成本地的类库了
输入imooc,此时jni目录下自动生成,里面有两个文件
强调说明:用这种办法添加的jni目录就不能删除了,小心!!!
14、如何去除.c文件里的黄线
0 1
- Android 创建第一个jni文件
- 使用Android Studio 创建第一个JNI Helloword
- Android第一个JNI程序
- Android(1):创建第一个android工程文件
- Android NDK探究奥秘一:Android Studio创建第一个JNI项目
- 创建第一个HTML文件
- 创建第一个HTML文件
- Android开发教程--第一个JNI程序
- 我的第一个Android JNI程序
- Android Studio第一个jni程序
- Android Studio 第一个JNI程序
- Android Studio 第一个JNi工程
- Android Studio开发JNI - 第一个JNI程序
- 创建第一个Android程序
- 创建第一个Android应用程序
- 创建第一个android工程
- 创建第一个Android项目
- 创建第一个android应用
- 5.6 Column Attribute
- cc254x的外部32.768k晶振
- IR的设计
- java基础1
- 【java并发】条件阻塞Condition的应用
- Android 创建第一个jni文件
- JavaScript中函数的定义方式
- php 数组操作(jcxn实践)
- 浅谈Android和java中的多线程下载
- Android 使用service实现多线程断点续传下载
- MySQL 如何查看SQL 语句执行时间
- 使用搬瓦工bandwagonhost VPS安装Shadowsocks Server
- 开源的一些基础介绍
- 谷歌浏览器为什么不能自动保存账户密码?