웹뷰 앱 개발 가이드

웹뷰 앱 개발 가이드는 Android Studio 와 Kotlin 으로 기존 웹사이트를 WebView 앱에 담는 기본 구현과 JavaScript–Kotlin 연동 방법을 예제 코드로 설명합니다.

개발 도구 무료 · 설치 없음 최근 30일 12회

웹페이지를 Android 앱으로 변환하는 방법. WebView 컴포넌트를 활용해 기존 웹사이트를 네이티브 앱처럼 배포할 수 있습니다.

1 WebView 란

WebView 는 Android 에서 웹 콘텐츠(HTML/CSS/JS) 를 표시하는 UI 컴포넌트.

하이브리드 앱
웹 + 네이티브 결합
웹 기술 활용
HTML, CSS, JavaScript
유지보수 용이
웹만 수정하면 앱도 반영
저비용
개발·배포 비용 절감

2 기본 WebView 구현 (Kotlin)

// AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<application android:usesCleartextTraffic="true" ... />

// activity_main.xml
<WebView
    android:id="@+id/webview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

// MainActivity.kt
class MainActivity : AppCompatActivity() {
    private lateinit var webView: WebView
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        webView = findViewById(R.id.webview)
        webView.settings.javaScriptEnabled = true
        webView.settings.domStorageEnabled = true
        webView.webViewClient = WebViewClient()
        webView.loadUrl("https://program1472.com/")
    }
    override fun onBackPressed() {
        if (webView.canGoBack()) webView.goBack() else super.onBackPressed()
    }
}

3 JS ↔ Kotlin 통신

// Kotlin
class WebAppInterface(private val context: Context) {
    @JavascriptInterface
    fun showToast(msg: String) {
        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show()
    }
}
webView.addJavascriptInterface(WebAppInterface(this), "AndroidApp")

// 웹에서 호출
<button onclick="AndroidApp.showToast('Hello')">알림</button>
주의
• usesCleartextTraffic 는 HTTP 통신용. 운영은 HTTPS 권장
• javaScriptEnabled 활성화 시 XSS 주의
• 업로드/파일 선택은 WebChromeClient 추가 구현 필요

사용 방법

  1. Android Studio 에서 Empty Activity 프로젝트를 새로 만듭니다.
  2. 2번 항목의 코드대로 AndroidManifest.xml 에 인터넷 권한을 넣고, activity_main.xml 에 WebView 를 배치합니다.
  3. MainActivity.kt 의 loadUrl("...") 주소를 내 웹사이트로 바꿉니다. 뒤로 가기 버튼이 앱 종료가 아니라 이전 페이지로 가도록 하는 처리도 예제에 들어 있습니다.
  4. 웹 화면에서 앱 기능(토스트 알림 등)을 부르고 싶으면 3번의 @JavascriptInterface 예제를 추가하고, 웹 쪽에서 AndroidApp.함수명() 으로 호출합니다.
  5. 에뮬레이터나 실제 기기로 실행해 확인합니다.

자주 묻는 질문

웹사이트가 http 로만 열려요. 괜찮나요? 예제의 usesCleartextTraffic="true" 는 http 접속을 허용하는 설정입니다. 실제 배포할 앱이라면 사이트를 https 로 전환하고 이 설정은 빼는 것을 권합니다.

웹페이지의 파일 업로드 버튼이 앱에서 동작하지 않아요. 기본 WebViewClient 만으로는 파일 선택 창이 뜨지 않습니다. WebChromeClient 를 추가해 파일 선택 처리를 구현해야 합니다.

웹을 고치면 앱도 다시 배포해야 하나요? 화면 내용은 웹에서 불러오므로 웹만 수정하면 앱에도 반영됩니다. 권한이나 네이티브 기능을 바꿀 때만 앱을 다시 빌드하면 됩니다.

도구 전체 보기 →