十二、Library中引用aar報錯的問題
1、場景:最近專案需求,做了一個人臉識別的功能,而人臉識別又是第三方提供的,對方給的是一個demo,而且資原始檔很多,佈局也有,這些是對方提供給我們進行可修改的。然後覺得這樣引入到專案中那必須會很亂,然後這個時候就弄成library然後在專案中引用就會好點,當你弄完全部之後,先編譯突然出現了aar檔案引用的問題了,這也是本文主要說明的。
2、報錯效果圖:
這裡寫定位到的檔案都是aar,放置與library中的libs檔案中。
3、原因:引用aar的方式出現問題了
4、解決歷程:
在網上找到了多種方式,然後試了又試發現還是不行。其中有人說在build.gradle中的android{}節點下用這種方式:
repositories {
flatDir {
dirs 'libs'
}
}
可我在FacialRecognition2下面的那個build.gradle中試過了還是不行,結果還在app目錄下也同樣寫了這個引用還是不行。
後來通過查閱網上的一些文章,最後看到以下文章給了我靈感。
AndroidStudio 多層級 Module 對 aar 引用問題
其中主要是看到這句
5、最終解決:
在專案中app->build.gradle中的android節點下引用
android {
....
}
repositories {
flatDir {
dirs '../libs/FacialRecognition2/libs';dirs 'libs' // 申明本地庫
}
}
這裡要補充下,如果這麼寫是還是不行的,aar雖然在我們的專案中要引用到,可是也得知道Library中也是有引用的,所以還是需要在FacialRecognition2->build.gradle中引用,引用方式不同上面,這個則是放入android節點中。
android {
...
repositories {
flatDir {
dirs 'libs'
}
}
}
當在這兩個build.gradle中引用完之後,這種error:Failed to resolve: … 基本算是解決了。
6、如果上面的能解決你的引用aar問題,下面的內容你也可以選擇繞過。
當時可能我長得太帥,就弄得有點坎坷,另外出現瞭如下錯誤:
Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger failed with multiple errors
看到Manifest merger,我很快就定位到了是AndroidMainfest或者build.gradle兩個中配置還是有問題,然後根據gradle console中
這裡的紅框只是舉例可能出現錯誤的地方,因為我都解決了,所以不能更好的展示給大家看,不過也不遺憾,起碼能知道這裡是可以看到具體的報錯資訊就夠了。
希望本文能幫到大家,同時也感謝您的支援。