Android 4.x. Разверните собственные библиотеки через apk и загрузите их из другого приложения

У меня есть несколько собственных библиотек, и я хочу развернуть их через пакет apk (т.е. скопировать их в папку libs или в ресурсы). Затем мне нужно установить отдельное приложение и загрузить эти библиотеки, используя:

System.load(path_to_lib);

Как это можно сделать? Насколько я понимаю, из соображений безопасности я не могу просто загружать библиотеки, используя путь /data/data/libs_package/lib/native_lib.so. Есть ли другие способы?

Заранее спасибо.


person user1915649    schedule 19.12.2012    source источник
comment
AFAIK, это невозможно.   -  person CommonsWare    schedule 19.12.2012


Ответы (1)


См. эту ветку в группе обсуждения android-ndk .

Подводя итог, разработчики Google Android говорят:

Если два приложения имеют общий идентификатор пользователя, вы можете явно вызвать System.loadLibrary (), указав полный путь к общей библиотеке, которую вы хотите загрузить.
...
Но, пожалуйста, не пытайтесь ничего делать этого. Вы собираетесь причинить боль своим пользователям - будь то обновления одного или другого приложения, вызывающие несовместимость и вызывающие поломку, или когда пользователь удаляет другое приложение и заставляет вас ломаться и т. Д.

А другой разработчик предлагает следующее решение:

Итак, что я делаю сейчас (и это работает), это набор пакетов без общего идентификатора пользователя (они подписаны одним и тем же ключом, но я не думаю, что здесь это важно). Основное приложение распаковывает .so из .apk других пакетов (у меня уже есть специальный распаковщик для обхода кучи других ошибок Android). Я распаковываю их в место, известное базовому пакету, а затем оттуда dlopen ().

person Michael    schedule 19.12.2012