安卓最大共享库大小

5

我正在尝试将一些Linux代码移植到Android。我意识到该代码涉及多个jni引用的.so共享库,总大小超过20 MB。

我想知道每个.so文件是否有最大大小限制?

另外,由于.so文件实际上是内存映射的,我的应用程序可以拥有的.so文件的总大小是否有限制?

我搜索了一下,基本上什么也没有找到,因此提供这方面信息的资源将非常有帮助。

2个回答

5
据我所知,.so文件的大小没有限制。我见过一些使用超过20MB共享库的Android应用程序。
然而,在Android中,对于在进程中加载的.so文件数量有限制。该限制通常设置为128。请参考http://androidxref.com/4.2_r1/xref/bionic/linker/linker.cpp#286
确切的数字可能因设备制造商而异,因为他们经常更改常数。您可能认为这个数字足够大了,但请注意,即使您没有加载任何自己的共享库,也会在进程中加载许多内置共享库。
我无法告诉您这20个共享库是否会超出限制。这取决于设备。如果您担心,可以将这20个库合并为一个巨大的库文件。

那个链接基本上回答了我很多问题,尽管我更关心.so文件的大小而不是数量。谢谢Jiyong。 - Ankur Aggarwal

1
这是关于Android动态链接器共享库数量的限制。但是我最近发现自从4.3版本以后,这个限制已经被移除了。在4.2.2版本中,有一个SO_MAX的限制,请参考note of linker.cpp in 4.2.2。但是在4.3版本中,SO_MAX已经被移除了,请参考note of linker.cpp in 4.3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接