Android Studio 錯誤: 非法字符: '\ufeff' 及 Gradle不能自動查找xml自定義屬性


一、非法字符: '\ufeff'

在將項目導入到Studio時提示 錯誤:非法字符: '\ufeff',編譯器沒報錯但編譯出錯,比較頭疼,後來發現原因是因爲沒有采用UTF-8無BOM模式用 Notepad++ 或其他編輯器將文件打開,更換下格式就可以解決:



注:Eclipse可以智能的把有BOM文件轉爲無BOM文件,目前Andorid Studio未做處理。下面也簡單的說下什麼是BOM(Byte-Order Mark),可以理解爲字節順序標記是位於碼點U+FEFF的統一碼字符的名稱。當以 UTF-16 或 UTF-32 來將UCS/統一碼字符所組成的字串編碼時,這個字符被用來標示其字節序。常被用來當做標示文件是以UTF-8、UTF-16或UTF-32編碼的記號。通俗點理解成字節順序標記,傳輸標識就行了。更多信息可瞭解官網:http://www.unicode.org/faq/utf_bom.html#BOM


二、Gradle不能自動查找xml自定屬性問題

佈局xml文件中出現Gradle不能自動查找自定義屬性:

In Gradle projects, always use http://schemas.android.com/apk/res-auto for custom attributes




將自定義屬性 http://schemas.android.com/apk/res/com.xxx.xxx 修改爲:http://schemas.android.com/apk/res-auto 即可。如下圖:




三、Studio出現如下錯誤解決方案

Error:duplicate files during packaging of APK ........
Path in archive: META-INF/LICENSE.txt

exclude 'META-INF/NOTICE.txt'

You can ignore those files in your build.gradle:
android {
 packagingOptions {
   exclude 'META-INF/LICENSE.txt'
 }
}
Error:Execution failed for task ':app:packageDebug'.
> Duplicate files copied in APK META-INF/LICENSE.txt
  File 1: /StudioProject/app/libs/xxx.jar
  File 2: /StudioProject/app/libs/xxx.jar


因爲多個jar包裏包含了同樣的文件(NOTICE.txt),導致打包時因爲擔心相互覆蓋問題而提示出錯。
嘗試下在 app 下的 build.gradle 中的 android 部分增加一段配置:
packagingOptions {
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
}


【轉載註明gao_chun的Blog:http://blog.csdn.net/gao_chun/article/details/49329729】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章