今天遇到个bug:
realse下的包js交互不成功,debug包正常初步判定是混淆的问题,
发现使用到了一个内部类,
在混淆文件中,加上这句之后就正常了
-keepnames public class XXXX.base.BaseWebActivity$* {
private ;//所有私有的字段
public ;//所有私有的方法
}
或者
-keepnames public class XXXX.base.BaseWebActivity$* {
private ;//当用在类内部时 匹配任何字段和方法
public *;
}
总结,保留内部类的方法-keepnames public class XXXX.base.BaseWebActivity
∗或−keepnamespublicclassXXXX.base.BaseWebActivity
∗
或
−
k
e
e
p
n
a
m
e
s
p
u
b
l
i
c
c
l
a
s
s
X
X
X
X
.
b
a
s
e
.
B
a
s
e
W
e
b
A
c
t
i
v
i
t
y
具体的类名
这个内部类需要申明为public如果这个内部类修饰符是private或default 那么对应的可以
去掉修饰符-keepnames class XXXX.base.BaseWebActivity
∗(注意:−keepnamesprivateclassXXXX.base.BaseWebActivity
∗
(
注
意
:
−
k
e
e
p
n
a
m
e
s
p
r
i
v
a
t
e
c
l
a
s
s
X
X
X
X
.
b
a
s
e
.
B
a
s
e
W
e
b
A
c
t
i
v
i
t
y
*混淆不通过直接报错)
另外附上一个关于混淆的详细介绍:https://segmentfault.com/a/1190000004461614