출처: http://jinifactory.tistory.com/11
Android에서 Hybrid Application 개발시 흔히 Webview에 addJavascriptInterface로 Java Object를
연결하여 Javascript - Java 사이의 브릿지 객체로 이용하곤 한다.
빌드하고 테스트 해보면 Javascript에서 바인딩 된 Java 객체를 잘 호출하는 것을 확인할수 있다.
문제는 릴리즈를 위해 빌드시 proguard 를 사용하면 발생한다.
04-23 00:23:35.914: E/Web Console(2689): Uncaught TypeError: Object [패키지이름].n@40776dd0 has no method '[메서드이름]' at [페이지URL]
해당 Java 객체의 메서드를 호출하는 곳에서 이런 류의 오류가 발생하는 것이다.
proguard에서 객체 이름을 암호화 했기 때문이다.... ㅡㅡㅋ
해결 방법은 proguard-project.txt에서 해당 객체는 암호화 하지 않도록 지정하는 것이다.
아래와 같이 proguard-project.txt를 수정하면 된다.
-keep public class YOURPACKAGENAMEHERE.JavascriptCallback
-keep public class * implements YOURPACKAGENAMEHERE.JavascriptCallback
-keepclassmembers class * implements YOURPACKAGENAMEHERE.JavascriptCallback {
<methods>;
}
'IT_Programming > Android_Java' 카테고리의 다른 글
[Android Studio] Migrating from Eclipse (0) | 2013.12.17 |
---|---|
[펌] Google App Engine XMPP를 활용하여 Android Push Service 만들기 (1~2) (0) | 2013.12.16 |
[펌] Storage Access Framework - 스토리지 액세스 프레임웍을 통해 파일 마스터가 되자! (0) | 2013.12.13 |
[Android] 앱 설치, 삭제, 업데이트 시 서비스(Service) 실행하기 (0) | 2013.11.08 |
[펌] Android AsyncTaskLoader에 대하여 (0) | 2013.11.04 |