본문 바로가기
개발 이야기/안드로이드

안드로이드 하이브리드 앱 Webview

by 런던살자 2019. 11. 19.

안녕하세요 마블랑입니다.

하이브리드라는 단어에 대해서 설명을 하면 자동차에서 먼저 나온것으로 알고 있는데요

자동차의 시동을 걸때는 전기를 이용하고 가속을 할때는 기름을 이용하는 것을 하이브리드라고 합니다. 

이렇게 하이브리드라는 단어가 생겨난뒤로 여러 분야에서 하이브리드라는 단어를 사용하게 됩니다.

IT분야에서도 보안에서 사용한 것을 본적이 있는데 개발분야에서도 하이브리드 앱이라는 어플도 알게 되었습니다.

하이브리드 앱은 어플처럼 실행되는데 표시되는 데이터는 웹페이지를 보여주는 어플이 있습니다.


그냥 어플로 모든 기능을 만들던가 웹 URL을 알려주고 인터넷 뷰어로 실행하면 되지 않는가 라고 의문을 가지게 됩니다.

물론 그렇게 구현을 할수도 있지만 각각의 단점이 있기 때문에 이것을 보완하기 위해 하이브리드 앱이라는 것이 생겨나게 되었습니다.

우선 어플로만 기능을 구현한다면 업데이트 및 수정, 보완에 대한 관리가 편리하지 않습니다.

웹으로 구현한다면 웹서버의 코드만 변경하게 되면 자동으로 모바일에는 수정 및 보완이 되기 때문입니다.

이 장점은 단말의 장치수가 늘어나면 늘어날수록 부각되는 장점입니다. 

어마어마한 단말의 수를 패치하려면 엄청난 시간이 소요되기 때문입니다~


그럼 웹서버를 만들고 URL을 이용해서 크롬이나 사파리 같은 인터넷 뷰어로 보면되지 않나 하는 분들도 있을것입니다.

그렇게 하면 굳이 어플을 설치할 필요없이 사용자가 URL만 이용해서 서비스를 제공받을수 있습니다.

하지만 이 방법의 단점은 서비스에 대한 안드로이드의 어플의 고유 기능을 사용할수 없다는 점입니다. 

인터넷뷰어인 크롬과 사파리는 크게 웹페이지만 보여주는 역활을 합니다. 

그러므로 사용자가 사용하고 싶은 기능을 추가하기에는 제약이 따릅니다. 

이 기능을 추가해주기 위해 어플 단에서 웹페이지를 표시하는 것입니다.


안드로이드의 기능도 사용하고 싶고 웹의 장점을 이용하고 싶을때 하이브리드 앱으로 구현을 하게됩니다~


하이브리드 앱을 구현하기 위한 가장 기본은 어플에 웹페이지를 표시하기 위한 Webview를 사용하는 것인데요

간단하게 웹뷰를 사용해보도록 하겠습니다.

 

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <WebView
        android:id="@+id/wv_main"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="Webveiw main"/>

</LinearLayout>

 

MainActivity.java

import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {
    WebView wv_main;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        wv_main = (WebView) findViewById(R.id.wv_main);

        WebSettings webSettings = wv_main.getSettings();
        webSettings.setJavaScriptEnabled(true);

        wv_main.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });

        wv_main.loadUrl("https://www.daum.net");
    }
}

이렇게 레이아웃 파일과 메인 액티비티를 수정해주세요~

 

그리고 매니페스트 파일에는 

 

<uses-permission android:name="android.permission.INTERNET" />


를 추가해주세요~

 

그리고 어플을 설치하고 실행을 해보면 코드에 있는 URL로 접속하게 됩니다~

 


이상 마블랑이었습니다. 

읽어주어서 고맙습니다~

댓글