2011-09-29 3 views
1

내 라이브러리 프로젝트 중 하나를 공유하는 여러 개의 Android 프로젝트가 있습니다. 라이브러리 코드를 의존하는 프로젝트에서 다르게 정의 된 특정 구성 클래스에 의존하게하고 싶습니다. 비 lib 프로젝트가 Eclipse 프로젝트 탐색기에서 오류를보고하지 않게하려면 이는 각 프로젝트에서 동일한 완전한 경로를 사용하여 클래스 정의를 제공하는 것을 의미합니다.Android 이클립스 라이브러리 프로젝트 및 프로젝트 별 설정 파일의 라이브러리 프로젝트 유형 해상도

com.mycompany.config.ClientPrefs.java

을 정의

Phone_Project :

을 정의 닷컴

그래서 구조는이

Tablet_Project처럼 보인다 .mycompany.config.ClientPrefs.j AVA는

Lib_Project

:

을 따라하지만이 작업이 완료되면 com.mycompany.config.ClientPrefs.java

를 정의하지 않습니다, 프로젝트는 Eclipse 프로젝트 탐색기에 오류를 표시하지 않지만, lib에는 ClientPrefs 참조를 해결할 수 있음을 나타내는 빨간색 "X"가 있습니다. 어쨌든 lib를 컴파일 할 수 없기 때문에 큰 문제가 아닙니다.

문제 : 전화 프로젝트가 제대로 컴파일되고 실행되지만 태블릿 프로젝트는 작업 영역 탐색기에 "X"표시기가 없어도 실행하기 전에 오류를 수정해야한다고보고합니다.

질문 :이 프로젝트에서 실제로 허용되는 구성에 대한 접근 방법은 없습니까? enter image description here

PROJECTA과 ProjectB는 안드로이드 라이브러리 프로젝트로 ProjectLib에 따라 달라집니다

편집 는 여기에 내가 가지고 올 수있는 가장 기본적인 예입니다. 여기에 표시된 것처럼 ProjectLib의 Util.java는 누락 된 참조를 Config.java로 확인할 수는 없지만 A와 B는 ProjectLib에 대해이를 해결하는 것으로 보이므로 빌드와 실행 모두 문제가되지는 않습니다. 다른 사람이 config에이 접근법을 사용 했습니까?

내가 물어 보는 이유는 훨씬 더 큰 프로젝트 세트가 있기 때문이며, 그 중 하나는 아마도 lib 프로젝트에 오류가 있기 때문에 (Eclipse에서) 더 이상 빌드하지 않을 것입니다. 명령 행에서 Ant를 사용하여 빌드하면 항상 작동하며 Eclipse 프로젝트 경계에 관계없이 라이브러리 프로젝트가 종속 프로젝트로 끌어 들여지는 것으로 생각됩니다.

+0

그래서 나는이에 대한 해답이 모호 할 수 있다는 생각 그리고 개발자를 정말로 단단한 자리에 두는 것을 거부합니다. 조직적으로, imho, 이것은 설정 간접 지정에 대한 매우 정확한 접근법이며, 작동하거나 수정해야합니다 (가능) – jchristof

+0

나는 같은 보트에 있습니다 ...이 설정 작업을 수행하는 방법을 알아 냈습니까? – zacsek

+0

나는 C 컴파일러에서 작동하는 접근 방식을 사용하고 있었고 얼마 동안 사용했지만 안드로이드 자바 방식이 아닙니다. 런타임시 config 정보를 프로젝트 A에서 lib 프로젝트 코드로 전달하는 일이 끝났습니다. – jchristof

답변

0

전에 ProjectA와 ProjectB에서 동일한 Config 클래스를 만들고 lib 프로젝트에서 Config 클래스를 제외 할 수있었습니다.

하지만 지금 라이브러리 프로젝트는 jar로 포함되어 있으며 eclipse에서 jar에서 클래스를 제외 할 수 없습니다.

내 임시 해결 방법으로 올바른 구성을 반환하는 config 유틸리티 클래스가 있어야합니다. 다른 프로젝트를 빌드 할 때마다이를 변경해야합니다. 설정 파일과 관련하여 libs와 프로젝트를 조직하는이 방법은 개미와 함께 구축 할 때 항상 작동하는 것 같다,하지만 이클립스는 때때로 해결되지 않은 문제와 libs와 이상 난처하게됩니다 -

public class Config { 

    private static MyConfig config; 

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