Gradle里面的依賴implementation和api的真正理解


Gradle新版本里面依賴的寫法支持implementation和api,下面簡單解釋兩者的區別:
  implementation 表示依賴,即 只依賴不打包進來。
  api 表示打包,即 不僅依賴還打包進來,這樣上層就不用重復依賴。
  注意:這里的打包是便於理解,是指打包依賴關系而不是打包源代碼,也就是說將依賴暴露給上層。
  下面舉例說明:
    app主模塊下的依賴:
      dependencies {  implementation project(path: ':home')  } //依賴home模塊,使用implementation。
    home模塊下的依賴:
      dependencies {  api project(path: ':mvp')  } //使用api,表示將mvp模塊引入並打包進home模塊。因為mvp模塊含v7包,home模塊也含v7包。
    mvp模塊下的依賴:
      dependencies {  api 'com.android.support:appcompat-v7:28.0.0'  } //使用api,表示將v7包引入並打包進mvp模塊。
  相當於:
    app主模塊下的依賴:
      dependencies {  
        implementation project(path: ':home')  
        implementation project(path: ':mvp')
        implementation 'com.android.support:appcompat-v7:28.0.0'
      } //依賴home模塊,和home模塊需要顯示引入v7包一樣,app引入home模塊后還需要顯示引入mvp模塊和v7包。
    home模塊下的依賴:
      dependencies {  
        implementation project(path: ':mvp') 
        implementation 'com.android.support:appcompat-v7:28.0.0' 
      } //依賴mvp模塊.因為mvp模塊引入v7包使用的implementation,也就是只給自己使用,沒有將v7包打包進mvp模塊,所以home模塊還要引入v7包。
    mvp模塊下的依賴:
      dependencies {  
        implementation 'com.android.support:appcompat-v7:28.0.0'  
      } //依賴v7包,使用implementation,只依賴v7進mvp模塊,不打包向上提供

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM