Android Studio 生成so包和.H文件给jni调用产生新so包。(即so包调so包)

简单说下此文的目的:

1.如何自己 生成 so包跟H头文件 给别人使用。

(常见使用第三方给的,但是怎么生成就???,此文介绍。)

2.如何使用这个so包跟H头文件 自己再生成新的so包。

(这个就基本上都会用了,这里是为了配合1介绍)

第一步:先使用AS创建一个支持C/C++项目。


第二步:创建项目后在cpp文件夹下面创建一个h文件和一个cpp文件


1.h文件和cpp文件里面这里就随意写一个求和的


第三步:修改CMakeLists.txt文件。

这里只是改了生成的包名。和加入Hello.cpp文件


第四步:编译 运行。这里虽然没有调用Hello.cpp里面的方法,但不影响so包的生成。

由于我在build.gradle里面指定了生成版本所以这里只有v7a的。


到此,第一个so包生成,而且跟其他博客介绍的一样到这里应该没什么大问题。

接下来 才是重点,怎么在另一个c++项目里引用这个so。

第五步:现在再新建一个支持C/C++项目,跟第一步一样,

然后把第一个项目生成的libhello.so放到新建的armeabi-v7a文件夹下面

把第一个项目创建的Hello.H文件放到新建的include文件夹下面


第六步:修改CMakeLists.txt文件,这里跟上面一样为了方便看删掉了官方注释。

            加入头文件引用和动态链接so包。这里是第一个项目的so包跟头文件。


第七步:在MainActivity里面创建一个方法 adds() 并在native-lib.cpp文件中生成对应的方法调用so包里面的方法。

        注意引用头部最好加入include



第八步,同样的编译运行。下面是产生的新的libnative-lib.so包和调用运行的结果。




到此为止,在jni里面调用so包的方法完成,并产生第二个新的so包。

这里说一下这样做的原因,大部分是因为第三方会给这样的so包配合h头文件使用。

同时也清楚这其中的使用流程。尤其是第一个项目生成so包和h头文件给第二个项目使用的流程。

这样做目的当然是为了不想让你看到实现方法。也无法修改实现方法。以及一些商业机密。

在这里难免有些步骤出错,导致包找不到,或者类找不到,所以我放到另外一篇文章,供参考。

https://blog.csdn.net/SXH_Android/article/details/80700963


项目的demo

项目一:

https://github.com/talentsxh/HelloApplication

项目二:

https://github.com/talentsxh/TestHello



  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值