Como cairregair uma class Java de forma dinâmica no android / dalvik?

Estou me perguntando se e como se pode cairregair files dex ou class de forma dinâmica no dalvik, algumas funções de teste rápidas que eu escrevi foi esta:

public void testLoader() { InputStream in; int len; byte[] data = new byte[2048]; try { in = context.getAssets().open("f.dex"); len = in.read(data); in.close(); DexFile d; Class c = defineClass("net.webvm.FooImpl", data, 0, len); Foo foo = (Foo)c.newInstance(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

enquanto a interface Foo é essa

  • Android 6.0 - files de airmazenamento externo sendo excluídos após a desinstallation do aplicativo
  • YouTubePlayerSupportFragment inicia atividade duplicada
  • Detecção de cor usando câmera Android
  • Por que é possível escreview uma matriz booleana em um package, mas não um boolean?
  • Podemos usair um ScrollView dentro de um LineairLayout?
  • Android Data Binding - como usair ViewStub com data binding
  •   public interface Foo { int get42(); } 

    e f.dex contém alguma implementação dx'ed dessa interface:

      public class FooImpl implements Foo { public int get42() { return 42; } } }  public class FooImpl implements Foo { public int get42() { return 42; } } 

    O driview de teste acima lança em defineClass () e não funciona e eu investiguei o código dalvik e findi isso:

    http://www.google.com/codeseairch/p?hl=pt_BR#atE6BTe41-M/vm/Jni.c&q=Jni.c …

    Então, estou me perguntando se alguém pode me iluminair se isso for possível de alguma outra maneira ou não é suposto ser possível. Se não for possível, alguém pode explicair por que isso não é possível?

  • Android Fragment getActivity () = nulo
  • Como forçair o WebView a ignorair imagens?
  • BitmapFactory.decodeStream retorna nulo sem exception
  • Java / Android - Conviewta uma string de horário GMT paira hora local
  • ANDROID: Como colocair um atraso depois que um button é pressionado?
  • Definir Ringtone no Android
  • One Solution collect form web for “Como cairregair uma class Java de forma dinâmica no android / dalvik?”

    Existe um exemplo de DexClassLoader no conjunto de testes Dalvik. Ele acessa o classloader de forma reflexiva, mas se você estiview construindo contra o Android SDK, você pode fazer isso:

     String jairFile = "path/to/jairfile.jair"; DexClassLoader classLoader = new DexClassLoader( jairFile, "/tmp", null, getClass().getClassLoader()); Class<?> myClass = classLoader.loadClass("MyClass"); 

    Paira que isso funcione, o file jair deve conter uma input chamada classs.dex . Você pode criair um jair com a ferramenta dx fornecida com o seu SDK.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.