admin

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Thumbnailator Library를 활용하여 thumbnail image 만들기


jdk에 ava.awt.Image,java.awt.Graphics2D,java.awt.image.BufferedImage등으로 썸네일을 구현 할 수 있으나 Thumbnailator library를 이용하여 간단히 Thumbnail을 만드는 방법을 소개하고자 한다.

홈페이지: https://code.google.com/p/thumbnailator/

사용법

  1. 썸네일 만들기

     1) 가로 80, 세로 80인 이미지 만들기

      thumbnails.of("/user/mypc/test.jpg").size(80,80).toFile("/user/mypc/thumbnail/test.jpg");

    

    2) 원 이미지의 25%인 thumbnail 만들기

        thumbnails.of("/user/mypc/test.jpg").scale(0.25).toFile("/user/mypc/thumbnail/test.jpg");

    

    3) crop 이미지 만들기

        Thumbnails.of("/user/mypc/test.jpg").crop(Positions.CENTER).size(85, 81).toFile(new File("/user/mypc/thumbnail/crop/test.jpg"));

    * 이미지 중앙을 기준으로 가로 86,세로 81 크기의 thumbnail을 만든다.


   4) 90도 회전한 이미지 만들기

Thumbnails.of("/user/mypc/test.jpg").scale(0.25).rotate(90).toFile(new File("/user/mypc/thumbnail/r_test.jpg"));


   5) watermark 넣기

      BufferedImage originalImage = ImageIO.read(new File("original.jpg"));

        BufferedImage watermarkImage = ImageIO.read(new File("watermark.png"));

        BufferedImage thumbnail = Thumbnails.of(originalImage).size(200, 200).watermark(Positions.BOTTOM_RIGHT, watermarkImage, 0.5f).asBufferedImage();


  ※실행시 Heap Memory 부족에러 발생시 해결 방법

아래와 같이 heap Memory 부족에러가 발생한다면 메로리를 늘려서 해결 할 수 있다.

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

at java.awt.image.DataBufferByte.<init>(DataBufferByte.java:59)

at java.awt.image.ComponentSampleModel.createDataBuffer(ComponentSampleModel.java:397)

at java.awt.image.Raster.createWritableRaster(Raster.java:935)

at javax.imageio.ImageTypeSpecifier.createBufferedImage(ImageTypeSpecifier.java:1056)

at javax.imageio.ImageReader.getDestination(ImageReader.java:2879)

at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1046)

at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:1014)

at javax.imageio.ImageReader.read(ImageReader.java:923)

at net.coobird.thumbnailator.tasks.io.FileImageSource.read(Unknown Source)

at net.coobird.thumbnailator.tasks.SourceSinkThumbnailTask.read(Unknown Source)

at net.coobird.thumbnailator.Thumbnailator.createThumbnail(Unknown Source)

at net.coobird.thumbnailator.Thumbnails$Builder.toFile(Unknown Source)

at convertCrop.Proc(convertCrop.java:40)

at convertCrop.main(convertCrop.java:19)



Eclipse에서 설정법

   (1) Run > Run Configurations.. OR Debug Configurations...을 선택합니다.



  (2) Arguments 탭에서 VM arguments에 아래의 parameter를 추가 합니다.

     -XX:MaxPermSize=96m -Xms128m -Xmx512m




다시 실행하면 잘 되는것을 확인 할 수 있습니다.


(2) Command 창에서 실행 

    java -XX:MaxPermSize=96m -Xms128m -Xmx512m -cp .:thumbnailor.jar myThumnailMake 



'2.Dev Tools > java' 카테고리의 다른 글

java command 창에서 classpath추가 실행하기 ..  (0) 2013.09.30

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

test.class  파일을 command창에서 classpath 추가하여 실행하고 싶을때

java -cp .:sample.jar test

java -cp .:* test

java -cp .:lib/sample.jar:my.jar test

