-3
我想分享一些在不同應用程序中可能相同的java文件。是否可以在不改變應用程序gradle文件的情況下跨不同的android應用程序共享公共java文件(從apply plugin:'com.android.application'來應用plugin:'com.android.library')?在不同的android應用程序中共享常見的java文件
我想分享一些在不同應用程序中可能相同的java文件。是否可以在不改變應用程序gradle文件的情況下跨不同的android應用程序共享公共java文件(從apply plugin:'com.android.application'來應用plugin:'com.android.library')?在不同的android應用程序中共享常見的java文件
是的,你可以。首先,你將你的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?