文章目录
打包so库及jar包,发到仓库供他人使用
Android的NDK开发相信各位已经精通各种姿势了。不过基本上都是那种native代码和java代码都在同一个工程中,因为应用从头到脚都是我们自己的,也不需要分离。但有时候可能需要我们自己把某些库打包起来供别人使用,或者使用别人提供给我们的库。本篇文章及下篇文章就讲讲so库如何打包。
介绍
这篇文章会讲第一种方式来打包so库,这种方式是基于jni层的,需要我们同时提供接口的jar包来配合使用,适用于对方从java层调用我们的库。因为jni中的函数名是有特殊要求的,它会指定jni的java接口的路径,如果不提供jar包,那么使用者就要按照我们在jni头文件中声明的函数名来建立java文件,这将是非常痛苦的。
废话不多说,直接嘎斯。
1、新建库module
File > New > New module > Android Library
填好相关信息等就可以finish了。目前我在用的是AndroidStudio4.0,在新建工程的时候已经找不到添加c++ support的选项了,因此一会儿也免不了要自己去改build.gradle文件来添加c++支持。
新建完后的工程结构如图
2、为库模块添加C++支持
2.1准备CMakeLists文件
如果你会自己写的话最好,不会的话,可以新建一个支持c++的工程,在我现在的AndroidStudio4.0版本上,在Chose Project这一步时,选择Native C++就会有了 ,然后复制这个工程的CMakeLists和native-lib.cpp文件过来就好了。
cmake_minimum_required(VERSION 3.4.1)
# 这一句用来导出编译生成的so库
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${
PROJECT_SOURCE_DIR}/jniLibs/${
ANDROID_ABI})
include_directories(src/main/cpp)
file(GLOB CPP_FILES "src/main/cpp/*.cpp")
add_library(
native-l