Android问题集锦(十三) - Error:Tag <manifest> attribute package has invalid character '"'.

问题描述:
在编译运行时报mainfest文件清单中有无效的字符
这里写图片描述
从错误日志提示无效字符是在声明Activity组件出错了,出现了 ” 无效的字符,于是开始检查manifest文件中是否还有 ” 无效字符,按理如果有无效字符的话,manifest文件在编译期就会报红提示错误,类似这样
这里写图片描述
但实际并没有这样的错误提示,说明Activity在编译期间声明是没错的,那只有在构建期间出现了无效字符的错误,最后把目标放在package与applicationId之间的关系,由于在项目中productFlavors{} 定义了applicationId。

 productFlavors {

        laiXiu{
            applicationId LAIXIU_APPLICATION_ID

        }
    }

LAIXIU_APPLICATION_ID在gradle.properties文件定义如下:

LAIXIU_APPLICATION_ID="com.xxx.xxx"

问题就是出现这里“com.xxx.xxx”有个双引号,在构造过程中会把package=“”com.xxx.xxx “”,就是报错无效字符。
这里写图片描述

望周知:尽管您的项目可以设置package属性不等于applicationId,然并卵。构建工具在最后构建的时候将会复制Application ID并设置为您应用程序唯一的package属性的值。所以,如果您在构建成功之后检查AndroidManifest.xml文件,请不要惊讶package属性发生变化。在Android平台和Google应用商店,package属性才是真正作为您应用程序唯身份凭证。所以,一旦使用原始值构建(使用命名空间的R类解析manifest中的组件),构建工具将会丢弃package属性的值,并且使用Application ID替换。

解决方案:
把LAIXIU_APPLICATION_ID的值去除双引号即可。

LAIXIU_APPLICATION_ID=com.xxx.xxx

感谢:
https://blog.csdn.net/qq_17250009/article/details/53896168

猜你喜欢

转载自blog.csdn.net/hzw2017/article/details/81001424