Android Studio 生成debug版本正常,生成release版本报错
2016-08-03 21:14
190 查看
最近的任务是优化一个老项目,这个项目的开发工具一直以来都是Inteliji
IDEA,项目除了生成测试包外,还会有UAT包、生产包等,需要频繁的手动更改IP地址、端口等等一些参数。新项目的开发都是用Android Studio[基于IDEA],所以就尝试着把这个项目导人Android Studio,顺便利用gradle来创建多个版本的包。创建的步骤网上很多教程,这里不再赘述。
遇到的问题是,在debug版本下是OK的,换成release版本(或其他自定义版本)就GameOver了。错误信息很多,诸如
文件编码问题、xml布局问题等等。百度了许久,也没有结果,于是亲自验证测试。根据错误原因:同一个xml布局中有相同的id。因为之前开发用的工具是Eclipse,所以顺便也做一下测试,
新建项目MyAppXml布局如下【Eclipse和Android
Studio代码一样,只截取Eclipse中的代码】:
Activity如下:
从代码可以看出,xml文件和Activity中都有警告,
1.如果运行,Eclipse和Android
Studio会报ClassCastException( 类型强转异常)错误,可见在Activity中获取xml布局内的控件时,若存在多个相同id的布局控件,Activity中映射的是第一个id的控件
2.如果把蓝色底纹部分去掉。即在activity中不获取布局里的控件,在Eclipse和Android
Studio中运行都是OK的
打包时(蓝色底纹部分已经去掉),Android
Studio默认为debug(调试)版本,还有可选的release(发行)版本, 当然也可以新增自定义版本
3.在Android
Studio中默认的debug版本下,xml中的某些警告能通过编译并生成APK包(debug版本)。
4.如果换成release或自定义版本,则会报错,错误为xml文档中ID重复定义,如下:
由此可见
,release版本与debug版本相比“审核“更为严格。因此,由于之前代码中存在某些警告,改成自定义版本后这些警告被”拦截”了。所以打包失败。
小结:
1.Gradle中默认的为debug版本,开发时每次的运行和调试都是在这个版本下进行的。有部分警告在这个版本下可以被“忽略“,但在release版本或者自定义版本下,这种警告就会被判定为”错误“,导致无法生成apk包!
2.鉴此,开发过程中不要忽视类似的警告,每次发布(生成签名的APK包)的时候,尽可能的生成release版本,可以起到校验作用,有利于代码质量的提高!
IDEA,项目除了生成测试包外,还会有UAT包、生产包等,需要频繁的手动更改IP地址、端口等等一些参数。新项目的开发都是用Android Studio[基于IDEA],所以就尝试着把这个项目导人Android Studio,顺便利用gradle来创建多个版本的包。创建的步骤网上很多教程,这里不再赘述。
遇到的问题是,在debug版本下是OK的,换成release版本(或其他自定义版本)就GameOver了。错误信息很多,诸如
文件编码问题、xml布局问题等等。百度了许久,也没有结果,于是亲自验证测试。根据错误原因:同一个xml布局中有相同的id。因为之前开发用的工具是Eclipse,所以顺便也做一下测试,
新建项目MyAppXml布局如下【Eclipse和Android
Studio代码一样,只截取Eclipse中的代码】:
Activity如下:
从代码可以看出,xml文件和Activity中都有警告,
1.如果运行,Eclipse和Android
Studio会报ClassCastException( 类型强转异常)错误,可见在Activity中获取xml布局内的控件时,若存在多个相同id的布局控件,Activity中映射的是第一个id的控件
2.如果把蓝色底纹部分去掉。即在activity中不获取布局里的控件,在Eclipse和Android
Studio中运行都是OK的
打包时(蓝色底纹部分已经去掉),Android
Studio默认为debug(调试)版本,还有可选的release(发行)版本, 当然也可以新增自定义版本
3.在Android
Studio中默认的debug版本下,xml中的某些警告能通过编译并生成APK包(debug版本)。
4.如果换成release或自定义版本,则会报错,错误为xml文档中ID重复定义,如下:
由此可见
,release版本与debug版本相比“审核“更为严格。因此,由于之前代码中存在某些警告,改成自定义版本后这些警告被”拦截”了。所以打包失败。
小结:
1.Gradle中默认的为debug版本,开发时每次的运行和调试都是在这个版本下进行的。有部分警告在这个版本下可以被“忽略“,但在release版本或者自定义版本下,这种警告就会被判定为”错误“,导致无法生成apk包!
2.鉴此,开发过程中不要忽视类似的警告,每次发布(生成签名的APK包)的时候,尽可能的生成release版本,可以起到校验作用,有利于代码质量的提高!
相关文章推荐
- 为什么VC中DEBUG版本可以正常运行的程序有时无法在RELEASE版本下正常运行(转)
- debug 版本正常 release版本出错的原因之一
- debug 版本正常,release版本出错的一种解决
- Debug 运行正常,Release版本不能正常运行
- release版本下生成可执行程序错误调用debug下面的动态连接库
- VC 6.0中怎样设置才能生成Debug或Release版本的程序?
- 在debug版本运行正常但在release版本下运行错误!
- VC6.0如何编译生成Release或Debug版本?
- VC6.0如何编译生成Release或Debug版本?
- 【转】Debug 运行正常,Release版本不能正常运行
- Debug版本正常,而release版本找不到头文件的原因
- VC中DEBUG版本可以正常运行的程序有时无法在RELEASE版本下运行
- 浅谈VC6中Debug版本与Release版本生成的Exe的差异
- 如何使用Cmake生成debug版本和release版本的程序
- Debug 运行正常,Release版本不能正常运行
- 谈VC6中Debug版本与Release版本生成的Exe的差异
- 谈debug版本可以正常运行,而在release下运行出错之原因及避免类似情况发生
- 浅谈VC6中Debug版本与Release版本生成的Exe的差异
- Debug版本的Dll可以正常工作,Release版本却提示找不到dll
- Debug版本和Release版本区别及VC6.0下生成方式图解