遇到的问题:
在通过IDE进行apk安装时,app在手机上运行一切正常。但,通过正式打包后发送到手机安装后,部分功能无法使用。此时应该想到的——>很有可能是混淆导致的。
在打包安装之后,控制台输出了这样的信息:
[INFO:CONSOLE(1)] "Uncaught TypeError: Object [object Object] has no method 'openImage'", source: http://*****.com/***/234 (1)
意思就是,找不到这个方法。很奇怪,明明通过IDE安装时可以的,打个包就不可以了?
在混淆文件中发现这样一段注释:
# 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 *;
#}
大概意思就是:如果你的项目在WebView中支持了js,那么以下的代码就要注意别混淆了。
形式就是:
-keepclassmembers class 包名.类名{
public *;
}
-keepattributes *Annotation*
-keepattributes *JavascriptInterface*
同时也对注解中的相应字段做了仿混淆设置,这样问题也就解决了。