Android上,使用JNI调用C的函数,hellojni

本文介绍如何在Android Studio中使用Java Native Interface (JNI) 调用C/C++代码。步骤包括创建工程、定义Java接口、生成并实现C/C++函数、配置NDK及构建项目等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


参考:http://jingyan.baidu.com/album/495ba841e1d83b38b30ede2b.html?picindex=1


1. 首先,在Android studio中,创建工程。


2. 创建一个接口类JniTest

JniTest.java 的内容是

package com.example.yjx.testjpeg;

/**
 * Created by yjx on 2016-9-26.
 */
public class JniTest {
    //本地方法获得字符串,本地方法有c/c++实现
    public static native String helloPromC();
    static {
        //指定库名,加载动态库需要,需要和build.gradle中指定的库名相一致
        System.loadLibrary("hello-jni");
    }
}


3. Build->Make Project(ctrl+f9) 注意:生成class文件


4. 在AS的Terminal窗口中,切换到工程目录下debug目录 ,生成该类的.h文件,在控制台执行如下命令:



5. 执行完后该debug目录下多了.h文件,将其复制粘贴到android studio的jni目录下



6. 在jni目录下添加功能c代码,jni->new->c/c++ source file 注意勾选生成.h文件




7. C文件内容如下(函数可从com_example_yjx_testjpeg_JniTest.h文件copy改写),注意添加该头文件

#include "hello.h"
#include "com_example_yjx_testjpeg_JniTest.h"

/**
* Class: com.example.yjx.testjpeg.JniTest
* Method: helloPromC()
**/

JNIEXPORT jstring JNICALL Java_com_example_yjx_testjpeg_JniTest_helloPromC(JNIEnv *env, jclass obj){
    //char buf[]="Hello jni yin";
   // return (*env)->NewStringUTP(env,buf);
    return (*env)->NewStringUTF(env,"Hello from JNI!");
};

8.  在mainactivity.java添加调用方法

package com.example.yjx.testjpeg;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView tv=(TextView) findViewById(R.id.aaa);
        JniTest jnitest=new JniTest();
        String getC=jnitest.helloPromC();
        tv.setText(getC);
        Toast.makeText(this,"从C读取字符串:"+ getC,Toast.LENGTH_LONG).show();
    }
}

9.  编辑该项目的build.gradle,在defaultConfig{}内添加如下代码:(添加ndk{},那部分)



10. 编辑整个工作区间的gradle.properties使能ndk



11. 配置ndk路径Open Module Settings(F4):Ndk目录\android-ndk-r11c



12. 运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值