Android Gradle 學習筆記

學習Android Gradle

前言

	之前工作,在使用Android gradle時翻過車,因此對其產生了濃重的好奇感。買了本《Android Gradle 權威指南》,進一步學習一下。書很薄,200多頁。這對一個沒有很好看書習慣的我來說,是一件好事。開擼的時候就遇到了一個坎,不能理解“閉包”的概念。我嘗試忽略這個概念繼續讀下去,可是發現,這是一個重要的感念,貫通全書,於是開始研究“閉包”。這期間發現閉包很像android中使用過的Lambda。當搞清楚閉包的概念之後,再讀本書就輕鬆多了。
	本書算是讀了兩遍,第一遍有些不理解的,在第二次閱讀時清晰了很多。今天是讀第二遍結束的日子。留下筆記,來紀念這爲數不多的通讀的書籍的偉大時刻。
	這裏印象最深的除了那個坎,還有就是以前使用過的技術點。之前只是使用,現在瞭解了原理。個人認爲,看書,對於新的技術點,做個瞭解,當用到的時候可以有個大致的概念,具體怎麼用,現查資料就好了。

歷程

	最早:.gradle破玩意,弄不好工程就跑不來。新建工程,再有就是,從Eclipse拉個工程到android studio中,編譯不過的原因經常是因爲gradle沒配置好,當時最好的辦法就是,去可以編譯過的工程中複製gradle的內容。
	成長:熟悉gradle的依賴項配置
	成長:定製系統多應用聯合開發,由於架構要求,多模塊聯合開發。開始重視gradle的使用。開始配置本地依賴項,服務端依賴項。頭疼的事情又來了,依賴衝突,頭都大了。
	成長:項目變更,重新審視gradle。增加各個模塊gradle的統一配置文件。開始使用命令行運行gradle。
	當前:閱讀書籍,加深gradle的使用方式以及原理。

經驗

	gradle看似無關緊要的東西,隨便上網上找點配置信息,刪刪減減編譯過就行了,可能後期就再也用不上了。哪怕你多引了些依賴,都不會有太大的影響。
	但是,項目大了後,對於協同開發,base代碼引用,新人接手代碼來說,一個很爛的gradle會帶來很多麻煩。
	開發過程中遇到最大的問題,就是版本衝突,有時就是毫無頭緒的衝突。對於不熟悉gradle的人來說,事件很頭疼的事,哪怕你對代碼組織結構很瞭解。使用gradle命令行(android stdio有可視化的gradle使用方式),就會相對簡單的解決衝突問題。可以查看項目的依賴樹,如果這是一顆大樹,也夠你頭疼一陣的,不過怎麼也比沒有頭緒要強。
	推薦一個比較萬能的方法,會解決很多開發過程中遇到的編譯問題,就是:gradlew assembleDebug 。

收穫

	《Android Gradle 權威指南》這本書前面介紹了些gradle的基本概念以及使用方法。

含閉包代碼的演變過程

		def numList= [1,2,3,4,5,6,7,8]
		// 原始寫法,接受一個閉包作爲參數,each源碼處可以接收一個閉包參數
		numList.each({println it})
		// 重新佈局
		numList.each({
			println it
		})
		// 語法規則,最後一個參數是閉包,可以放到方法的大括號裏。
		numList.each(){
			println it
		}
		// 語法規則,可以生活方法的小括號
		numList.each{
			println it
		}
		// 以上就是我們常見的格式了

幾個重要文件

settings.gradle文件:

		這個文件可配置編譯器當前可以顯示的模塊,一般是一個application和多個library模塊
		這裏遇到過的問題
			1 使用相對路徑,可能出現引用不到對應的模塊的情況。以settings.gradle所在目錄爲基準。
			2 最好清理掉不再引用的模塊,工程就少一點冗餘
			3 如果將模塊作爲aar包提交到服務端,然後項目對aar進行引用,注意給引用價格標志位。可以靈活切換aar包與源碼的引用

build.gradle文件:

		主要分爲兩種
		一種是全局的build.gradle:
			配置項目內所有gradle的公共屬性,常見的服務端代碼庫的引用
		另一種是個模塊的build.gradle
			重頭戲,各模塊的主要配置就在這裏
		apply plugin: 'maven'  // 應用二進制插件
		apply from: '../../**.gradle'  // 引用腳本插件,新建gradle文件,可寫方法,可設置gradle全局屬性,使用:引用依賴的版本號可以在這裏配置

寫不動了,以後再完善。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章