2017-08-17 2 views
-3

Ich möchte einige Java-Dateien teilen, die unter verschiedenen Anwendungen gemeinsam sein können. Ist es möglich, gemeinsame Java-Dateien über verschiedene Android-Anwendungen zu teilen, ohne die Anwendungs-GRADEL-Datei zu ändern (vom Apply-Plugin: "com.android.application", um das Plug-in "com.android.library" anzuwenden)?Gemeinsame Java-Dateien unter verschiedenen Android-Anwendungen teilen

Antwort

0

Ja, Sie können. Zuerst sollten Sie Ihre Java-Klasse in JAR-Datei kompilieren. Dann Sie diese jar DexClassLoader mit laden können, Beispiel:

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(); 
} 

Und jetzt können Sie diesen Code verwenden, um Ihre Java-Datei zu laden und auszuführen:

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

Hinweis, Ihre JAR-Datei in DEX-Format shuild . Um Plan JAR-Datei in DEX-Format zu konvertieren, können Sie das DX-Dienstprogramm von Adnroid SDK verwenden.

Weitere Informationen in dieser Frage: Is it possible to dynamically load a library at runtime from an Android application?

Verwandte Themen