인스턴트 앱 프로젝트에 base
모듈과 query
모듈이라는 기능 모듈이 있습니다.Android 인스턴트 앱을 다시 작성한 후 피쳐 모듈의 기본 모듈에 정의 된 색상을 사용할 수 없습니다.
내 QueryActivity
내부 query
모듈은 base
모듈에있는 색상을 사용합니다.
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)로 참조 할 때
인스턴트 앱을 통한 자원 관리에이 결함이 있습니다. 그것은 현재 실행 불가능한 조각입니다. Lint는 잘못 사용 된 R.x 문에 대해 불평하지 않습니다. 많은 경우 리소스는 기본 모듈에서만 사용할 수 있습니다.을 피처 모듈 내에 사용하면 포함이 기본 모듈에서 페치 (fetch) 될 예정이면 모든 것이 손상됩니다. 그리고 우리는 모듈 간의 상호 의존성을 탐지 할 수없는 proguard를 사용할 때 완전한 파괴에 관해 이야기하지 않았습니다. –
당신 말이 맞아요. 각 모듈은 자체 R.java를 생성하고 여기서 문제는 잘못된 R 파일을 참조하고 있다는 것입니다. 도와 줘서 고마워. 하지만 그 이상한 "실행"잘 작동하지만 "재건"미해결 참조 오류와 함께 실패 생각합니다. –