Загружать и выполнять предварительно скомпилированный код (oat-файл) динамически

Так как Google удалил "openDexFile(byte[] fileContents)" в более новых версиях Android, мы ищем замену здесь, и, кроме того, мы предпочли бы также использовать предварительно скомпилированный код (см. Dex2oat).

Кто-нибудь знает о функции для выполнения этой задачи? Мы также не хотим хранить файл на диске.

Как насчет замены кода приложения в памяти, может быть? Возможно ли это в рамках новой ART VM? Я ищу дополнительную информацию по этой теме. Я знаю, что это было возможно с бывшей Dalvik VM.

Любая помощь приветствуется. Благодарю.

1 ответ

Решение

Как правило, вы не можете загружать предварительно скомпилированные файлы odex/oat. Эти файлы сильно зависят от конкретной структуры, которая используется при компиляции, поэтому они не переносимы между устройствами.

Вы можете динамически загрузить файл dex как на dalvik, так и на art, используя DexClassLoader. Смотрите, например, http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html

Другие вопросы по тегам