1. 程式人生 > >十二、Library中引用aar報錯的問題

十二、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中

這裡寫圖片描述

這裡的紅框只是舉例可能出現錯誤的地方,因為我都解決了,所以不能更好的展示給大家看,不過也不遺憾,起碼能知道這裡是可以看到具體的報錯資訊就夠了。

希望本文能幫到大家,同時也感謝您的支援。