2014-02-25 2 views
5

하나 이상의 apk libs가있는 프로젝트가 컴파일되면 aapt 도구로 하나 이상의 R.java가 생성됩니다. 각 라이브러리마다 하나씩, 응용 프로그램 자체에 하나씩.R 클래스의 동일한 리소스에 대해 서로 다른 ID가 생성됩니다.

각 R 파일은 동일한 ID를 정의합니다. 이것은 꽤 오래 동안 문제없이 일했습니다. 사실 년. 하지만 갑자기 더 이상. 이제 동일한 리소스에는 두 개의 서로 다른 ID가 있습니다.

대상/생성 - 소스/R/COM/viewpagerindicator/R.java :

public static int default_line_indicator_selected_color=0x7f04000b; 

대상/생성 - 소스/R/그물/소스 포지/UIQ3/fx602p/R.java :

public static final int default_line_indicator_selected_color=0x7f07000b; 

아무도 아이디어가 잘못되었을 수 있습니까?

업데이트 :

내가 다른 프로젝트와 함께 확인을 두 번. 여기서 나는 final과 별개로 R.java 파일이 100 % 동일해야한다고 언급했다. 특히 : 각 R.java 파일은 모든 ID를 정의해야합니다. - 라이브러리의 일부가 아닌 ID조차도 정의해야합니다.

내 귀찮은 프로젝트에서도 마찬가지입니다. 각 라이브러리 R.java는 라이브러리가 사용하는 ID 만 정의합니다.

신속하고 더러운 수정

나는 내가 신속하고 더러운 수정으로 다음과 같은 개미 작업을 사용하여 실제 문제가 무엇인지 찾을 때까지 :

  <copy 
       encoding='${project.build.sourceEncoding}' 
       file='target/generated-sources/r/net/sourceforge/uiq3/fx602p/R.java' 
       overwrite='true' 
       toFile='target/generated-sources/r/com/viewpagerindicator/R.java' 
      > 
       <filterchain> 
       <tokenfilter> 
        <replacestring 
        from='net.sourceforge.uiq3.fx602p' 
        to='com.viewpagerindicator' 
        ></replacestring> 
       </tokenfilter> 
       </filterchain> 
      </copy> 

내가 aapt에를 호출 할 이유 궁금해 검색 및 바꾸기가 포함 된 사본이 트릭을 수행 할 수있는 여러 번. 그리고 나는 final도 제거하지 않는다는 것을 유의하십시오.

+0

예 서로 다른 R.java 파일에있는 - 그래서 하나가 하나 개의 문자 차이를 발견 할 수 서로의 상단에 다음 뒀다. 그러나 귀하의 질문은 이것이 혼란 스럽다는 것을 나타냅니다. 나는 본문을 바꾼다. – Martin

+1

유일한 것은 프로젝트에서 구축하는 것입니다. – njzk2

답변

1

프로젝트를 어셈블 할 때 라이브러리 원본은 주 프로젝트에서 덮어 씁니다. 이것이 라이브러리의 RID가 final이 아닌 이유를 설명한다고 생각합니다.

default_line_indicator_selected_color에 대한 모든 참조는 새로운 값 0x7f07000b을 사용합니다.

어떤 상황에서 문제가 있습니까?

라이브러리 프로젝트에 종속 된 응용 프로그램을 빌드 할 때 SDK 도구는 라이브러리를 임시 JAR 파일로 컴파일하고이를 기본 프로젝트에서 사용하고 결과를 사용하여 .apk를 생성합니다. 리소스 ID가 응용 프로그램과 라이브러리 모두에 정의 된 경우 도구는 응용 프로그램에 선언 된 리소스가 우선 순위를 갖도록하고 라이브러리 프로젝트의 리소스가 응용 프로그램 .apk로 컴파일되지 않도록합니다. 이를 통해 응용 프로그램은 모든 라이브러리에 정의 된 자원 동작 또는 값을 사용하거나 재정의 할 수있는 유연성을 제공합니다.

http://developer.android.com/tools/projects/index.html

관련 문제