2017-09-27 9 views
1

인스턴트 앱 프로젝트에 base 모듈과 query 모듈이라는 기능 모듈이 있습니다.Android 인스턴트 앱을 다시 작성한 후 피쳐 모듈의 기본 모듈에 정의 된 색상을 사용할 수 없습니다.

QueryActivity 내부 query 모듈은 base 모듈에있는 색상을 사용합니다.

QueryActivity.kt

: 나는 run 프로젝트에하려고하면

@ColorInt 
val textColor: Int = when (resultCode) { 
    FetchAddressIntentService.RESULT_SUCCESS -> android.R.color.white 
    FetchAddressIntentService.RESULT_FAILURE -> R.color.accent // this color is inside the base module 
    else -> R.color.accent // this color is inside the base module 
} 

, 그것은 아무 문제없이 잘 작동합니다.

../net/epictimes/uvindex/query/QueryActivity.kt 
Error:(133, 63) Unresolved reference: color 
Error:(134, 27) Unresolved reference: color 

그 색상 값에 포인팅 : I 프로젝트를 rebuild 경우, 그것은 나에게 다음과 같은 오류를 제공합니다.

colors.xml 파일을 query 모듈 안에 넣고 여기에서 base 색을 참조하여이 문제를 해결했습니다. 괜찮 았어. 차이점은 this commit입니다.

<color name="query_location_success_text">@android:color/white</color> 
<color name="query_location_fail_text">@color/accent</color> 

지금은 작동하지만 왜 확실하지 않습니다. 이것이 올바른 방법일까요? 내 질문은 기능 모듈에서 액세스 할 수있는 base 모듈 내의 리소스가 아니어야합니까?

버전 :

광산의 오픈 소스 프로젝트입니다

Android target/compile SDK: 26

Kotlin: 1.1.50

Instant Apps: 1.1.0

, 당신은 전체 프로젝트 here을 볼 수 있습니다.

는 완전한 이름 (package_name.R.resource_name)로 참조 할 때

답변

5

예, 기본 모듈 내부 자원이 기능 모듈에서 액세스 감사드립니다.

기본 모듈과 하위 모듈은 패키지 이름이 다릅니다 (기본 기능 패키지 이름은 net.epictimes.uvindex이고 피처 모듈 패키지 이름은 net.epictimes.uvindex.query 임).

각 패키지는 자원의 자신의 세트를 포함, 그들의 자원 ID는 컴파일시 별도의 R 패키지로 수집됩니다

  • net.epictimes.uvindex.R - 당신의 기본 기능 모듈
  • net.epictimes.uvindex.query.R을 위해 - 당신의 기능 모듈
  • 에 대한

'쿼리'기능 모듈에서 기본 기능의 '강조'색상 리소스에 액세스하려면 net.epictimes.uvindex.R.color.accent 식별자 :

를 사용하세요.

FetchAddressIntentService.RESULT_FAILURE -> net.epictimes.uvindex.R.color.accent

+0

인스턴트 앱을 통한 자원 관리에이 결함이 있습니다. 그것은 현재 실행 불가능한 조각입니다. Lint는 잘못 사용 된 R.x 문에 대해 불평하지 않습니다. 많은 경우 리소스는 기본 모듈에서만 사용할 수 있습니다. 을 피처 모듈 내에 사용하면 포함이 기본 모듈에서 페치 (fetch) 될 예정이면 모든 것이 손상됩니다. 그리고 우리는 모듈 간의 상호 의존성을 탐지 할 수없는 proguard를 사용할 때 완전한 파괴에 관해 이야기하지 않았습니다. –

+0

당신 말이 맞아요. 각 모듈은 자체 R.java를 생성하고 여기서 문제는 잘못된 R 파일을 참조하고 있다는 것입니다. 도와 줘서 고마워. 하지만 그 이상한 "실행"잘 작동하지만 "재건"미해결 참조 오류와 함께 실패 생각합니다. –