여러 Android 앱을 개발했으며 둘 이상의 앱에서 자주 사용하는 클래스의 코드 기반을 만들었습니다. 이 코드는 모두 Subversion (svn) 저장소에 있으며 각 저장소는 자체 저장소에 있습니다. 각 앱에는 필요한 패키지 (예 : com.company.android.views)에 대한 svn : externals 참조가 있습니다. R 클래스를 사용자 정의 속성에 대해 가져와야하는 경우를 제외하면 위와 같은 결과가 좋습니다. 이 같은 코드를 가질 수 있도록Android 앱에서 사용되는 사용자 정의보기 및 속성
import com.company.apps.myapp.R
:
사용자 정의보기는 다음과 같이 가져 오기를 가지고
attributes.getBoolean(R.styleable.WebImageView_autoload, autoload)
사용자 정의 속성이 고해상도/값/attrs.xml이에 정의되어 있는지 :
<declare-styleable name="WebImageView">
<attr name="autoload" format="boolean" />
...others
</declare-styleable>
완벽하게 작동하지만이 동일한보기를 사용하는 두 번째 앱이있는 경우 문제가 발생합니다. 이제 import com.company.apps.anotherapp.R
으로 가져 오기를 업데이트하여 "anotherapp"와 함께 작동하고 "myapp"로 중단합니다. 한 번에 여러 앱에서 작업 할 때 문제가됩니다.
임시 해결책은 해당 클래스의 업데이트를 확인한 다음 svn : externals를 해당 특정 버전으로 잠그는 것입니다. 각 앱은 다른 리비전에 고정되어 지저분 해지기는하지만 다양한 클래스를 앱의 레포에 직접 복사하는 것보다 더 좋습니다.
내가 반사, 같은 것을 사용하여 생각했습니다 유일한 다른 솔루션 : 클래스 전반에 걸쳐 사용되는 변수에 내가 아끼는 사람들을 할당 필드를 통해
Class class = Class.forName(context.getPackageName() + ".R");
Field[] fields = class.getDeclaredFields();
그리고 루프를. 이것은, 특히 우리가 이것을 할 필요가있는 여러 클래스에 대해 이야기 할 수있을 때, 다소 무거워 보인다.
이 문제를 어떻게 해결할 수 있습니까? 동적으로 com.company.apps. *. R을 가져 오거나 특정 앱에 의존하지 않는 다른 R 클래스를 생성하는 방법이 있습니까? 아니면 제가 놓친 부분이 있습니까?
안녕하세요, 도서관 프로젝트에서 맞춤 속성을 사용하기 위해 특별한 작업을 수행 했습니까? 라이브러리와 최종 앱이 동일한 네임 스페이스를 사용하는 경우에만 시도하면 컴파일이 완료됩니다. 2 개의 앱에서 동일한 라이브러리 (예 : 무료 및 유료 버전)를 사용하려면이 방법이 효과가 없습니다. – Gromix