How to configure proguard for javascript interface?

前端 未结 3 901
深忆病人
深忆病人 2020-12-01 13:59

I have a implemented a Webview which takes use of JavascriptInterface. It\'s working fine when not obfuscating, but at once Proguard is active, it does not work. I\'ve looke

3条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-01 14:36

    Both your configurations could have worked if they hadn't contained typos:

    • ProGuard requires fully qualified names:

      NonObfuscateable -> com.project.NonObfuscateable

    • Compiled classes use '$' as a separator for inner classes:

      com.project.Activity_Webview.JavaScriptInterface -> com.project.Activity_Webview$JavaScriptInterface

    In the console log, ProGuard prints out notes about such suspected typos.

    A more general solution for keeping annotated Javascript interface methods:

    -keepclassmembers class * {
        @android.webkit.JavascriptInterface ;
    }
    

提交回复
热议问题