我已经构建了4次android静态库,每一次都有不同的ABI。所以我有这个文件:
someLib_armeabi-v7a.a
someLib_arm64-v8a.a
someLib_x86.a
someLib_x86_64.a
如何(如果可能的话(将它们组合到一个库中,该库将包含所有ABI?
提前谢谢。
您不能。
这些文件包含机器代码,每个文件用于不同的CPU体系结构,并且没有任何文件格式允许您将它们打包在一起,并让加载程序决定加载什么。
另外,请注意,*.a
文件是静态库,不能直接使用。您需要将它们链接到动态库(*.so
文件(,然后才能将它们添加到您的应用程序中。
在Android上,当构建APK时,原生库被打包在APK(实际上是一个ZIP(内的单独文件夹中,APK以ABI命名,比如:/lib/arm64-v8a/someLib.so
或/lib/armeabi-v7a/someLib.so
如果您正确配置了项目,并且设备上的操作系统有必要查找和使用库,则此打包将由构建系统自动完成。
然而,谷歌建议使用";应用程序捆绑包";它将自动将您的APK拆分为几个不同的APK,这些APK根据设备架构进行了优化,以减少用户的存储和下载带宽。
https://developer.android.com/guide/app-bundle