2017-08-17 20 views
-3

我想分享一些在不同應用程序中可能相同的java文件。是否可以在不改變應用程序gradle文件的情況下跨不同的android應用程序共享公共java文件(從apply plugin:'com.android.application'來應用plugin:'com.android.library')?在不同的android應用程序中共享常見的java文件

回答

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?

相關問題