중요사항 "."은 꼭있어야 함. 구분자는 윈도우의 경우 ";"이고 unix 계열은 ":" 임 

 

'2.Dev Tools > java' 카테고리의 다른 글

Thumbnailator Library를 활용하여 thumbnail image 만들기  (0) 2013.10.01

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 IOS Simulator에서 카메라가 지원되지 않는다. 그래서 사진 점부 테스트를 하려면 사진을 사진을 IOS Simulator에 넣어야 하는데 방법을 몰라 삽질을 했는데 알고보니 간단합니다.

1. IOS Simulator에서 Safari or App을 실행합니다.




2. Finder에서 이미지를 선택 후 클릭하여 Safari 브라우져로 드래그앤 드랍으로 추가 합니다.


3. Save To Camera Roll 을 클릭하여 저장합니다

 4. App을 클릭하여 테스트 합니다.

5. 이미지 첨부를 클릭함.




336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

PhoneGap(cordova) API를 이용하여 하드웨어에 접근하는 방법에 대하여 설명하겠습니다.

우선 하드웨어에 접근하려면 plugin을 설치 해야 합니다.

설치 방법은 2가지 방법이 있는데 

첫쨰 cordova를 이용하여 설치하는 방법

둘쨰 node.js설치 후 plugman을 이용하여 설치 하는 방법이있습니다.


여기서는 cordova을 이용하여 plugin을 설치 하겠습니다.

1. 만들 프로젝트 폴더로 이동합니다.

  cordova create MyFunkyApp

cd MyFunkyApp

cordova platform add ios

cordova emulate ios

이렇게 App을 만들었다면 MyFunkyApp 폴더로 이동합니다

$ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-camera.git 을 실행하여 plugin을 설치 합니다.

[Error: Error fetching plugin: Error: "git" command line tool is not installed: make sure it is accessible on your PATH.]

이렇게 메세지가 나온다면 git가 설치가 되지 않아서 보여지는 에러니 

https://help.github.com/articles/set-up-git에서 다운받아 설치 합니다.



이제 

cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-camera.git

다시 실행합니다.

정상적으로 실행 되었다면 ios>config.xml파일을 열어

    <feature name="Camera">

        <param name="ios-package" value="CDVCamera" />

    </feature>

카메라 관련 설정이 추가되어있는지 확인합니다.

마찬가지로 안드로이드도 프로젝트>/res/xml/config.xml에 

    <feature name="Camera">

        <param name="android-package" value="org.apache.cordova.camera.CameraLauncher" />

    </feature>

가 추가 되어있는것을 확인 할 수 있습니다.

API plugin URL

cordova-plugin-battery-status   https://git-wip-us.apache.org/repos/asf/cordova-plugin-battery-status.git

cordova-plugin-camera   https://git-wip-us.apache.org/repos/asf/cordova-plugin-camera.git

cordova-plugin-console   https://git-wip-us.apache.org/repos/asf/cordova-plugin-console.git

cordova-plugin-contacts   https://git-wip-us.apache.org/repos/asf/cordova-plugin-contacts.git

cordova-plugin-device   https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git

cordova-plugin-device-motion (accelerometer)   https://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion.git

cordova-plugin-device-orientation (compass)   https://git-wip-us.apache.org/repos/asf/cordova-plugin-device-orientation.git

cordova-plugin-dialogs   https://git-wip-us.apache.org/repos/asf/cordova-plugin-dialogs.git

cordova-plugin-file   https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git

cordova-plugin-file-transfer   https://git-wip-us.apache.org/repos/asf/cordova-plugin-file-transfer.git

cordova-plugin-geolocation   https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git

cordova-plugin-globalization   https://git-wip-us.apache.org/repos/asf/cordova-plugin-globalization.git

cordova-plugin-inappbrowser   https://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser.git

cordova-plugin-media   https://git-wip-us.apache.org/repos/asf/cordova-plugin-media.git

