Android NDK入门 —— 生成多个so文件

编程入门 行业动态 更新时间:2024-10-23 01:33:49

Android NDK入门 —— 生成<a href=https://www.elefans.com/category/jswz/34/1771377.html style=多个so文件"/>

Android NDK入门 —— 生成多个so文件

正题

CMake编译

首先想之前一样新建一个空项目,记得勾选Include C++ support。这是一个最简单的CMake编译so的项目。接着新建一个PlusJni.java类,在cpp目录下新建一个C++文件,我命名为native-plus-lib.cpp。可以通过自动创建C++方法的方法。

public class PlusJni {static {System.loadLibrary("native-plus-lib");}public native int plusNumbers(int x,int y);
}
#include <jni.h>
extern "C"
JNIEXPORT jint JNICALL
Java_com_crayfish_cmakehello_PlusJni_plusNumbers(JNIEnv *env, jobject instance, jint x, jint y) {return x+y;
}

这是一个简单的加法运算。然后我们在CMakeLists.txt文件中,补充以下代码

add_library(native-plus-lib SHAREDsrc/main/cpp/native-plus-lib.cpp)

最后点击build->Make Module 'app'编译项目,就可以在cmake目录下的so文件了


这里只有一个armeabi文件夹是因为我在app->build.gradle文件中配置了

externalNativeBuild {cmake {cppFlags ""
//                abiFilters 'armeabi','x86','armeabi-v7a','arm64-v8a','x86','x86_64','mips','mips64' //根据需要可选一个或多个abiFilters 'armeabi'}}

ndk-build编译

我们在第一个项目基础上同样新建PlusJni.java,接着使用之前建的ToolsDNK->javah生成头文件。然后也新建native-plus-lib.cpp,重复代码就不贴了,最关键的就是Android.mk文件的编写,在最后新增这么一段。

include $(CLEAR_VARS)
LOCAL_MODULE := PlusJni //so名称
LOCAL_SRC_FILES := native-plus-lib.cpp//编译的cpp文件
include $(BUILD_SHARED_LIBRARY)

最后使用NDK->ndk-build就会生成多个so文件了。

同样我们也可以在Application.mk文件中设置APP_ABI := armeabi。这样就可以只编译armeabi文件夹了。

结尾

生成多个so文件其实很简单

想学习更多Android知识,或者获取相关资料请加入Android技术开发交流3群:820655513。 有面试资源系统整理分享,Java语言进阶和Kotlin语言与Android相关技术内核,APP开发框架知识, 360°Android App全方位性能优化。Android前沿技术,高级UI、Gradle、RxJava、小程序、Hybrid、 移动架构师专题项目实战环节、React Native、等技术教程!架构师课程、NDK模块开发、 Flutter等全方面的 Android高级实践技术讲解。还有在线答疑

更多推荐

Android NDK入门 —— 生成多个so文件

本文发布于:2023-07-28 16:06:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1244971.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:多个   入门   文件   Android   NDK

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!