Android studio 打包时,打Debug包没有问题,直接运行也可以,但是每次打正式release包的时候就会报错:

Error:Execution failed for task ‘:app:transformClassesAndResourcesWithProguardForRelease’.
Job failed, see logs for details

并且在‘message’窗体中还打印了很多的警告信息,例如:

Warning:freemarker.ext.servlet.ServletContextHashModel: can't find referenced class javax.servlet.GenericServletWarning:freemarker.ext.servlet.ServletContextHashModel: can't find referenced class javax.servlet.ServletContextWarning:freemarker.ext.servlet.ServletContextHashModel: can't find referenced class javax.servlet.GenericServletWarning:freemarker.ext.servlet.ServletContextHashModel: can't find referenced class javax.servlet.ServletContextWarning:freemarker.ext.servlet.ServletContextHashModel: can't find referenced class javax.servlet.GenericServletWarning:freemarker.ext.servlet.ServletContextHashModel: can't find referenced class javax.servlet.ServletContextWarning:freemarker.ext.servlet.ServletContextHashModel: can't find referenced class javax.servlet.GenericServletWarning:freemarker.ext.servlet.ServletContextHashModel: can't find referenced class javax.servlet.ServletContextWarning:freemarker.ext.servlet.ServletContextHashModel: can't find referenced class javax.servlet.GenericServlet

百度了很多博客,都没有解决,后来仔细想了想,release包和debug包的区别就是签名文件和混淆配置不一样,感觉就是release包的混淆没有做好,然后就借鉴了混淆打包报错这篇文章,把所有的警告信息都解决和消除,然后再去打包就没问题,就可以直接编译成功了。

当然,如果你不想一个一个就添加混淆,也可以去偷懒的修改Gradle的配置信息,下面是正常打包配置信息

buildTypes {        release {            minifyEnabled true            debuggable true            buildConfigField ("boolean", "MY_DEBUG", "false")            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        debug {            minifyEnabled false            buildConfigField ("boolean", "MY_DEBUG", "true")            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }

其中,minifyEnabled 主要用来控制是否运行混淆的,将其改为false,不进行混淆,就可以直接打包了,但是不建议如此做,这样很不规范,热切对于公司项目和代码来说很不安全。

最后博主在这建议大家,每次引用第三方开源包或者开源项目时,将混淆配置也加入进去,这个对于打release包很正要,不要去忽视这个,省的到时候出现错误时,还要回头挨个去配置混淆信息。

更多相关文章

  1. Flutter ubuntu 环境搭建
  2. android SDK安装以及环境变量配置(windows)
  3. Windows 10下安装配置Android(安卓)Studio 3.2.0简要教程
  4. 2013年 Android开发环境安装
  5. react-native 中配置极光推送 Android关键详细的说明与截图代码
  6. Android(安卓)WIFI 架构和控制流程
  7. React Native for Android(安卓)实战(一):配置和起步
  8. 保持应用程序界面不随手机转动而转动 解决方法
  9. Android(安卓)Studio Gradle使用笔记

随机推荐

  1. Flutter UI基础 - 布局之Row/Column/Stac
  2. Android Studio 和 Gradle 构建基础
  3. Android 讯飞语音之语音合成(在线有声朗读
  4. Android常用的两种基本布局——线性布局L
  5. Android中使用Parcelable
  6. 关于webview调用js
  7. Android模拟器常用使用,和基本功能使用
  8. Android(安卓)View 绘制过程
  9. Android可拖拽布局ConstraintLayout
  10. (一)Android官方MVVM框架实现组件化之整