cordova-plugin-media-capture   https://git-wip-us.apache.org/repos/asf/cordova-plugin-media-capture.git

cordova-plugin-network-information   https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git

cordova-plugin-splashscreen   https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git

cordova-plugin-vibration   https://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration.git


이제 추가 했으니 카메라 API sample을 작성해봅시다.

<!DOCTYPE html>
<html>
  <head>
    <title>Capture Photo</title>

    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8">

    var pictureSource;   // picture source
    var destinationType; // sets the format of returned value

    // Wait for device API libraries to load
    //
    document.addEventListener("deviceready",onDeviceReady,false);

    // device APIs are available
    //
    function onDeviceReady() {
        pictureSource=navigator.camera.PictureSourceType;
        destinationType=navigator.camera.DestinationType;
    }

    // Called when a photo is successfully retrieved
    //
    function onPhotoDataSuccess(imageData) {
      // Uncomment to view the base64-encoded image data
      // console.log(imageData);

      // Get image handle
      //
      var smallImage = document.getElementById('smallImage');

      // Unhide image elements
      //
      smallImage.style.display = 'block';

      // Show the captured photo
      // The inline CSS rules are used to resize the image
      //
      smallImage.src = "https://t1.daumcdn.net/cfile/tistory/233A9D3A56EB11EE2E" + imageData;
    }

    // Called when a photo is successfully retrieved
    //
    function onPhotoURISuccess(imageURI) {
      // Uncomment to view the image file URI
      // console.log(imageURI);

      // Get image handle
      //
      var largeImage = document.getElementById('largeImage');

      // Unhide image elements
      //
      largeImage.style.display = 'block';

      // Show the captured photo
      // The inline CSS rules are used to resize the image
      //
      largeImage.src = imageURI;
    }

    // A button will call this function
    //
    function capturePhoto() {
      // Take picture using device camera and retrieve image as base64-encoded string
      navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
        destinationType: destinationType.DATA_URL });
    }

    // A button will call this function
    //
    function capturePhotoEdit() {
      // Take picture using device camera, allow edit, and retrieve image as base64-encoded string
      navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 20, allowEdit: true,
        destinationType: destinationType.DATA_URL });
    }

    // A button will call this function
    //
    function getPhoto(source) {
      // Retrieve image file location from specified source
      navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50,
        destinationType: destinationType.FILE_URI,
        sourceType: source });
    }

    // Called if something bad happens.
    //
    function onFail(message) {
      alert('Failed because: ' + message);
    }

    </script>
  </head>
  <body>
    <button onclick="capturePhoto();">Capture Photo</button> <br>
    <button onclick="capturePhotoEdit();">Capture Editable Photo</button> <br>
    <button onclick="getPhoto(pictureSource.PHOTOLIBRARY);">From Photo Library</button><br>
    <button onclick="getPhoto(pictureSource.SAVEDPHOTOALBUM);">From Photo Album</button><br>
    <img style="display:none;width:60px;height:60px;" id="smallImage" src="" />
    <img style="display:none;" id="largeImage" src="" />
  </body>
</html>

안드로이드 프로젝트에서 카메라 기능을 on시키고 확인하면 잘 동작 하는것을 확인 할 수 있습니다.

참고  URL

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Eclipse JSDT jQuery(jQuery Code Assist) 설정하기

Menu bar > Help > Eclipse Marketplace.. 를 선택 실행합니다.

검색어를 JSDT로 입력하고 검색 버튼을 클릭하고 JSDT jQuery를 선택 후 install 버튼을 클릭하여 설치 합니다.


설치가 완료되면 Project Explore에서 프로젝트를 선택하고 오른쪽마우스(Mac은 control + 마우스크)하여 Properties를 클릭합니다.

javaScript >  include Path를 선택합니다.

Libraries 탭에서 Add JavaScript Library를 선택하고 아래 그림과 같이 jQuery Library를 선택 후 Next버튼을 클릭합니다.

