240,安卓最牛教材

打开 Android Studio 的 Terminal 到 移动到 app/src/main/java 目录下执行命令:javah -jni com.ldw.jnitest.JniDataUtil,

执行以后在java路径下生成com_ldw_jnitest_JniDataUtil.h

240,安卓最牛教材

在app/src/main目录下创建一个jni的目录,然后将com_ldw_jnitest_JniDataUtil.h移动到jni的目录下,同时在 jni 目录下创建一个 c/c++ resource 文件 test.cpp,

#include<jni.h>

//导入我们创建的头文件

#include “com_ldw_jnitest_JniDataUtil.h”

#ifdef __cplusplus

extern “C” {

#endif

/*

  • Class: com_ldw_jnitest_JniDataUtil

  • Method: get

  • Signature: ()Ljava/lang/String;

*/

JNIEXPORT jstring JNICALL Java_com_ldw_jnitest_JniDataUtil_get

(JNIEnv * env, jclass obj)

{

return env->NewStringUTF(“This is my NDK Application”);

}

#ifdef __cplusplus

}

#endif

下面的这个方法使我们从头文件中复制过来的,头文件是自动生成的com_ldw_jnitest_JniDataUtil.h

/* DO NOT EDIT THIS FILE - it is machine generated */

#include <jni.h>

/* Header for class com_ldw_jnitest_JniDataUtil */

#ifndef _Included_com_ldw_jnitest_JniDataUtil

#define _Included_com_ldw_jnitest_JniDataUtil

#ifdef __cplusplus

extern “C” {

#endif

/*

  • Class: com_ldw_jnitest_JniDataUtil

  • Method: get

  • Signature: ()Ljava/lang/String;

*/

JNIEXPORT jstring JNICALL Java_com_ldw_jnitest_JniDataUtil_get

(JNIEnv *, jclass);

#ifdef __cplusplus

}

#endif

#endif

240,安卓最牛教材

然后我们在 jni 目录下创建两个 .mk 文件:

一个 Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := JNITest

LOCAL_SRC_FILES := test.cpp

include $(BUILD_SHARED_LIBRARY)

一个是 Application.mk:

APP_ABI := all

Android.mk参考

LOCAL_PATH:=$(call my-dir)

include $(CLEAR_VARS)

#libtestjni.so //生成so的名字

LOCAL_MODULE := testjni //生成模块的规则,生成的so的名字testjni

LOCAL_SRC_FILES := test.cpp //生成模块的规则,so依赖的cpp文件可以有多个

LOCAL_LDLIBS := -llog //生成模块的规则,当前so依赖的so

include $(BUILD_SHARED_LIBRARY) //生成尾缀是so的文件

然后我们需要生成 so 库:

打开 Terminal,到 app/src/main/jni 目录下,使用 ndk-build 命令生成 so 库:

240,安卓最牛教材

240,安卓最牛教材

接着打开 app/src/main/libs 就可以看见我们生成的 so 库了。

240,安卓最牛教材

5.为了防止 so 库兼容错误,在 gradle.properties 最后一行添加:

android.useDeprecatedNdk=true

结语

  • 现在随着短视频,抖音,快手的流行NDK模块开发也显得越发重要,需要这块人才的企业也越来越多,随之学习这块的人也变多了,音视频的开发,往往是比较难的,而这个比较难的技术就是NDK里面的技术。
  • 音视频/高清大图片/人工智能/直播/抖音等等这年与用户最紧密,与我们生活最相关的技术一直都在寻找最终的技术落地平台,以前是windows系统,而现在则是移动系统了,移动系统中又是以Android占比绝大部分为前提,所以AndroidNDK技术已经是我们必备技能了。
  • 要学习好NDK,其中的关于C/C++,jni,Linux基础都是需要学习的,除此之外,音视频的编解码技术,流媒体协议,ffmpeg这些都是音视频开发必备技能,而且
  • OpenCV/OpenGl/这些又是图像处理必备知识,下面这些我都是当年自己搜集的资料和做的一些图,因为当年我就感觉视频这块会是一个大的趋势。所以提前做了一些准备。现在拿出来分享给大家。

有需要的小伙伴可以私信我免费分享给你或者点击下面链接自行领取

Android学习PDF+架构视频+面试文档+源码笔记

240,安卓最牛教材

](https://github.com/a120464/Android-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)

[外链图片转存中…(img-qGO5eD3v-1643941442669)]

240,安卓最牛教材

上一篇:玩转ECS云盘 — 按量付费升级到包年包月云盘


下一篇:直播软件开发的直播平台源码搭建中流媒体技术详解