JNI学习(一)hellojni

本文介绍了JNI在Android Studio中的基本使用流程,包括环境搭建、本地方法声明与实现等,并通过Hellojni项目演示了Java与C/C++代码的交互过程。

JNI已经学习了一点,觉得开始记录下一些心得比较好,也为了以后自己的复习提高。
学习JNI也是从搭建环境开始的,网上流程很多不再赘述。
第一个JNI项目依旧是Hellojni,一开始使用的IDE是eclipse,现在换成Android studio,个人感觉android studio对jni的支持更好,更方便,不需要手动生成头文件,直接在java文件里添加本地方法,在 .cpp文件中添加对应的本地方法名即可使用。

在使用android studio生成项目的时候,通过添加本地支持,来生成支持c/c++的项目,生成的项目在MainActivity中会有如下代码:

    // Used to load the 'native-lib' library on application startup.
    static {
        System.loadLibrary("native-lib");
    }

此处是用于加载本地方法库,在项目中cpp文件夹里natvie-lib.cpp中的方法都可以在此java文件中调用,hellojni项目中调用的方法,需要如下声明

    public native String stringFromJNI();

在应用调用本地的方法,返回hellojni字符串,在应用中显示,本地方法如下

extern "C"
JNIEXPORT jstring JNICALL
Java_com_seuic_ndkstudy_MainActivity_stringFromJNI(
        JNIEnv *env,
        jobject  this )
{
    std::string mString = "Hellojni";
    return env->NewStringUTF(mString.c_str());
}

代码中std::string表示string类型是从std标准域中引用的,c_str()函数返回一个指向正规C字符串的指针,内容与本string串相同。这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。
在项目中,新建一个TextView组建来显示jni返回的字符串

        TextView tv1 = (TextView) findViewById(R.id.sample_text);
        tv1.setText(stringFromJNI());

运行app时可以显示hellojni字符串,调用成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值