在不同的Android应用程序之间共享公共java文件

时间:2017-08-17 11:16:05

标签: android

我想分享一些在不同应用程序中很常见的java文件。是否可以在不改变应用程序gradle文件的情况下在不同的Android应用程序之间共享公共java文件(从apply plugin:'com.android.application'应用插件:'com.android.library')?

1 个答案:

答案 0 :(得分:0)

是的,你可以。首先,您将Java类编译为jar文件。然后你可以使用DexClassLoader加载这个jar,例如:

CommonInterface loadCommonObject(String pathToJarFile) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
    DexClassLoader loader = new DexClassLoader(pathToJarFile,
            getDir("dex", 0).getAbsolutePath(), null, getClass().getClassLoader());
    Class clazz = loader.loadClass(CommonInterface.CLASS_NAME);
    return  (CommonInterface) clazz.newInstance();
}

interface CommonInterface {

    String CLASS_NAME = "com.your.app.ClassName";

    void doSomething();
}

现在您可以使用此代码加载和运行Java文件:

CommonInterface commonObject = loadCommonObject("/path/to/your/file.jar");
commonObject.doSomething();

注意,你的jar文件shuild是DEX格式。要将计划jar文件转换为DEX格式,您可以使用Adnroid SDK中的dx实用程序。

此问题中的更多信息:Is it possible to dynamically load a library at runtime from an Android application?