jQuery Version을 선택하고 Finish 버튼을 클릭합니다.


그럼 새문서를 만들어서 테스트를 해봅시다.


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

첫 하이브리드 앱(Ajax JSONP을 이용한 비동기 서버 호출)


Mac 환경설정 > Mac cordova설치 및 Eclipse 연동에서 작성한 helloworld  Project를 이용하여 로그인 페이지를 작성하겠습니다.

흐름은 아래 그림과 같으며 서버는 로컬에서 Eclipse로 구동하여 테스트 했습니다.

소스코드는 cordova3.0.5을 이용하여 생성했습니다.

Project Folder

Xcode


안드로이드(Eclipse)



1.login.html페이지 작성.

  화면

소스코드

<!doctype html>

<html>

    <head>

        <meta charset="UTF-8">

            <title>Untitled Document</title>

            <link rel="stylesheet" href="./css/jquery.mobile-1.3.2.min.css" />

            <script src="./js/jquery-1.9.1.js"></script>

            <script src="./js/jquery.mobile-1.3.2.js"></script>

            <script src="./js/common.js"></script>

            <script type="text/javascript">

                $(document).on( 'click', '#checkLogin', function(){

                               checkLogin($('#name').val(),$('#password').val());

                               });

                function checkLogin(id,pass) {

                    var params = {ID:id

                        ,PASS:pass

                        ,AUTOLOGIN:'N'

                    };

                    $.ajax({

                           type: 'GET',

                           url: "http://172.16.1.50:8080/myweb/cb.jsp",

                           data : params,

                           contentType: "Content-Type: application/javascript",

                           dataType: "jsonp",

                           jsonp : "callback",

                           jsonpCallback: "jsonpCallback",


                           error: function (xhr, ajaxOptions, thrownError) {

                           alert("Error: " + xhr.status + "\n" +

                                 "Message: " + xhr.statusText + "\n" +

                                 "Response: " + xhr.responseText + "\n" + thrownError);

                           }

                           });

                }

                function jsonpCallback(data){

                   // alert('jsonpCallback1:___'+JSON.stringify(data));

                    if(data.RESULT=='2'){

                        $.mobile.changePage('./main.html');

                    }else{

                        alert('not user... please retry..');

                    }

                }

                </script>

    </head>

    <body>

        <div id="test-page" data-role="page">

            <div data-role="header">

                <h1><a data-ajax="false" href="/">Login</a></h1>

            </div>

            <div data-role="content">

                <div data-role="fieldcontain">

                    <label for="name">Name:</label>

                    <input id="name" type="email" name="name" />

                </div>

                <div data-role="fieldcontain">

                    <label for="password">Password:</label>

                    <input id="password" type="password" name="password" />

                </div>

            </div>

            <button type="button" id="checkLogin" name="checkLogin" >LOGIN</button>

        </div>

    </body>

</html>



2.main.html 페이지 작성.

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

Main page....

</body>

</html>


3.Server Module 작성 

Menu Bar > File > New > Dynamic Web Project 을 선택하여 새로운 web프로젝트를 생성합니다.

그리고 WebContent하위에 cb.jsp파일을 생성하고 아래와 같이코딩을 합니다.

 <%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>

<%

String cb = request.getParameter("callback");

String id = request.getParameter("ID");

String pass = request.getParameter("PASS");

String auto = request.getParameter("AUTOLOGIN");


/*

login check..

   if login OK return '2' 

   else '1'

*/


String result = "2";


%>

<%=cb %>({'RESULT':'<%=result %>'})



마지막으로config.xml의 access 설정을 변경합니다.

 프로젝트의 config.xml을 열어서 <access origin="172.0.0.1*" />이부분을 

<access origin="*" />로 변경하여 모든 접속을 허용하도록 합니다.

위치는 Xcode는 프로젝트/config.xml(프로젝트/www/config.xml이 아님)

 android Eclipse는 프로젝트/res/xml/config.xml 찾아서

