Android Jni编写

本文详细介绍如何使用JNI技术在Android中创建并调用本地C/C++库。包括NDK环境配置、JNI文件创建、Java代码编写及运行演示等步骤。

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

Android经常会调用到jni库,作为厂商经常需要提供jni库给用户,一方面是对客户提供接口,方便客户操作。

另一方面,算法或者设备操作细节不方便对客户公开,对我们代码起到保密作用。

以建立一个Pwm为例,以下分几步介绍jni创建,示例打印log,不具体操作设备文件。

文章分为5步:1、NDK环境配置 2、创建jni文件 3、激活NDK 4、Java编写 5、运行演示结果

1、NDK环境配置

eclipse基本配置就不描述了.NDK是编译jni的工具,可以理解成google修改过的可以编译Makefile的工具。

Window->Preferences->Android->NDK,配置NDK路径如下图。

2、创建jni文件

创建jni目录

创建pwm.c文件在新建的jni目录下.函数命名规则Java_包名_类名_函数名(...),必须和java包名类名一样,如果不一致,运行时候会报加载库错误。(参考“4、Java编写”的包名和类名)

#include <jni.h>
#include <android/log.h>
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "pwm", __VA_ARGS__)
JNIEXPORT int JNICALL Java_com_oo_pwm_Pwm_open(JNIEnv * env, jobject jobj)
{
	LOGD("pwm open\n");//打印Log
	return 0;
}

编写Android.mk文件在新建的jni目录下

LOCAL_PATH:= $(call my-dir)  
include $(CLEAR_VARS)  

LOCAL_MODULE:= libpwm   #库名
LOCAL_SRC_FILES:= pwm.c #源文件
LOCAL_LDLIBS :=-llog    #打印Log需要的库
include $(BUILD_SHARED_LIBRARY) #生成共享库

注意这部分代码,不能直接复制到你的工程,否则eclipse识别错误。需要自己手动输入。


3、激活NDK

Android Tools->Add Native Support

Project->Build Project,编译生成pwm.so

C:\jre\android-ndk-r8e\ndk-build.cmd all 
"Compile thumb : pwm <= pwm.c
SharedLibrary  : libpwm.so
Install        : libpwm.so => libs/armeabi/libpwm.so<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">	</span>

4、Java编写

建立Pwm类到com.oo.pwm包下,请注意这里的包名和类名。

Pwm.java代码

建立Pwm接口

package com.oo.pwm;

public class Pwm {
	static {
		System.loadLibrary("pwm");//lib不用写
	}
	public native int open();

}
MainActivity.java代码

调用Pwm接口

package com.oo.pwm;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

	private Pwm mPwm;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		mPwm = new Pwm();
		mPwm.open();
	}	
}

5、运行演示结果

提示"pwm open",成功执行到jni open函数



错误处理:

找不到include文件

Project->Properties->C/C++ General->Path and Symbols

点击Add,加入ndk的include路径

点击Export

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值