4

LinuxコードをAndroidに移植しようとしています。コードには、サイズが20mbをはるかに超えるいくつかのjni参照の.so共有ライブラリが含まれることに気付きました。

各.soに最大サイズがあるかどうか知りたいですか?

また、.soファイルは実際にはメモリマップされているため、アプリが持つことができる.soファイルの合計最大サイズはありますか?

私はこれをグーグルで検索しましたが、事実上何も見つかりませんでした。そのため、これを説明するリソースは非常に役立ちます。

4

2 に答える 2

5

私の知る限り、.so ファイルのサイズに制限はありません。20MB を超える共有ライブラリが使用されている Android アプリケーションをいくつか見てきました。

ただし、Android では、プロセスにロードされる .so ファイルの数に制限があります。制限は通常 128 に設定されています。 http://androidxref.com/4.2_r1/xref/bionic/linker/linker.cpp#286を参照してください。

デバイスの製造元は定数を頻繁に変更するため、正確な数はデバイスの製造元によって異なる場合があります。この数はかなり大きいと思うかもしれませんが、独自の共有ライブラリをロードしていない場合でも、プロセスには多数の組み込み共有ライブラリがロードされていることに注意してください。

20 個の共有ライブラリが制限を超えるかどうかはわかりません。それはデバイス依存です。心配な場合は、これら 20 個のライブラリを 1 つの巨大なライブラリ ファイルにマージすることもできます。

于 2013-02-14T14:28:03.837 に答える
1

Androidのダイナミックリンカーの共有ライブラリ数の制限でした。しかし、4.3以降、最近制限が削除されていることがわかりました。4.2.2 には SO_MAX があります。4.2.2の linker.cpp の注記を参照してください。ただし、4.3 では SO_MAX が削除されています。4.3 の linker.cpp の注記を参照してください。

于 2014-03-03T09:40:30.740 に答える