을 변경합니다.


이제 Xcode에서 프로젝트 실행을 클릭하고 로그인하여 정상적으로 되는지 확인하자


 



이렇게 메인 페이지까지 나오면 정상적으로 된것이다 .. 

이제 안드로이드도 확인을 해봅시다.

프로젝트 > Debug As > Android Application을 선택 합니다.

테스용디바이스를 선택 합니다.

이미 구동중인 device가 있으면 아래와 같이 화면에 보이고 아니면 아래의 "Launch a new Android Virtual Device"에서 선택하여 실행합니다.





안드로이드도 정상적으로 로그인되는것을 확인 합니다.



  

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Mac NTFS File System read-only모드에서 쓰기 모드로 전환

출처:http://rkjun.wordpress.com/2013/07/14/os-x-에서-ntfs-쓰기-fuse-for-os-x-그리고-ntfs-3g/


1. http://sourceforge.net/projects/osxfuse/files/에 접속하여 최신 버젼을 다운로드 한다.

현재 최종버전은 osxfuse-2.6.1이다.

install OSXFUSE2.6을 클릭하여 설치 합니다.

MacFUSE compatibility Layer 체크 후 설치 합니다.



2.ntfs-3g-2010-2.10.2를 다운받아 설치 합니다.

(NTFS-3G(2010.10.2)들 다운로드 합니다 )


설치시 사용자화를 클릭하여 옵션을 변경합니다.

MacFUSE를 클릭하여 체크 후 설치 합니다.

 NTFS-3G관련 참고는  https://github.com/osxfuse/osxfuse/wiki/NTFS-3G를 참고 합니다.


3.NTFS 연결시 뜨는 메세지 제거없애기 위해 fuse_wait를 설치 합니다.

https://github.com/bfleischer/fuse_wait/downloads



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

cordova설치 및 Eclipse 연동

nodejs가 되어 있지 않다면 http://nodejs.org/download/에 접속하여 다운로드 설치 합니다.


http://phonegap.com/install/ 사이트에 접속면 접속 화면이 설치 화면이 나온다

그런데.. phonegap을 설치하고 

$ phoegap create myApp 

$ cd myApp

$ phonegap run android

이렇게 하면 완성된 화면의 배포를 만드는것같다 .. (?? )

그래서 phonegap을 삭제하고  cordova를 설치 했다.

hponegap  삭제

/usr/local/lib/node_modules>sudo npm uninstall phonegap


$>sudo npm install -g cordova 로 설치를 한다. 

설치 후 sample 프로그램을 만들보자 

cordova create hello com.example.hello Helloworld

실행 후" -bash: /usr/local/bin/cordova: No such file or directory"의 에러 메세지가 

발생한다 .. 이 에러는 "https://issues.apache.org/jira/browse/CB-4686"의 이슈에 등록 되어있다 ..

그래서 현재 버젼을 지우고 이전 버전을 설치 합니다.

/usr/local/lib/node_modules>sudo npm uninstall cordova

/usr/local/lib/node_modules>sudo npm install -g cordova@3.0.6

 설치 후 sample 프로젝트 생성

my_java_source>cordova create hello com.example.hello Helloworld

cd hello

cordova platform add ios

cordova platform add android

혹 "cordova platform add android"를 실행했을때 

"[Error: Please install Android target 17 (the Android 4.2 SDK). Make sure you have the latest Android tools installed as well. Run `android` from your command-line to install/update any missing SDKs or tools.]" 이런메세지가 나오면

$ android 를 실행하여 android 버젼을 추가 합니다


이제 Eclipse를 실행하여 생성한 프로젝트를 안드로이드 폰에서 확인 하도록 하겠습니다.

Eclipse 실행

Menu Bar에서 File > New > Others.. 선택 합니다.

Android > Android Project from Existing Code를 선택 실행합니다.

 

