2011-09-29 52 views
1

我有几个共享我的库项目的android项目。我希望库代码依赖于在依赖于它的项目中定义不同的某些配置类。为了让非lib项目在Eclipse项目浏览器中报告没有错误,这意味着在每个项目中使用相同的完全限定路径来提供类定义。Android Eclipse库项目和项目特定配置文件的库项目类型解析

所以结构看起来像这样

Tablet_Project:

定义 com.mycompany.config.ClientPrefs.java

Phone_Project:

定义 COM .mycompany.config.ClientPrefs.j AVA

Lib_Project:

取决于但不定义com.mycompany.config.ClientPrefs.java

一旦这样做了,这些项目表现出Eclipse项目资源管理器没有错误,但lib有一个红色的“X”,表示它可以解析ClientPrefs引用 - 这是我所期望的,因为无论如何你都无法编译一个lib,这似乎不是什么大不了的事情。

问题:手机项目编译和运行良好,但平板电脑项目报告说,需要一个错误,即使没有“X”指标,其工作区资源管理器中的任何地方发动之前加以固定。

问题:这种配置方法在这些项目中实际上是否允许,或者是电话项目只是意外事故?

编辑 这是最基本的例子我能想出: enter image description here

项目A和项目B取决于ProjectLib为Android库项目。如此处所示,ProjectLib的Util.java无法将缺少的ref解析为Config.java,但对于A和B来说这似乎并不重要,因为它们似乎解决了ProjectLib的这一问题,因此无法构建和运行。其他人采取这种方法来配置?

我问的原因是因为我有一个更大的一组项目,其中一个不会再建立(在Eclipse中),可能是因为它的lib项目有错误。用命令行构建Ant始终可以工作,这让我认为一个库项目会被拖入依赖项目中,而不考虑它的Eclipse边界。

+0

所以,我认为这个问题的答案可能是模糊的 - 组织库和项目方面的配置文件的这种方法似乎使用Ant构建时总是工作,但是Eclipse被绊倒在具有有时悬而未决的问题库并拒绝将开发人员留在一个非常狭窄的地方。在组织上,这是一种非常正确的配置间接方法,应该工作或解决(编辑)(能够) – jchristof

+0

我在同一条船上......你有没有想办法让这个设置工作? – zacsek

+0

我正在使用一种适用于c编译器的方法,并且我已经使用了一段时间,但它不是android java方法。我最终将运行时的配置信息从项目A传递给lib项目代码。 – jchristof

回答

0

之前可以在ProjectA和ProjectB中创建相同的Config类,并从lib项目中排除Config类。

但是现在库项目被包含为jar,并且不可能在eclipse中从jar中排除类。

我的临时解决方案有配置util类,它返回正确的配置,我需要改变它每次构建不同的项目时。

public class Config { 

    private static MyConfig config; 

    public static MyConfig getConfig() { 
     if (config == null) { 
      config = new MyConfig(); 
     } 
     return config; 
    } 
// ... 
// CONSTANTS 
// ... 
}