android studio jni 环境配置

环境配置主要是为了生成相应的 so库,并且加载它

一.  ndk环境配置

1. 生成相应.h, .c , .cpp,及jni文件夹

(1) MainActivity 中加入静态方法,如

    public static native String helloJni();

public static native int addCalc(int a, int b);

(2)在Terminal中打开JAVA文件所在目录

       输入 javah -jni com.work.ndkdemo.MainActivity                                                   得到com_work_ndkdemo_MainActivity.h

(3) 新建jniFolder

     将.h文件移入

     新建com_work_ndkdemo_MainActivity.c   实现之前定义的方法

 

#include<com_work_jnidemo_MainActivity.h>

JNIEXPORT jstring JNICALL Java_com_work_jnidemo_MainActivity_helloJni

  (JNIEnv *env, jclass jobj) {

    return (*env)->NewStringUTF(env,"Hello JNI!");

}

 

JNIEXPORT jint JNICALL Java_com_work_jnidemo_MainActivity_addCalc

  (JNIEnv *env, jclass jobj, jint ja, jint jb) {

  return ja + jb;

}

 

2. 生成 .so 文件

 (1)在jni文件夹中新建 Application.mk

 

APP_ABI := armeabi-v7a x86

#最常用的APP_ABI字段:指定需要基于哪些CPU平台的.so文件

 

(2)在jni文件夹中新建Android.mk

 

LOCAL_PATH       :=  $(call my-dir)

#设置工作目录,而my-dir则会返回Android.mk文件所在的目录

include              $(CLEAR_VARS)

#清除几乎所有以LOCAL——PATH开头的变量(不包括LOCAL_PATH)

LOCAL_MODULE     :=  hello_jni

#设置模块的名称,即编译出来.so文件名

#注,要和上述步骤中build.gradle中NDK节点设置的名字相同

LOCAL_SRC_FILES  :=  com_work_jnidemo_MainActivity.c

#指定参与模块编译的C/C++源文件名

include              $(BUILD_SHARED_LIBRARY)

#指定生成的静态库或者共享库在运行时依赖的共享库模块列表。

 

(3) 配置 Setting->External Tools             ndk-bundle

(4)使用ndk-bundle编译jni文件夹     得到obj文件夹

     将obj/local文件夹中的文件夹复制到libs, 只保留.so文件

 

3. 配置及使用.so文件

(1)检查local.properties

(2)  修改 app:  build.gradle

defaultConfig中加入

             ndk {

            moduleName "hello_jni"

            stl "stlport_static"

            ldLibs "log"

            abiFilters "armeabi-v7a", "x86"

        }

Android 中加入

    sourceSets{

        main{

            jniLibs.srcDirs = ['libs']

        }

    }

(3)

Java文件中加入

static {

        System.loadLibrary("hello_jni");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值