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!! 
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.