日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android gradle 语法,Gradle 1.语法

發布時間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android gradle 语法,Gradle 1.语法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

8種機械鍵盤軸體對比

本人程序員,要買一個寫代碼的鍵盤,請問紅軸和茶軸怎么選?

gradle 語法解析:

gradle的語法十分簡潔,以至于看起來跟像是配置文件。

先看一個簡單的android項目完整的gradle腳本:build.gradle1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38apply plugin: 'com.android.library'

buildscript {

repositories {

jcenter()

}

dependencies {

classpath 'com.android.tools.build:gradle:1.2.3'

}

allprojects {

repositories {

mavenCentral()

}

}

android {

compileSdkVersion 19

buildToolsVersion '20.0.0'

defaultConfig {

applicationId "com.example.progressdemo"

minSdkVersion 14

targetSdkVersion 19

}

buildTypes {

release {

runProguard false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'

}

}

}

dependencies {

compile project(':library')

compile 'com.android.support:support-v4:20.0.0'

}

這是個很常見的配置。

這里buildscript后面的作用域內的代碼是配置gradle運行所需要插件,repositories指明插件從jcenter倉庫下載,dependencies指明這個項目編譯依賴于com.android.tools.build插件。

原理

這個腳本看著很直觀,意思也很清楚,但是,對應具體的語法看著還是有些摸不到規律。

解釋這個語法需要先了解閉包。

groovy簡介

這里簡單介紹下groovy,具體得可以看官方文檔。groovy是基于jvm的動態語言,語法和java也十分相似,而groovy更靈活。

groovy 中有很多的語法糖,這使得代碼看著非常簡潔。

首先要簡化的是’;’和return

完整版本(與java完全一致):1

2

3String (){

return "test";

}

這個等價于:1

2

3String (){

'test'

}

然后是groovy方法調用functionTest.groovy1

2

3

4

5

6

7

8void functionA(String a){

print("hello" + a)

}

//調用

functionA("world")

//調用,簡化寫法。

functionA 'world'

上面寫了2種方法調用,作用效果是一樣的。groovy可以去掉方法的括號,用一個空格間隔開。這里是不是似曾相識呢,所以

classpath 'com.android.tools.build:gradle:1.2.3'

也可以寫作

classpath('com.android.tools.build:gradle:1.2.3');

同樣,多個參數,數組,閉包作為參數都可以這樣操作:1

2

3

4

5

6functionB 'test', obj//多個參數

functionC ['key': value] //map作為參數

functionC key: value //map作為參數 簡化寫法

functionD {

println "i'm a closure"

}

回到開始的build.gradle腳本

可以看到很多地方用了這樣的語法糖,讓我們把它打回原形:1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37apply([plugin: 'com.android.library'])

buildscript({

repositories({

jcenter();

);

});

dependencies({

classpath('com.android.tools.build:gradle:1.2.3');

});

allprojects({

repositories({mavenCentral();});

});

android({

compileSdkVersion(19);

buildToolsVersion('20.0.0');

defaultConfig({

applicationId("com.example.progressdemo");

minSdkVersion(14);

targetSdkVersion(19);

});

buildTypes({

release({

runProguard(false);

proguardFiles(getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt');

});

});

});

dependencies({

compile(project(':library'));//inline

compile('com.android.support:support-v4:20.0.0')

});

上面的2段代碼是等價的。這樣代碼已經比較清楚了,build.gradle的內容也變成了groovy腳本,實際上,groovy腳本只是內置了class類的定義和main啟動函數,它本質和我們平時寫得java類沒太大區別。當然,上面的代碼看著更像javascript,這是因為里面寫了很多的閉包。

####閉包(closure)

很多語言都有閉包,但是java沒有,所以java的代碼總是很羅嗦。閉包簡單理解就是方法塊,可以想象java中的靜態方法塊。

定義1

2

3

4

5

6

7def closureA = {

println "I'm a closure"

}

//帶參數的

def closureB = { file ->

println file.getPath()

}

需要注意的是這里并沒有定義file的類型,只要參數有path屬性或者getPath()方法就可以了。

調用1

2closureA()

closureB(new File('/home/user/fileName'))

結合函數使用1

2

3

4

5

6

7

8

9

10

11void funtionE(closure){

closure()

///...

}

//調用:

funtionE(closureA)

//直接定義和使用閉包

funtionE {

println "I'm a closure"

}

到這里,我們就可以很容易地看懂gradle文件了;

總結

以上是生活随笔為你收集整理的android gradle 语法,Gradle 1.语法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。