0%

NDK入门

最近需要打包C++文件成so库,按照网上教程同步的方式,build/intermediates下始终没有ndk文件中的so库

当前环境
windows 10
Android Studio3.5.3
NDK r21

  • 配置NDK环境变量
    我的电脑 右键–>属性–>高级–>环境变量 path中添加ndk-bundle路径
  • 新建jni文件
    src/main/java同级目录下src/main/jni
    将c++文件和头文件全部放入
  • jni目录下新建Android.mk文件
    你的so库名称对应java类中System.loadLibrary(“so库名称”)
    1
    2
    3
    4
    5
    6
    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)

    LOCAL_MODULE := 你的so库名称
    LOCAL_SRC_FILES := 你的.cpp
    include $(BUILD_SHARED_LIBRARY)
  • jni目录下新建Application.mk文件
    APP_ABI := all
    打包所有支持cpu架构
  • 在jni目录下打开power shell
    输入ndk-build
    ndk-build.png
    jni同级目录下会有libs/* 各平台so库文件
  • app build.gradle中配置so库路径
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    android{
    //***
    sourceSets {
    main() {
    jniLibs.srcDirs = ['src/main/libs']
    jni.srcDirs = []
    }
    }
    }