Dari
Gradle 플러그인

Gradle 플러그인

브릿지 코드에 Dari 호출 없이, 한 번의 매핑으로 브릿지 메시지 캡처하기

Dari Gradle 플러그인을 쓰면 호출마다 코드를 넣지 않아도 브릿지 통신이 기록됩니다. 브릿지가 요청을 받는 곳과 응답을 보내는 곳을 한 번만 알려 주면 됩니다. 그러면 디버그 빌드에서 플러그인이 직접 작성했어야 할 DariInterceptor 호출을 똑같이 넣어 줍니다.

캡처 이후 동작은 그대로입니다. 저장, 앱 내 인스펙터, 데스크톱 앱, 내보내기, 마스킹 모두 같습니다.

플러그인은 선택 사항입니다. 설정처럼 인터셉터를 직접 호출하는 방식이 기본이며 그대로 동작하고, 한 앱에서 두 방식을 함께 써도 됩니다.

파일별로 넣을 내용

파일넣을 내용
app/build.gradle.kts의 dependencies { }직접 호출 방식과 같은 dari / dari-noop. 플러그인이 추가해 주지 않습니다
settings.gradle.ktsGradle이 플러그인을 찾을 수 있도록 pluginManagement { repositories { } }에 mavenCentral() 추가
app/build.gradle.kts (dari / dari-noop을 추가한 모듈)plugins { }에 id("io.github.easyhooon.dari"), 그리고 dari { } 매핑 블록
Application.onCreate()Dari.setProtobufDecoder(...). protobuf 페이로드를 캡처할 때만 필요
브릿지 코드없음

의존성만으로는 켜지지 않습니다. 플러그인과 dari { }가 없으면 아무것도 바뀌지 않습니다. dari { }를 루트 build.gradle.kts에 넣지 마세요. 다른 모듈에 있는 브릿지는 그 모듈의 build.gradle.kts에 플러그인과 dari { }를 따로 넣어야 합니다.

설정

// settings.gradle.kts
pluginManagement {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}
// app/build.gradle.kts
plugins {
    id("com.android.application")
    id("io.github.easyhooon.dari") version "2.7.0"
}

dependencies {
    debugImplementation("io.github.easyhooon:dari:2.7.0")
    releaseImplementation("io.github.easyhooon:dari-noop:2.7.0")
}

dari {
    webToAppRequest("com.example.MainActivity.BridgeInterface", "onBridgeRequest") {
        handlerName = arg(0)
        requestId = arg(1)
        data = arg(2)
    }
    webToAppResponse("com.example.MainActivity", "sendResponseToWeb") {
        handlerName = arg(0)
        requestId = arg(1)
        success = arg(2)
        data = arg(3)
    }
}

플러그인, dari, dari-noop은 같은 버전을 쓰세요.

브릿지에 요청이 들어오는 지점과 응답을 보내는 지점이 각각 하나일 때 매핑이 가장 간단합니다. 수동 로깅에서도 인터셉터 가이드가 같은 구조를 권장합니다.

다음 문서

On this page