Android Stduio NDK项目构建

抽时间整理一下Android Studio构建NDK项目的流程,以一个HelloNDK项目为例

关于引用第三方开源库,可以参考这篇


环境配置:

1. settings->Tools->External Tools添加,如图所示:


2.环境变量Path中加入ndk的目录


创建项目:

1.创建Android Studio项目,在需要使用C语言动态库的Java类中加入,本例中为MainActivity:

static {
    System.loadLibrary("HelloNDK");
}

private native String helloNDK();

2.Build->Make Project,生成类文件(MainActivity.class)

3.项目上右键->New->Folder->JNI Folder,创建jni目录

4.上面的Java类上右键->External Tools->javah,生成jni头文件,本例为com_yjp_ndkprojectas_MainActivity.h,函数声明如下:

JNIEXPORT jstring JNICALL Java_com_yjp_ndkprojectas_MainActivity_helloNDK
  (JNIEnv *, jobject);

5.gradle.properties文件中加入android.useDeprecatedNdk=true


编写C语言函数

在项目外创建一个jni目录,在其中实现C语言部分

1.C语言层的代码例子很简单:

HelloNDK.h

#ifndef _HELLO_NDK_H_
#define _HELLO_NDK_H_

char *helloNDK(void);

#endif

HelloNDK.cpp

#include "HelloNDK.h"

char *helloNDK(void)
{
	return "hello NDK";
}

2.完成jni接口层代码:

JNIEXPORT jstring JNICALL Java_com_yjp_ndkprojectas_MainActivity_helloNDK(JNIEnv *env, jobject)
{
	return env->NewStringUTF(helloNDK());
}

3..编写Android.mk文件

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := HelloNDK
LOCAL_SRC_FILES := HelloNDK.cpp \
                   com_yjp_ndkprojectas_MainActivity.cpp
include $(BUILD_SHARED_LIBRARY)

4.将ndk-build拷贝到项目外的jni目录下,命令行执行ndk-build,会在jni上级目录下产生libs目录,其中有各个硬件平台的so库


将so库集成到项目中:

1.在项目的app/src/main目录下创建jniLibs目录

2.将上一步生成的libs下的armeabi目录复制到jniLibs目录下


调用so库函数:

在MainActivity中,加入代码

TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(helloNDK());

运行结果如图所示:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值