命令行
我們在Android Studio
中,打開底部 Terminal
tab頁,就可以使用命令來操作了,例如git
,gradle
等。
gradle
的命令工具是 gradlew
.
在不同系統下,命令引用略有區別。在linux, macOs下,執行命令,
./gradlew xxx
在windows下執行命令gradlew xxx
gradle常用命令
./gradlew tasks #查看主要任務
./gradlew tasks --all #查看所有任務,包括緩存任務等
./gradlew :moduleName:taskName #對某個module [moduleName] 的某個任務[TaskName] 運行
./gradlew -v #查看構建版本
./gradlew clean #清除build文件夾
./gradlew build #檢查依賴並編譯打包
./gradlew build --info #檢查依賴並編譯打包,打印日誌
./gradlew build --profile #編譯並輸出性能報告,性能報告一般在構建工程根目錄 build/reports/profile 下
./gradlew build --info --debug --stacktrace #調試模式構建並打印堆棧日誌
./gradlew clean build --refresh-dependencies #強制更新最新依賴,清除構建後再構建
./gradlew installDebug #編譯並安裝 debug 包
./gradlew installRelease #Release 模式打包並安裝
./gradlew uninstallRelease #卸載 Release 模式包
./gradlew assemble #debug release 模式全部渠道打包
./gradlew assembleDebug #編譯並打 Debug 包
./gradlew aD #assembleDebug 的簡寫
./gradlew assembleRelease #編譯並打 Release 的包
./gradlew aR #assembleRelease 的簡寫
./gradlew dependencies #查看項目根目錄下的依賴
./gradlew app:dependencies #查看 app 模塊下的依賴
./gradlew app:dependencies --configuration implementation #查看 app 模塊下包含 implementation 關鍵字的依賴項目
groovy簡單語法
getter/setter
對於每一個field
, Groovy
都會自動創建與之對應的getter
, setter
方法。在使用中obj.fieldA
讀取或者obj.fieldA = value
賦值時, 實際上,會自動轉而調用 obj.getFieldA
和 obj.setFieldA(value)
方法。
比較類似Kotlin
.
語法格式
每行代碼結束不用加分號。
函數定義時, 參數的類型也可以不指定。
==
相當於java
的equals
,如果判斷對象是否同一個,使用is()
.
變量定義
有兩種定義方式,強類型,弱類型。
// 強類型,類似java
int a = 10
// 弱類型,不區分類型可以賦值其他類型
def x = "hello"
x = 10
Groovy數據結構
Groovy常用的數據結構有,List
, Map
, Range
等。
List
底層對應 Java 中的 List 接口,一般用 ArrayList 作爲真正的實現類,List 變量由[]定義,其元素可以是任何對象。
def test = [100, "hello", true]
//添加新元素
test << 200
println("test="+test)
def list = [1, 2, -4, 5, 6, 7 -3, 8, 9]
//添加
list.add(10)
list.leftShift(11)
list << 12
println("list="+list)
//刪除
list.remove(10) //index
list.removeAt(1) //index
list.removeElement(11) //value
//println("list="+list)
list.removeAll{return it % 3 == 0}
println("list="+list)
//改
list[0] = -1
println("list="+list)
//排序
list.sort { a, b ->
a == b ? 0 : Math.abs(a) > Math.abs(b) ? 1 : -1
}
println("list="+list)
Map
map
表示鍵值表, 有[:]
定義, 冒號左邊是key
, 右邊是value
, 其中 key
必須是字符串, value
可以是任何對象。另外,key
可以用 單引號或雙引號包起來,也可以不包。
def map = [a:1, b:2]
//增加
map['c'] = 3
println(map)
//刪除
map.remove('c')
println(map)
//修改
map['b'] = 8
println(map)
def result = ""
//遍歷,方式1
map.each {k, v ->
result += "$k$v"
}
println("result=$result")
//遍歷,方式2
map.each{entry ->
println("${entry.key}, ${entry.value}")
}
map.eachWithIndex { k, v, index ->
println("$k, $v, $index")
}
map.eachWithIndex { entry, index ->
println("$entry, $index")
}
groovy腳本中的變量和作用域
對於每一個 Groovy
腳本來說,它都會生成一個 static void main 函數,main
函數中會調用一個 run
函數,腳本中的所有代碼則包含在 run
函數之中。
當我們在 Groovy
腳本中定義一個變量時,由於它實際上是在 run
函數中創建的,所以腳本中的其它方法或其他腳本是無法訪問它的。這個時候,我們需要使用@Field
將當前變量標記爲成員變量,其示例代碼如下所示:
@Field author = JsonChao