구현중인 앱의 레이아웃 항목에 액세스해야하는 라이브러리를 개발 중입니다. 내가 그것을하는 방법을 아는 유일한 방법은 반성과 함께이다.Android 라이브러리에서 앱 R 클래스에 액세스
public MyLibraryAPI(String packageName) {
Class appR = Class.forName(String.format("%s.R", packageName));
...
}
을 그리고 개발자는 생성자의 매개 변수로 자신의 패키지 이름과 라이브러리를 인스턴스화 것이다 : 즉,이처럼 내 라이브러리 API에 대한 생성자를 만드는 경우.
필자가 궁극적으로 필요로하는 것은 내 내부 클래스에 개발자 레이아웃 (.xml 파일)에 사용 된 Android보기 (ID와 유형 모두)를 알리는 것입니다. 리플렉션없이 이것을 달성하고 성능 오버 헤드를 피할 수있는 방법이 있습니까? 확신 할 수는 없지만, 내가 눈여겨 보지 못하는 것을 보는 전문가가있는 경우에 대비하여 묻습니다.
편집 : 또한 proguard는 기본적으로 보호 코드를 난독 처리하지만 결과적으로 JVM에 런타임시 반영을 수행 할 수있는 수단을 제공하지 못하므로 리플렉션을 사용하는 경우 개발자에게 방향을 바꾸도록 요청해야합니다 Rx 클래스에 대한 proguard 모호성을 제거합니다.
주석 처리기를 사용할 수 있습니까? Butterknife의 작동 방식과 비슷한 것이 있습니까? –
예, 주석 처리를 사용하여 실행을 컴파일 타임으로 이동할 수 있습니다. 그러나 바인딩에 대한 주석을 제공해야하므로 개발자의 관점에서 볼 때 더 많은 노력이 필요합니다. 아니면 내가 틀렸어? 나는 아직 논쟁 중이고, 나는 어느 쪽에도 기대지 않는다. 어쨌든 답장을 보내 주셔서 감사합니다. – NitroNbg