android webview 에서 js 를 호출 했 을 때 주의사항 을 헷 갈 렸 습 니 다.

오늘 bug 가 있 습 니 다. 바로 webview 와 js 가 상호작용 하 는 방법 이 아무리 해도 바 뀌 지 않 습 니 다. debug 가방 은 문제 가 없습니다. release 가방 은 잘못 되 었 습 니 다. 포장 할 때 헷 갈 리 는 문제 라 고 생각 하고 헷 갈 리 지 않 는 가방 을 만 들 었 습 니 다. 아니 나 다 를 까 헷 갈 리 는 문제 입 니 다.
그리고 해결 방안 을 찾 습 니 다. proguard - project 파일 에 있 습 니 다.
<span style="font-family:KaiTi_GB2312;font-size:14px;"># If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}</span>

주석 을 풀다
fqcn. of. javascript. interface. for. webview 는 자신 이 정의 하 는 클래스 로 바 뀌 어야 합 니 다. (패키지 이름 도 있어 야 합 니 다. 내부 클래스 로 정의 된다 면 cn. wj. ui. WebView Activity $my Interface) 4.1 시스템 에 서 는 문제 가 없 지만 4.2 의 기계 에 서 는 안 됩 니 다. 다시 찾 아 보 세 요. 오,원래 4.2 이상 버 전에 서 js 인 터 페 이 스 를 호출 하려 면 성명 @ JavascriptInterface 를 사용 해 야 합 니 다. 그리고 헷 갈 릴 때 이 성명 을 잃 어 버 려 서 프로그램 이 js 를 호출 할 수 없습니다. 파일 에 조건 을 추가 해 야 합 니 다.
-keepattributes *Annotation* -keepattributes *JavascriptInterface*
따라서 웹 뷰 와 js 의 상호작용 을 사 용 했 을 때 혼동 파일 에 다음 설정 을 추가 해 야 합 니 다.
-keepclassmembers class cn.xx.xx.Activity$AppAndroid {
  public *;
}

-keepattributes *Annotation*
-keepattributes *JavascriptInterface*

좋은 웹페이지 즐겨찾기