Prima di Android 5.0 ero in grado di caricare i file DEX dinamicamente utilizzando DexClassLoader e chiamando il metodo loadClass()
ma con l'ultima versione di Android ottengo un ClassNotFoundException
.Carica dinamicamente il file DEX su Android 5.0
Ecco quello che sto facendo:
Genera file DEX.
../android-sdk/android-sdk-linux_86/build-tools/21.1.1/dx --dex --output=bin/output.dex bin/output.jar
Creare un DexClassLoader.
DexClassLoader cl = new DexClassLoader( dexFile.getAbsolutePath(), odexFile.getAbsolutePath(), null, mContext.getClassLoader());
chiamata
cl.loadClass("myMethod");
Sono consapevole del fatto che l'arte utilizza dex2oat per generare un file ELF che è il caricata da ART, ma nella fase 2 sto generando un ODEX file in modo che non sono ciò deve essere fatto in ART per caricare un file DEX in fase di esecuzione, qualcuno può aiutarmi?
Perché avete bisogno di caricare un file DEX in fase di esecuzione? 5.0 supporta più file dex in modo nativo. – ianhanniballake
Il file DEX contiene informazioni riservate ed è crittografato nella directory delle risorse. Quando ho bisogno di usarlo, è decodificato e quindi caricato in fase di runtime. – garibay
@garibay sei riuscito a risolvere questo problema? Sto avendo lo stesso problema, questo funziona solo su Dalvik per me. – cdroid