日常開發中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的參數、管道參數
- 配置郵件通知
- 開始建構