DexFile + ClassLoader

Bom Dia!!!

Galera,

Estou tentando abrir uma classe desenvolvida por um colega, o problema é que devo acessar os métodos dela sem saber como esta foi implementada (ela deverá ser incorporada ao meu projeto).
Li um pouco e cheguei até o seguinte trecho de código:

DexFile df = new DexFile(new File("classes.dex"); 
String name = "nome.pacote.ClasseDoColega";
ClassLoader cl = getClassLoader();
Class ClasseDoColega = df.loadClass(name, cl);

Questões a serem consideradas:
_ O caminho do arquivo (classes.dex) está correto.
_ O caminho da classe de meu colega também está correto. Na verdade, utilizando o debug, não passa da primeira linha.
_ Já testei com “new DexFile(“ProjetoDoColega.apk”)” e com “new DexFile(“classes.dex”)”

Qualquer ajuda serei grato!!

UP!!

Alguém poderia me ajudar com esse problema??

Obrigado

Tem certeza que o File exists()?

Tenho sim amigo.
Faço o teste com exists().

Se tiver alguma idéia diferente do DexFile, estou aberto a opções!! :slight_smile:

Criei um .jar com meus .java e com até os .class e fiz também o seguinte teste:

final String libPath = Environment.getExternalStorageDirectory() + "/MeuArquivo.jar";
final File tmpDir = getDir("dex", 0);
final DexClassLoader classloader = new DexClassLoader(libPath, tmpDir.getAbsolutePath(), null, this.getClass().getClassLoader());
final Class<Object> Tacom = (Class<Object>) classloader.loadClass("nome.pacote.ClasseDoColega");

Mas também não consegue encontrar a classe em questão.

Se é um jar, por que não coloca-lo na pasta libs?
Voce nao pode usar as classes pelo nome invés de Reflection?

Sim, sim!! Com certeza posso.

O problema é que estava querendo fazer tudo isso dinamicamente. Meu aplicativo receberia um .jar, daria um loading e posteriormente seria enviado a ele apenas o nome da função a ser chamada.