Android Stduio NDK项目构建

    xiaoxiao2026-08-06  17

    抽时间整理一下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());

    运行结果如图所示:

    转载请注明原文地址: https://ju.6miu.com/read-1310909.html
    最新回复(0)