api 15 (ICS) 및 17 (JB)을 지원하려면 @JavaScriptInterface annotation 요구 사항이 있습니다. 두 개의 응용 프로그램 프로젝트에서 공유하는 Android 라이브러리 프로젝트가 있습니다. 라이브러리 프로젝트는 javascript interfaces 인 WebView 관련 클래스를 포함합니다. 응용 프로그램 프로젝트의 경우 하나는 api 15를 대상으로하고 다른 하나는 api 17을 대상으로합니다. 이는 사용자 정의 Android SDK를 사용하기 때문에 우리의 요구 사항입니다.@JavaScriptInterface는 ICS 프로젝트와 JB 프로젝트 모두에서 작동합니다.
문제는 라이브러리 프로젝트가 두 응용 프로그램 프로젝트에서 모두 작동하도록 만드는 것입니다. 라이브러리 프로젝트가 api 15를 대상으로하는 경우 @JavaScriptInterface 주석을 사용할 수 없습니다. 즉, javascript 콜백은 api 17 응용 프로그램 프로젝트에서 작동하지 않습니다.
한편, 라이브러리 프로젝트가 api17을 대상으로하는 경우에는 응용 프로그램 프로젝트가 상위 API 수준의 라이브러리 프로젝트와 연결할 수 없으므로 api15 응용 프로그램 프로젝트에서 작동하지 않습니다.
라이브러리 프로젝트에서 javascript 인터페이스 클래스를 갖는 방법에 대한 제안 사항은 api 15 및 api 17 응용 프로그램 프로젝트 모두에서 작동합니까?
내가 조사한 한 가지 접근법은 의존성 주입 라인을 따라 무언가를 사용하는 것이 었습니다. 라이브러리 프로젝트는 custom annotation을 사용하는데, api 17 프로젝트에서는 @JavaScriptInterface를, api 15 프로젝트에서는 noop을 주입합니다. 그러나 이것은 JDK 6의 주석이 상속을 지원하지 않기 때문에 가능하지 않습니다. – ejel