最近把android studio更新到了最新版本3.3.2,然後之前的項目都出現了異常,編譯失敗。
其中絕大部分項目都引用了VLC3.0.0-1.9.8這個aar,我在編譯的過程中發現,隻要添加了這個庫的項目都會報下面這個錯誤
AAPT: error: unexpected element <uses-sdk> found in <manifest><application>.
我以為是我項目某個moudle的AndroidManifest.xml檔案寫得有問題,于是把項目中所有子產品的AndroidManifest.xml都檢查了一遍,沒有哪一個子產品有定義<uses-sdk>這個标簽,後來去google了一下,找到了罪魁禍首。
原因是VLC3.0.0-1.9.8.aar的AndroidManifest.xml在Application下定義了<uses-sdk>這個标簽,正常是不可以這樣定義的,導緻合并到APP的manifest檔案後出錯,編譯不通過。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL90TUkNXOGF2d4JjYrZkMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZwpmL3YTNxEjM0gTM0ADNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
找到原因後,就好解決了。
1.aar檔案就是一個自定義的zip檔案,是以将libvlc3.0.0-1.9.8.aar改為libvlc3.0.0-1.9.8.zip;
2.解壓zip檔案,将libvlc中的AndroidManifest.xml打開,删除<uses-sdk>這個标簽并儲存;
3.重新将libvlc的字尾改為aar,即libvlc3.0.0-1.9.8.aar;
4.替換後android studio工程中的libvlc;
5.重新編譯,完美解決。