Android串口开发基于ndk简书,使用Android Studio进行NDK开发

这篇博客详细介绍了Android NDK开发的步骤,包括创建Java类定义native方法,使用javah生成C头文件,编写C源代码实现方法,配置NDK路径,最终编译生成SO库。通过这个过程,读者可以学习如何在Android应用中调用本地C代码。
摘要由CSDN通过智能技术生成

第一,创建一个新项目,并且新建一个类FirstJNI

定义两个native接口getStringFromNative和getIntFromNative。public class FirstJNI {

static{

System.loadLibrary("firstjni");//so 名称

}

public static native String getStringFromNative();

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

}

c1ad63f8ef40

第二,执行Build->Make Project

c1ad63f8ef40

编译工程,生成.class文件,在这个目录下/Users/littleghost/Documents/Android/Github/FirstJNI/app/build/intermediates/classes/debug/me/corer/firstjni

c1ad63f8ef40

第三,使用命令行生成c头文件

进到项目的app/src/main目录CorerMacBook-Pro:~ littleghost$ cd /Users/littleghost/Documents/Android/Github/FirstJNI/app/src/main

执行javah命令CorerMacBook-Pro:main littleghost$ javah -d jni -classpath /Users/littleghost/Documents/Android/SoftWare/sdk/platforms/android-16/android.jar:../../build/intermediates/classes/debug me.corer.firstjni.FirstJNI

这时候就会发现项目中多了一个jni目录,里面有一个.h文件me_corer_firstjni_FirstJNI.h

c1ad63f8ef40

第四,在jni目录中,新建main.c文件,实现头文件定义的方法

c1ad63f8ef40

第五,配置ndk,生成so文件

到这里后,我们再执行一个"Build->Make Project",发现"Messages Gradle Build"会给出提示如下:Error:Execution failed for task ':app:compileDebugNdk'.

> NDK not configured.

Download the NDK from http://developer.android.com/tools/sdk/ndk/.Then add ndk.dir=path/to/ndk in local.properties.

(On Windows, make sure you escape backslashes, e.g. C:\\ndk rather than C:\ndk)

这时候我们就应该先这里下载ndk,

然后在项目的local.properties配置ndk的目录

c1ad63f8ef40

修改build.gradle配置

c1ad63f8ef40

这时,再执行"Build->Rebuild Project",就可以编译出so文件了,在以下目录/Users/littleghost/Documents/Android/Github/FirstJNI/app/build/intermediates/ndk/debug

c1ad63f8ef40

第六,调用

直接在MainActivity中调用getStringFromNative和getIntFromNative

c1ad63f8ef40

c1ad63f8ef40

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值