Загружать и выполнять предварительно скомпилированный код (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