좀전에 생성한 myApps > platform > android 를 선택합니다.


이제 프로젝트를 실행하여 안드로드폰으로 확인 하도록 하겠습니다.

프로젝트 > 오른쪽마우스(control + 마우스클릭)을 해서 Run as > Android Application을 선택 합니다.

Android Device Chooser에서 Mac Book연결된 안드로이드폰을 선택하고 OK를클릭합니다.

핸드폰에 index.html의 내용이 표시되는 것을 확인 합니다.

그림 밑에 "ANDROID PHONEGAP  테스트 입니다"라고 MyApps > Assets > index.html의 내용이 표시됩니다. 

핸드폰으로 바로 연결


Virtual Device로 연결

가상의 디바이스로 연결하려면 Launch new Android Virtual Device에서 선택 후 실행하면

Virtual Device로 선택되어 실행되고 다시 실행할때는 아래와 같이 선택할 수 있도록 보입니다. 





자 이제 본격적으로 하이브리드 앱을 개발해볼까요 ..


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

화면 캡처 : fn + shift + command + 3

부분 화면 캡처 : fn + shift + command + 4

화면 캡처가 완료되면 Finder(바탕화면)에서 확인 할 수있다.


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

MAc에서 Android SDK 설치

1. ADT Plugin

 http://developer.android.com/sdk/installing/installing-adt.html#Download에 접속합니다.

선택된부분을 복사합니다.

 Eclipse를 실행하고 Help > Install New Software.. 를 실행합니다.

Add 버튼을 클릭하고아래와 같이 입력합니다.

Tool을 선택하고 Next버튼을 클릭합니다.


"I accept the terms of the license agreements"를 클릭하고 Finish버튼을 클릭합니다.



YES를선택하여 Eclipse를 리스타트를 합니다.

 Eclipse가 리스타트 후 Android SDK의 위치를 물어본다.

2. Android SDK 설치

위의 설정화면을 열어 둔채로  http://developer.android.com/sdk/index.html에 접속하여 SDK를 다운로드 합니다.


다운로드 한 adt-bundle-mac-x86_64-20130729-1.zip 화일을 압축을 해제하여 개발설정 디렉토리로 이동합니다.

압축해제완 완로되면 얼어놓은 Eclipse를 다신 선택하여 아래와 같이 Eclipse디렉토리를 입력합니다.

설치가 완료되면 Eclipse Menu Bar > WIndow > Android SDK Manager가 설치 되었는지 확인 합니다.

Android SDK Manager가 보이지않는 경우 Window > Customize perspective > Command Groups Availability tab을 자레대로 선택하고 Android SDK and AVD Manager를 체크후 OK버튼을 클릭하여 저장합니다.


3.Android SDK 설정

Android SDK를 실행하고 원하는 버젼을 선택 후 Install ... packages..를 선택 합니다.

전체 선택후설치하여도 되나 시간일 오래 소요되니 상위 버젼만 선택 합니다.

각 버젼 및  SDK 설치하기 전에 라이센스에 대한 동의를 합니다.

아래와 같이1번을 선택 후 2번 accept License를 선택하여 동의를 합니다.

나머지 1,2,3번도 마찬가지로 각각 선택 후 Accept License를 선택하여 라이센스에 동의를 합니다.

그러면 아래와 같이 초록색으로 변합니다.

전체 동의를 했으면 Install을 클릭하여 설치를 합니다.


설치가 완료되념 Close버튼을 클릭하여 SDK Manager을 종료합니다.

3.  AVD Manager 시작하기

New를 선택하여 새로운 virtual Device를 추가 합니다.

아래와 같이 설정 후 OK버튼을 클릭하여 저장합니다.

(*** 첨이라 .. 맞는지 모르겠다 ㅡ,.ㅡ;;)

설정이 완료되면 start 버튼을 클릭하여  Virtual Device를 실행합니다.

Wipe user data를 체크 후 launch를 선택하여 실행합니다.