Рассмотрим следующую ситуацию: у меня есть два проекта Android с именами P1 и P2, которые создают apk, которые используют один и тот же идентификатор процесса и будут работать в одном и том же процессе на Android.P1 и P2 оба используют библиотеку Java JL1.JL1 загружается во время выполнения совместно используемой библиотеки1 SL1.
Что я вижу во время выполнения, так это то, что в какой-то момент я получаю java / lang / UnsatisfiedLinkError при загрузке этого SL1.Он также выводит: Shared lib уже открыт.
Что вызывает эту проблему?Я предполагаю, что код библиотеки в java как бы копируется в каждый проект / apk, и во время выполнения, когда apks объединяются в один процесс, он забывает о копиях.Таким образом, каждая копия загружает свою общую библиотеку сама, вызывая уже загруженную ошибку.
Если это так, разве это не нежелательное поведение?Потому что теперь вы никогда не сможете использовать библиотеку Java с общей библиотекой в одном и том же процессе, который использовался более одного раза.
[править] Я обнаружил, что каждый apk использует свой собственный загрузчик классов (также в том же процессе).Это означает, что каждый JL будет загружен классом на apk, и, следовательно, каждый общий объект будет загружен более одного раза, что приведет к ошибке.У кого-нибудь есть идеи, как обойти это?Можно ли разрешить apks совместно использовать загрузчик классов?