До Android 5.0 я смог динамически загружать DEX-файлы с помощью DexClassLoader и вызывать метод loadClass()
, но с последней версией Android я получаю ClassNotFoundException
.Динамически загружать DEX-файл на Android 5.0
Вот что я делаю:
Генерация файла DEX.
../android-sdk/android-sdk-linux_86/build-tools/21.1.1/dx --dex --output=bin/output.dex bin/output.jar
Создайте DexClassLoader.
DexClassLoader cl = new DexClassLoader( dexFile.getAbsolutePath(), odexFile.getAbsolutePath(), null, mContext.getClassLoader());
Вызов
cl.loadClass("myMethod");
Я знаю, что ART использует dex2oat для генерации файла ELF, который является нагруженный ART, но на шаге 2 я генерируя ODEX файл, так что я не то, что необходимо сделать в ART для загрузки файла DEX во время выполнения, может ли кто-нибудь мне помочь?
Зачем вам нужно загружать DEX-файл во время выполнения? 5.0 поддерживает несколько файлов dex изначально. – ianhanniballake
Файл DEX имеет конфиденциальную информацию и шифруется в каталоге активов. Когда мне нужно его использовать, он расшифровывается, а затем загружается во время выполнения. – garibay
@garibay вам удалось решить эту проблему? У меня такая же проблема, это работает только для Дальвика. – cdroid