Android 创建第一个jni文件

原创 2016年06月01日 22:56:11

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文件里的黄线
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android JNI基础:什么是JNI

一、什么是JNI 1)jni是本地开放接口,是一个协议 2)用来沟通java与(c/c++); 3)通过这个协议java可以调用c/c++ 4)外部的c/c++也可调用java二、Androi...
  • lovoo
  • lovoo
  • 2016年05月16日 22:41
  • 1249

转一篇Linux下通过Java Jni调用C,C++库的文章

PS:试过了,按着这篇文章的步骤,是可以正确的让Java调用c,c++的代码 另外要注意的一点就是,操作过程要小心,别搞混淆了,否则很容易出错 在 Linux 平台下使用 JNI ...
  • chlaws
  • chlaws
  • 2012年06月10日 18:14
  • 5868

使用Android Studio 创建第一个JNI Helloword

使用Android Studio 创建第一个JNI Helloword 本文讲述使用android studio 创建一个简单的hello word 1、as安装NDK Setting->...

Android NDK探究奥秘一:Android Studio创建第一个JNI项目

android studio开发NDK还是很方便的。无论是ndk-build还是cmake方式。c/c++来实现,让开发人员越来越懒。...

Android For JNI(六)——交叉编译,NDK概述以及文件结构,编写自己的第一个JNI工程

Android For JNI(六)——交叉编译,NDK概述以及文件结构,编写自己的第一个JNI工程 终于回到我们的android了,我们先要配置这个NDK的环境,但是之前,我们还要了解一下基本的...

NDK-JNI实战(一) 在Android Studio运行第一个NDK程序

介绍。 第二步就是就是直接写代码了。哈哈,你没听错,是这样的,方便吧?至于下载下来的NDK怎么和AS工程关联,也就是一行配置的问题,后文有说明带你一步一步体验。 But,还是要有个but,Androi...

MAC环境下Android Studio的第一个JNI程序

MAC环境下Android Studio的第一个JNI程序1、环境配置 开发JNI需要用到NDK的支持,需要另外下载NDK。 在Android Studio的设置窗口里面(在AVD按钮的左边一个扳...

Android JNI学习之第一个入门实例(确实花了不少功夫,也遇到了很多阻碍,不过还好,最终解决,记录下)

关于如何安装配置Cygwin,如何安装ndk网上搜搜一大片,这里不再赘述。下面主要对这个简单的JNI实例的实现,做一个记录。 注意:使用的是ndk-1.6.r1,在ndk_r4版本后和这有点区别,这里...

Android Studio第一个jni程序

基于android studio1.4 gradle 2.5 一名苦逼的程序员,花了一天时间查找各种资料,学习前辈教程,终于跑成功了第一个jni程序,将过程记录下来,加深印象。 具体步骤 再次...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 创建第一个jni文件
举报原因:
原因补充:

(最多只允许输入30个字)