调用第三方so文件,无需包名与so文件中的呼应java方法相同,就是创建一个jar,使它的包名和so中的包名相同。

 

1.新建一个测试工程,创建好c++代码,cmake照旧写入。

将so文件给外部工程引用

图1.1、测试工程目录

 

2.建立library

新建一个Android library的module,建立两个测试类,在其中一个测试类中导入lib,新建native方法,回到native-lib.cpp中添加方法。

将so文件给外部工程引用

图2.1、library目录

将so文件给外部工程引用

图2.2、新建类,声明native

将so文件给外部工程引用

图2.3、声明方法的时候,包名是lib的包名

 

3.生成so文件

在库的gradle中添加以下,与Android同级,(生成release必须)。打开gradle页面,选择library模块-tasks-other-makejar即可生成release版。

Jar的生成位置有两个,一个目录带有res.jar,生成的classes.jar无区别

(1)\outlibrary\build\intermediates\intermediate-jars\release

(2)\outlibrary\build\intermediates\packaged-classes\release

将so文件给外部工程引用

图3.1、添加makejar操作

将so文件给外部工程引用

图3.2、找到other下的makejar,双击运行即可生成。

 

4.导入到新的工程

   将classes.jar导入新工程的lib中,新建文件夹/src/main/jniLibs,将so文件放入其中,此时调用classes.jar中封装的方法,即可不需要包名与so文件中的方法相同。

将so文件给外部工程引用

图4.1、导入so和jar到新工程

相关文章:

  • 2021-07-03
  • 2021-05-09
  • 2021-10-14
  • 2022-12-23
  • 2022-12-23
  • 2022-02-08
  • 2021-05-07
  • 2021-12-03
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-03
  • 2022-12-23
  • 2021-07-27
  • 2022-01-03
  • 2021-09-05
相关资源
相似解决方案