2

新しい機能でアプリを「更新」できるかどうかを確認するために、DexClassLoader でいくつかのテストを行っています。現在、testClass で動作し、test() メソッドを実行するテスト用のこのメソッドがあります。知りたいのは、既存のクラスを「置換」または「更新」する方法です。アイデアやその他の提案は大歓迎です。

方法:

    public static void loadExtLib(String pathDexFile, Context ctx) {

    String temp = ctx.getDir("temp", 0).toString();


        DexClassLoader classLoader = new DexClassLoader(pathDexFile,
                    temp, null, ctx.getClass().getClassLoader());


          String testClass = "com.mystudio.myapp.TestClass";
          Class<?> libProviderClass = null;
          try {
            libProviderClass = classLoader.loadClass(testClass);
        } catch (ClassNotFoundException e1) {

            e1.printStackTrace();
        }


          try {
            Method m = libProviderClass.getDeclaredMethod("test", null);
            try {
                m.invoke(libProviderClass, null);

            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
        } catch (NoSuchMethodException e1) {
            e1.printStackTrace();
        }
          Log.v("loadClass", "loaded: " + testClass);


}
4

1 に答える 1