Przed wprowadzeniem systemu Android 5.0 mogłem dynamicznie ładować pliki DEX, używając metody DexClassLoader i wywołując metodę loadClass()
, ale z najnowszą wersją systemu Android otrzymałem numer ClassNotFoundException
.Załaduj dynamicznie plik DEX w systemie Android 5.0
Oto co robię:
Generowanie pliku DEX.
../android-sdk/android-sdk-linux_86/build-tools/21.1.1/dx --dex --output=bin/output.dex bin/output.jar
Utwórz DexClassLoader.
DexClassLoader cl = new DexClassLoader( dexFile.getAbsolutePath(), odexFile.getAbsolutePath(), null, mContext.getClassLoader());
połączeń
cl.loadClass("myMethod");
Zdaję sobie sprawę, że sztuka wykorzystuje dex2oat aby wygenerować plik ELF, który jest ładowany przez sztukę, ale w kroku 2 Jestem generowania ODEX złożyć więc nie jestem co należy wykonać w ART, aby załadować plik DEX w czasie wykonywania, czy ktoś może mi pomóc?
Dlaczego musisz załadować plik DEX w czasie wykonywania? 5.0 obsługuje natywnie wiele plików dex. – ianhanniballake
Plik DEX zawiera poufne informacje i jest zaszyfrowany w katalogu zasobów. Kiedy potrzebuję go użyć, jest odszyfrowywany, a następnie ładowany w czasie wykonywania. – garibay
@garibay czy udało Ci się rozwiązać ten problem? Mam ten sam problem, to działa tylko dla mnie w Dalvik. – cdroid