360加固宝加固应用后,出现java.lang.ClassNotFoundException异常

     最近360市场强制加固后才能上传,加固后安装在手机上,点击图标异常

java.lang.RuntimeException: Unable to get provider com.xx.xxx.xxxx: java.lang.ClassNotFoundException: Didn't find class "com.xx.xxx.xxxx" on path: DexPathList[[zip file "/data/app/com.xx.xxx-1/base.apk"],nativeLibraryDirectories=[/data/app/com.xx.xxx-1/lib/arm, /vendor/lib, /system/lib]]


     网上百度了,比较广泛的解决方案是:

1。Manifest文件中注册的Activity的名称,有没有写错,包名有没有搞错,有些网友,可能只写一个类名,前面用点号代替,但是这个类不在默认的包内,所以报这个错,那么只要写上类的全名,即可。

2。有些android,需要一些第三方的包,直接将其引入,在以前是可以的,但是在最新的adt中不行,必须在程序中新建一个libs文件夹,将第三方的jar文件copy到libs文件夹中,才行,很多人因为这样才报错,特别是以前的项目,默认并没有这个libs文件夹,但是新版本的adt,默认就建了libs这个文件夹。

3。有一点也很重要,在Java Build Path面板下的Order and Export中,一定要把你引入的jar文件,勾上,否则,跟没引用一样,切记。

     这可能针对的是原包出现java.lang.ClassNotFoundException的解决方案,我尝试之后都无效

继续百度,有如下解决方案:

   manifest文件中,各组件的name用包名+组件名的形式,而不要用组件名前加点的省略形式。

     然而试过之后还是不行,最后抱着试一下的心态,对project进行了clean,然后编译,签名,加固,重签名,发现居然可以了,简直是奇迹。

     总结:

       如果原包没问题,加固之后出现class not found的情况,建议进行以下尝试:

       1.对project进行clean,然后重新编译,签名,加固,重签名,如果还是不行,尝试2;

       2.将manifest文件中,各组件的name用包名+组件名的形式,然后clean,重新编译,签名,加固,重签名。

    然而,360加固后,应用的运行明显感觉没加固前流畅了,也并不清楚加固过程中究竟会干些什么,所以虽然加固是降低反编译的风险,然而加固也是一种风险。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值