我有一个企业应用程序,我手动部署(没有Google Play),它使用许多.so库进行映射(ArcGIS)。但是,libs文件夹中的.so文件(arm,armv7a,x86)将.apk大小从3mb扩大到21mb。我不特别想删除其中一个.so文件(删除对该架构的支持),或者每个架构都有一个.apk。
任何人都可以想到一种方法,我可以更新我的应用,而不会在每次更新.apk中包含.so文件吗?
答案 0 :(得分:0)
是的,您可以让应用程序的Java部分手动将相应的.so文件下载到应用程序的内部存储文件夹中,并将其标记为可执行文件。
然后,您必须使用System.load()和.so文件的完整路径名加载它们,而不是System.loadLibrary()和修剪后的库名。
这里最大的问题是你现在负责自己匹配ABI,更重要的是,提供自己的保护,防止被欺骗安装修改或冒名图书馆,这可能会在你的应用程序名称和使用中做一些恶意它的权限。
当然,您必须确保在安装之前不要尝试调用任何本机方法。
你也可以考虑将.so文件作为二进制资产提供给它们自己的骨架.apk将共享用户ID(和匹配的证书)作为你的主要.apk
或者您可以简单地为每个目标制作特定于平台的.apk,只包含一个.so,并让您的分发系统选择正确的(尽管这对升级问题没有帮助)。