代码之家  ›  专栏  ›  技术社区  ›  Will

安卓文库

  •  2
  • Will  · 技术社区  · 14 年前

    在本机开发中,您可以生成其他库和程序可以共享的库-.so、.dll等。

    那么如何在Android中实现模块化程序呢?我从文档中得到的印象是,每个APK都是一个独立的岛。不同的APK可以共享代码吗?

    当您有这些外部依赖项时,安装是如何工作的?您是否可以指定依赖APK中不存在的库并安装它?

    3 回复  |  直到 14 年前
        1
  •  2
  •   Jim Blackler    14 年前

    关于动态链接,有一种库在市场上作为.apk本身分发,并在运行时动态包含。许多开发人员不愿要求用户安装两个.apk。这种方法确实会导致用户混淆。

        2
  •  0
  •   Moss    14 年前

    你可以像JimBlackler说的那样在一个.jar文件中创建一个库,而不是使用类的全名从类中实例化。在java中,这非常简单,可以用来使开发非常灵活。

    等级 包含在名为 com.test.utils公司 所以它的完整路径是: . 现在如果你想举例说明 C Class.forName() 方法如下:

    // Try to create an instance of class 'com.test.utils.C'
    try {
        Object instance = Class.forName("com.test.utils.C").newInstance();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (InstantiationException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    

        3
  •  0
  •   Moss    14 年前

    下面是一个使用Class.forName()的完全有效的示例:

    try { 
        for (Method ele: Class.forName("<MyClassPath>").getMethods()) 
        { 
            try { 
                if (ele.getName().equals("<MyMethod>") ) 
                    ele.invoke(null, ArgumentList); 
            } catch (IllegalArgumentException e) { 
                e.printStackTrace(); 
            } catch (IllegalAccessException e) { 
                e.printStackTrace(); 
            } catch (InvocationTargetException e) { 
                e.printStackTrace(); 
            } 
        } 
    } catch (ClassNotFoundException e) { 
        e.printStackTrace(); 
    }
    

    在这里可以找到有关invoke方法的更多信息: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Method.html#invoke(java.lang.Object