Как запустить внешние, загруженные, но не установленные приложения на Android?

Мне просто интересно:

Некоторые приложения, обычно для разработчиков, позволяют загружать другие примеры приложений и выполнять примеры приложений без их установки.

Примером такого приложения является приложение " DevAppsDirect (очень рекомендую его BTW).

Мой вопрос:

Как работают такие приложения?

Я имею в виду, они загружают APK? Как они пропускают фазу установки и как-то запускают загруженные приложения? Они каким-то образом сливаются с загруженным контентом? Это как плагин?

Такая вещь может быть полезна для приложений, для которых требуются плагины и расширения, и, возможно, другие идеи, о которых я не могу думать.

Мне также интересно, как другие приложения используют механизм плагинов. многие приложения позволяют загружать другие плагины-приложения через магазин воспроизведения. они каким-то образом запускают некоторый код в других файлах apk? могут ли они даже добраться до других файлов apk? есть ли способ сообщить Android, какие приложения могут получить доступ к моему файлу apk?

Ответы

Ответ 1

Вы можете использовать загрузчики классов Android (в данном конкретном случае, вероятно, PathClassLoader) для динамической загрузки классов во время выполнения без их установки.

Посмотрите, например. https://github.com/Rookery/AndroidDynamicLoader, чтобы узнать, как это можно реализовать.

Плагин apk может даже не нуждаться в чем-то сложном, но может просто связываться через Intents, отправленные на экспортированные действия, и отправляет результаты. Вы можете использовать PackageManager (http://developer.android.com/reference/android/content/pm/PackageManager.html), чтобы запросить, для каких намерений активность зарегистрирована.

Ответ 2

Я поговорил с разработчиком devAppsDirect (сайт здесь), и вот что он написал:

Технология DevAppsDirect называется inAppSquared (www.inAppSquared.com). В двух словах inAppSquared позволяет вам превратите приложение Android в плагин. Это делается с использованием только общедоступный Android API, без сумасшедшего взлома.

Я сделал это, создав новую новую мобильную платформу так же, как Xamarin и Titanium - мобильные платформы. Разница заключается в том, что inAppSquared имеет тот же API, что и API Android, и после того, как приложение перенесено на inAppSquared он может быть запущен без установки.

Существует множество возможностей для этой технологии. Ты упомянул плагинов и расширений, но он также может быть использован для обнаружения приложений, реклама, подписные услуги, тестирование A/B, исправление ошибок и многое другое больше.

Ответ 3

Очень интересно! Я думаю, что это выполнимо, ты сам не пробовал.

  • Если у вас есть apk на вашем сервере, вы можете загрузить его из своего приложения.
  • Теперь вы можете использовать утилиту zip для распаковки в свою собственную частную память.
  • Разберите файл манифеста, чтобы определить основное действие
  • Затем вы можете использовать ClassLoader или DexClassLoader для динамического загрузчика активности.

Я считаю, что это то, что происходит в DevAppsDirect

Ответ 4

Попробуйте использовать Manifest Viewer, чтобы проверить AndroidManifest.xml DevAppsDirect. К сожалению, у приложения нет возможности экспортировать манифест. С беглым взглядом, я не думаю, что он фактически устанавливает приложения, показанные в списке. Вероятно, вам стоит взглянуть.

Ответ 5

Кажется, что DevAppsDirect использует часть проекта Open Source Open под названием "Launcher", я предполагаю, что они взяли эту часть ОС и изменили ее, чтобы они могли включить ее в свое приложение для запуска скомпилированных APK из библиотеки в качестве демонстрации.

Launcher отвечает за главный экран телефона, запускает другие приложения, размещает виджеты и т.д.

Вы можете получить копию проекта Android Open Source здесь: http://source.android.com/source/downloading.html и посмотреть пакет com.android.launcher.