Android Studio进行JNI开发

1 篇文章 0 订阅
1 篇文章 0 订阅
第一步:新建一个java类,比如我新建MyJNI.java,并且在里面加载项目的so库,比如我的项目名字为JNITest,就loadLibrary("JNITest"),
并且定义自己要使用的方法

public class MyJNI {

    //加载so库
    static {
        System.loadLibrary("JNITest");
    }

    //需要在Activity中用到的方法
    public  static native String printHello();
}

第二步:使用javac命令生成MyJNI的class文件:javac MyJNI.java

第三步:生成.h文件:打开命令行跳转到:项目的根目录->app->src->main->java,然后输入 javah -jni 你的类的包名.类名,比如我的是:
javah -jni com.example.ll.jnitest.MyJNI,成功后会app->src->main->java下面生成一个.h文件,比如我的是:
com_example_ll_jnitest.MyJNI.h

第四步:在app->src->main下面新建文件夹jni,然后在里面新建c/c++文件,比如我新建Test.c文件,然后把上一步生成的.h文件里面的内容全部
复制到里面并且实现里面的方法,我的是:


/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_example_lloydfinch_rxjavatest_MyJNI */

#ifndef _Included_com_example_lloydfinch_rxjavatest_MyJNI
#define _Included_com_example_lloydfinch_rxjavatest_MyJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_example_lloydfinch_rxjavatest_MyJNI
 * Method:    printHello
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_example_lloydfinch_rxjavatest_MyJNI_printHello
        (JNIEnv *env, jclass jobj){
    
    return (*env)->NewStringUTF(env,"JNI Test!");

}

#ifdef __cplusplus
}
#endif
#endif


第五步:在jni文件夹下新建一个空白的util.c文件

第六步:配置环境,在local.properties文件中设置ndk的路径,比如我的是:
ndk.dir=/Users/lloydfinch/venn/soft/sdk/android-sdk-macosx/ndk-bundle,然后在app下面的build.gradle里面的
defaultConfig里面添加:

ndk {
    moduleName "JNITest"
    ldLibs "log", "z", "m"
    abiFilters "armeabi", "armeabi-v7a", "x86"
}
然后在gradle.properties文件的最后一行添加:
android.useDeprecatedNdk=true 即可

第七步:生成so文件:rebuild一下你的项目,即可在 app\build\intermediates\ndk\debug\lib下面生成一堆文件

第八步:配置和使用,在app->src->main->java下面新建文件夹jniLIB,然后将上一步生成的so文件全部复制到此处,然后在我们的Activity里面
就可以直接调用第一步的java类里面声明的方法了:String str = MyJNI.printHello();


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值