그래들과 그루비 매직

2716 단어 androidgradle
Gradle은 특히 중소 규모 프로젝트를 진행하는 Android 개발자에게 매우 혼란스러울 수 있습니다. Android 프로젝트에서 Gradle은 기본적으로 설정되며 작동 방식과 이유를 탐색할 필요를 거의 느끼지 않습니다.

다음은 Gradle과 관련하여 가졌을 수 있는 몇 가지 질문과 답변입니다.

1. 작업을 실행하기 위해 gradlew taskName 대신 gradle taskName를 사용하는 이유는 무엇입니까?
그것은 우리 프로젝트에서 Gradle wrapper를 사용하여 프로젝트의 모든 개발자들 사이에 Gradle의 1개 버전을 갖기 때문입니다.

2. Android Studio의 모듈 및 Gradle의 프로젝트
Android 프로젝트는 Gradle 프로젝트이기도 합니다. Gradle은 프로젝트와 build.gralde 파일 사이에 일대일 관계가 있습니다. Android 스튜디오에서 "모듈"이라고 부르는 것과 마찬가지로 Gradle에서는 하위 프로젝트라고 합니다.

3. 문자열 리터럴에 ' 또는 "를 사용해야 합니까?
Gradle 스크립트를 설명하기 위해 Kotlin과 함께 사용되는 언어 중 하나인 Groovy는 큰따옴표와 작은따옴표를 모두 문자열로 인식합니다.
Groovy의 문자열 유형:
  • 'Hello World 1' - 문자열
  • "Hello World 2"- 문자열
  • "Hello World $count"- GString

  • 4. 함수 호출, 속성 및 언제 둥근 괄호를 사용해야 합니까?
    그루비에서:
  • 함수에 하나 이상의 매개변수가 있는 경우 중괄호를 무시할 수 있습니다.
    필드는 속성이므로 각 클래스 필드는 선언된 필드에 대한 setter 및 getter를 생성합니다.

  • 아래 코드를 보고 Foo.name() 함수를 실행할 때 ./gradlew showMagic 함수가 몇 번이나 트리거되는지 추측해 보십시오.

    class Foo {
        def name = ""
    
        void name(String newString) {
            name = newString
            println("Foo.name() triggered")
        }
    }
    
    tasks.create("showMagic") {
        doFirst {
            group "Whole new group"
            description "Check setter and getter capabilities"
    
            def foo = new Foo()
    
            foo.name = "string 1"
            println("showMagic() ${foo.name}")
            foo.name("string 2")
            println("showMagic() ${foo.name}")
            foo.name "string 3"
            println("showMagic() ${foo.name}")
            foo.setName("string 4")
            println("showMagic() ${foo.name}")
            foo.setName "string 5"
            println("showMagic() ${foo.name}")
            String propertyOrFunctionName = "name"
            foo."$propertyOrFunctionName" = "string 6"
            println("showMagic() ${foo.name}")
        }
    }
    


    산출:

    showMagic() string 1
    Foo.name() triggered
    showMagic() string 2
    Foo.name() triggered
    showMagic() string 3
    showMagic() string 4
    showMagic() string 5
    showMagic() string 6
    


    5. 여러 매개변수가 있는 함수
    위의 코드에서 짐작할 수 있듯이 둥근 괄호를 무시하고 쉼표로 구분된 여러 매개 변수를 전달할 수 있습니다.

    void foo(String url, String parameter) {
        println url
        println parameter
    }
    
    tasks.create("callFoo") {
        doFirst {
            foo "google.com", 'consistency'
        }
    }
    

    좋은 웹페이지 즐겨찾기