美文网首页Android开发Android技术知识Android知识
Android NDK入门 —— 生成多个so文件

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

作者: CrayfishXu | 来源:发表于2017-09-21 14:00 被阅读474次

前言

我会在小专栏简书一起分享。
约定写一篇如何生成多个so文件,要做ndk开发肯定会涉及到生成多个so文件,此次我会将cmake和ndk-build两种编译方式一起写,东西不多,一起学习吧。

正题

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 SHARED
            src/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文件其实很简单,要想学好ndk开发,那么最好的质料就是官方了,在github上有android-ndk项目可以多参考。

相关文章

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

    前言 我会在小专栏和简书一起分享。约定写一篇如何生成多个so文件,要做ndk开发肯定会涉及到生成多个so文件,此次...

  • ndk编译生成so

    ndk-build编译生成so库 本文讲述使用Android 的ndk-build来编译生成so库,在命令行中编译...

  • JNI&NDK

    参考资料 Android Studio JNI开发入门教程android studio之jni(上)生成so文件编...

  • Android Studio NDK开发

    概述 在Eclipse的时代,我们进行NDK的开发一般需要通过手动执行NDK脚 本生成*.so文件,再将.so文件...

  • CMake 构建动态库没有生成so文件

    原文链接 最近开始学 NDK 编程,踩了不少的坑。 在 Android Studio 中生成 so 文件又两种方式...

  • Android-NDK | 指定库文件名字

    在 Android-NDK 开发中,生成的 ****.so 文件不符合规范,需要在打包时指定一个文件名。 开发环境...

  • NDK 知识梳理(1) - 使用 CMake 进行 NDK 开发

    一、前言 在Eclipse的时代,我们进行NDK的开发一般需要通过手动执行NDK脚本生成*.so文件,再将.so文...

  • AndroidNDK入门

    Android NDK 入门Android NDK 安装Android NDK 实例-静态方式函数Android ...

  • OpenCV实战之(1)图片滤镜

    前言:之前写过关于android中通过JNI使用NDK的demo,介绍了关于so文件的生成与使用,但仅仅是demo...

  • android ndk 开发2

    前言 看android ndk 1 版本。 生成so库 先配置你需要生成的CPU架构,在build.gradle中...

网友评论

    本文标题:Android NDK入门 —— 生成多个so文件

    本文链接:https://www.haomeiwen.com/subject/xhizsxtx.html