Android System WebView는 Chromium 기반으로 어플리케이션에서 사용되는 WebView의 실제 구현을 담당하고 있습니다.
서드파티 어플리케이션 개발자가 임의로 WebView 구현체를 바꿀 없기 때문에 개발자는 꽤 복잡한 과정을 통해 구현체를 변경 가능합니다. (Bromite 같은 서드파티 구현체들이 있음) 그럼 왜 Firefox GeckoView 변경을 고려하게 되는 것 일까요?
기본 System WebView는 주기적으로 자동 업데이트되는데, 가끔 업데이트가 예상치 못한 버그가 발생하기 때문입니다. 유명한 사례로 몇 달전 한국 안드로이드 어플리케이션들이 단체로 작동되지 않았던 적이 있었는데 문제의 주역은 System WebView 였습니다. 그리고 서드파티 어플리케이션 개발자 입장에서 웹 페이지를 표시하고 싶지만 WebView를 쓰고 싶지 않는 경우가 있을 수 있습니다. (위와 같은 업데이트 문제, 브라우저 버전을 고정하고 싶은 경우 등) 이 중 적절한 후보중 하나가 이번에 설명할 GeckoView입니다.
GeckoView는 모질라가 만든 안드로이드 경량 브라우저입니다. 실제로 안드로이드 몇몇 파이어폭스앱에서 사용중입니다. GeckoView의 큰 특징 중 하나는 데스크탑 파이어폭스의 꽤 많은 기능을 지원하면서 동시에 Browser Extension도 지원한다는 점입니다. 그래서 안드로이드 파이어폭스 브라우저는 자체 Browser Extension을 지원하고 있습니다. GeckoView는 오픈소스이고 서드파티 어플리케이션 개발자들도 프로덕션 앱에 쓸 수 있습니다. 추가시 어플리케이션 용량에 약 30~100 메가정도를 추가하므로 경우에 따라 정말로 필요한지 심사숙고 할 필요가 있습니다.
maven {
url "https://maven.mozilla.org/maven2/"
}
implementation "org.mozilla.geckoview:geckoview:${geckoview_version}"
<org.mozilla.geckoview.GeckoView
android:id="@+id/geckoview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
val geckoView = findViewById(R.id.geckoview)
GeckoRuntime
, 브라우저의 탭 하나에 대응하는 GeckoSession
을 하나씩 초기화
val runtime = GeckoRuntime.create(this)
val session = GeckoSession()
GeckoSession
을 런타임에 연결
geckoSession.open(runtime)
GeckoSession
을 GeckoView에 등록
geckoView.setSession(geckoSession)
GeckoSession
에서 url을 로드
geckoSession.loadUri("https://example.com")
0개 댓글