2016-06-26 1 views
1

Android 프로젝트 (Android Studio, Gradle 사용)에서 작업 중이며 일부 논리 및 위젯을 하위 라이브러리 프로젝트로 분할했습니다.android.R과 같은 맞춤 네임 스페이스가있는 android 리소스 라이브러리를 만드시겠습니까?

R.string.xxx 또는 다른 R 참조가 병합되었지만 앱 모듈과 이름이 같은 경우 내 라이브러리의 리소스 값을 가져올 수 없습니다. (나는 [libpacakgename].R.string.appname을 사용하지만 자원은 여전히 ​​응용 프로그램 모듈의 아닌 도서관이다.)

는 안드로이드 자원과 같은 자원을 사용하는 방법이 있나요 : android.R.string.xxx를, 또는 myapp:string/xxx 같은 XML에있는 "myapp와는"내가된다 사용자 정의 네임 스페이스 또는 클래스 이름.

그런데 때로는 attr id이 충돌하여 컴파일이 실패 할 수도 있다는 것을 발견했습니다.

+0

"Android 리소스와 같은 리소스 (android.R.string.xxx) 또는 xml (myapp : string/xxx,"myapp "는 내 맞춤 네임 스페이스 또는 클래스 이름이됩니다)과 같은 리소스를 사용하는 방법이 있습니까? 나는 알고있어. 라이브러리는 조직 도구이지만 라이브러리의 모든 항목 *이 기본 앱에 병합됩니다. 라이브러리의 가치가 앱 시나리오에 부적절 할 수 있으므로 앱이 라이브러리의 리소스를 무시할 수 있어야합니다. 접두사와'public.xml'을 사용하여 우발적 인 재정의를 방지 할 수 있습니다. – CommonsWare

답변

1

이것은 내부 gradle 작업을 수정하여 가능할 수 있지만 의도 된 시나리오는 아닙니다.

쉬운 해결책은 라이브러리 리소스 식별자 앞에 접두사를 붙이는 것입니다. (패키지) 이름.

관련 문제