Загрузите apk, используя ClassLoader и openRawResources

1

Можно ли загрузить apk, который я разместил в моей папке res/raw/, используя ClassLoader? И для загрузки apk я использую openRawResources().

Теги:
classloader

3 ответа

1

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

1

Я не знаю, можете ли вы сделать это из актива, но если вы извлечете актив в файловую систему, вы можете использовать следующую последовательность (которая игнорирует исключения, которые вам нужно обработать). Отсюда вы можете использовать обычные методы отражения на 'loadedClass'.

DexClassLoader classLoader = new DexClassLoader(
    "/path/to/your/apk", getFilesDir().getAbsolutePath(),
    null, getClass().getClassLoader());
Class<?> loadedClass = classLoader.loadClass("full.package.and.class.name");
0

Вы можете загрузить файл APK-, но вы не можете просто "запустить" его (так как сначала нужно установить приложение), и ваше приложение не сможет устанавливать новые приложения (из-за политики безопасности).

Если вам нужно другое приложение для вашей программы, вы должны упомянуть об этом при первом запуске или что-то в этом роде.


Вы можете открыть .apk -file, используя что-то, чтобы распаковать (например, 7zip). Но вы не можете использовать классы внутри него, так как в нем нет нормального .class -file s.

Это связано с тем, что Android не использует обычный JVM, а DVM. Это JVM, основанный на проекте Apache Harmony и оптимизированный для работы на устройствах с низкой памятью (например, Android-телефоны). Этот JVM не использует обычный Java Byte- Code (который находится в .class -file s), но имеет собственный Dalvik- Byte- код, созданный Android SDK (инструмент dx) при экспорте проекта.

Итак, чтобы сделать это коротко: вы не можете получить доступ к классам в файле APK- из вашего приложения. Нет, если у вас нет исходного кода для компиляции классов самостоятельно.

См. Статья в Википедии.

  • 0
    Я не хочу его устанавливать, я просто хочу классы, но как мне его загрузить?
  • 0
    Я обновил свой оригинальный пост.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню