問題描述:
在編譯運行時報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