android studio混淆打包之transformClassesAndResourcesWithProguardForRelease 错误

在android打包发布的时候,需要对app进行压缩,混淆,去除无效文件等,以保证发布出去的app占用资源尽可能的小。因此需要我们对gradle进行必要的配置(以android studio打包为例)。

1、build.gradle 配置
 buildTypes{
        debug {
            //多余的参数
            minifyEnabled false
            zipAlignEnabled false
            shrinkResources false
            signingConfig signingConfigs.debug
            // 显示Log
            buildConfigField "boolean", "LOG_DEBUG", "true"
        }
        release {
            minifyEnabled true //混淆
            zipAlignEnabled true   //Zipalign优化
            shrinkResources false //删除无用资源
            signingConfig signingConfigs.release
            // 显示Log
            buildConfigField "boolean", "LOG_DEBUG", "false"
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

release版本为发布版本,因此设置了minifyEnabled true,zipAlignEnabled true,shrinkResources true。其中proguard-rules.pro是需要我们自己根据项目编写的混淆文件。

2、proguard-rules.pro混淆文件编写(网上都有,就不贴了)
3、常见transformClassesAndResourcesWithProguardForRelease’.错误

这个问题是在说你在混淆打包的时候有些类有可能找不着,所以会报错,和warning
解决的办法:

找到报warning的类都给他在你的proguard-rules.pro混淆器文件中
添加代码-dontwarn 包名+类名.**;
给取消掉warning就可以了,如果你不想那个类被混淆,那就添加代码:-keep class 包名+类名{;}或者包名.*{*;}

当然也可以在proguard-rules.pro添加-ignorewarning ,这个是“屏蔽所有警告” 。
因此打出的包可能会出现必要代码被混淆导致项目奔溃而无法正常运行,因此个人建议,最好不要加这句代码,遇到什么错误什么警告,对应去解决即可,解决完了自然可以打包成功了。

4、解决 The same input jar is specified twice 问题

在 Android Studio 中, build.gradle 中声明了对这个 jar 包的依赖,所以不需要在混淆配置文件中继续声明。

将proguard-rules.pro中所有的 -libraryjars libs/*.jar 注释掉以后,项目就可以正常混淆了。

5、最后还有一个小问题,混淆后打开包含百度地图的app时,报如下错误
No pending exception expected: java.lang.NoSuchMethodError: no static method "Lcom/baidu/vi/VMsg;.postMessage(IIIJ)V

解决方法如下:原因是启用了代码混淆引起的报错。

修改android/app/proguard-rules.pro 文件,在里面增加如下两行

-keep class com.baidu.** { *;}
-keep class vi.com.gdi.bgl.**{*;}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值