天天看點

Android高頻面試專題 - 架構篇(一)AS項目架構

日常開發中AS與Gradle架構使用技巧的高頻面試問題。更多其他完整面試專題,請關注公衆号擷取.

1、project和module的關系

一個project是指一個工作區間,是以一個project可以有多個module,module是子產品的意思,每一個module都是可獨立運作的程式,而一個project可以關聯多個module。

2、Gradle是什麼

  • Gradle是一個自動化建構工具
  • 相容Maven等倉庫
  • 基于Groovy的特定領域語言來聲明名目設定

3、Gradle常用指令

  • gradlew clean: 清除app目錄下的build檔案夾
  • gradlew check: 執行lint檢查
  • gradlew assemble:打release和debug包
  • gradlew build : 執行check和assemble
  • gradlew assembleRelease/gradlew assembleDebug:打全部管道的Release或者debug包

4、幾種依賴的差別

  • compile:我們最常用的依賴,編譯時提供并打包進apk
  • provided:編譯時提供但不打包進apk
  • 在gradlew 3.0 中complie過期了,用implementation和api替代,api = compile
  • implemention:将該依賴隐藏在内部,而不對外部公開

5、解決依賴沖突,排除依賴傳遞

  • exclude: 設定不編譯指定的子產品,排除指定子產品的依賴
  • transitive:用于自動處理子依賴項,預設為true,gradle自動添加子依賴項。設定為false排除所有的傳遞依賴
  • force:強制設定某個子產品的版本

6、Gradle打包時的混淆

  • 通過在buildTypes中配置minifyEnable來開啟和關閉proguard
  • 通過proguardFiles 來配置混淆參數與keep的内容
  • 通過shrinkResources 去除沒有用到的資源檔案

7、Gradle依賴統一配置管理

  • 在根目錄下建立自定義名字的.gradle檔案,例如:config.gradle
  • 打開項目根目錄下的build.gradle, 在最頂上依賴我們剛剛建立的配置檔案apply from: "xxx.gradle"
  • 在app子產品下的build.gradle中引用即可:compile rootProject.ext.dependencies["appcompat-v7"]

8、Jenkins+Git+Gradle實作CI自動打包

  • 安裝Jenkins,安裝需要的插件(比如說git插件、Gradle插件),配置JDK,Git,Gradle等編譯環境
  • 建立新的Jenkins項目,配置Git代碼倉庫位址、配置建構時的Gradle版本,和需要執行的Gradle Task
  • 配置Jenkins項目的建構參數,比如Gradle Task的參數、管道參數
  • 配置郵件通知
  • 開始建構