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