2013-02-14 43 views
4

我试图将一些Linux代码移植到Android。我意识到代码会涉及多个jni引用.so共享库,大小超过20 MB。Android最大共享库大小

我想知道每个.so是否有最大大小?

另外,是否有我的应用程序可以具有的.so文件的总最大大小,因为.so文件实际上是内存映射?

我用Google搜索,发现这个几乎没有,所以描述这个资源是非常有帮助的

回答

5

据我所知,在.so文件的大小没有限制。我见过几个使用20MB以上共享库的Android应用程序。

但是,在Android中,您的进程中加载​​的.so文件的数量有限制。限制通常设置为128.请参阅http://androidxref.com/4.2_r1/xref/bionic/linker/linker.cpp#286

确切的数字可能会因设备制造商的不同而不同,因为它们经常会改变常数。你可能认为这个数字相当大,但请注意,即使你没有加载任何你自己的共享库,你的进程中也会加载许多内置的共享库。

我不能告诉你,20个共享库将会或不会超过限制。它依赖于设备。如果您担心,可以将这20个库合并成一个巨大的库文件。

+0

这个链接很大程度上回答了我的问题,尽管我更关心.so而不是他们的数量的大小。谢谢Jiyong。 – 2013-02-14 17:53:11