android studio打包apk,jnilibs中的so库未被加载到apk内

时间:2024-03-21 11:26:29

不久前,因为需要接入人脸识别以及某个tts的播报功能,人脸识别使用旷世,语音本地播报使用思必驰,再集成的时候出现思必驰的so库无法集成到apk内,思必驰的so库结构为:android studio打包apk,jnilibs中的so库未被加载到apk内

,旷世的sdk却是使用的aar,他们的so库是直接集成在aar中,而且是使用的正式包,然后两个功能sdk集成到一起的时候,就发现,旷世的so库能正常加载到apk的安装目录下面.而思必驰的so却是缺失的!

然后我疯狂在百度,google搜索这种情况.但是,却并没有得到答案!回头一想,既然旷世的so集成在aar中可以加载,那么,思必驰的是否也可以呢!

带着死马当做活马医的想法,我尝试了一下,首先我是使用的android stidio创建了一个library,然后把sdk,so库放入这个library,

android studio打包apk,jnilibs中的so库未被加载到apk内

生成以及具体配置请看https://blog.csdn.net/qq_36333309/article/details/102563878

因为我在之前的项目中已经写了思必驰的初始化代码,那么就不在这个library里面做别的操作,然后打开右边的gradle,找到你的这个library,

android studio打包apk,jnilibs中的so库未被加载到apk内

如图点击assemble,生成aar,

android studio打包apk,jnilibs中的so库未被加载到apk内

此时生成两个aar文件,注意,因为我另一个项目使用的是release的aar,那么,这个思必驰的library也必须是release.aar,别问我为什么,因为我试过用debug.aar,结果被疯狂大脸,生成的apk中有lib这个目录,并且还有so库,

android studio打包apk,jnilibs中的so库未被加载到apk内

但是我安装的时候发现,这个apk的安装目录下的lib/arm目录并没有这四个so库,这就尴尬了,就是说so库没有被系统生成到安装目录,回过头我们再用一下release.aar,神奇的发现,打包的apk的lib目录一模一样,好吧,我觉得也凉了,安装.,,...........

咦~~~~,成功了你敢信!

android studio打包apk,jnilibs中的so库未被加载到apk内

,然后,我做这个项目一个星期,心中的大石头总算落地了~  撒花~~~~