반응형

어찌보면 가장 중요한 Deserialization한 JsonString 형태를 파싱하는 방법이다.

Spring Boot에서 Deserialization 파싱을 위해 Jackson과 gson을 사용하면서 동시에 클래스를 생성하여 사용해야한다.

 

 

Spring boot Json 1편, 2편, 3편, 마지막

1. 2018/11/06 - [Spring Boot] - Spring Boot Json, JsonObject로 만들기 - JSON 1편

2. 2018/11/07 - [Develop/Spring Boot] - Spring Boot Json, Gson을 이용한 JsonObject to String, String to JsonObject- JSON 2편

3. 2018/11/09 - [Develop/Spring Boot] - Spring Boot Json, Jackson을 이용한 JsonParsing - Json 3편

4. 2018/11/13 - [Develop/Spring Boot] - Spring Boot Json, hashmap to json , JsonObject 만들기- JSON 마지막

 

 

번외 Database의 값을 Json으로 select하는 방법.

1. 2018/10/24 - [Spring Boot] - Spring boot jpa map, hashmap, JSON형식

2. 2018/10/28 - [Spring Boot] - Spring boot JPA EntityManager를 이용한 Map형식으로 mapping하기

 

Spring boot에서 MySQL JSON 타입 SELECT하는 방법

1. 2018/11/30 - [Develop/Spring Boot] - Spring boot MySQL JSON - MySQL JSON DATA TYPE 값 가져오기

 

 

1. Class를 생성하여 Gson을 이용한 Deserializaion한 JsonString to Object(JsonObject)

 

앞의 1편, 2편, 3편에 사용했던 TestDTO를 수정하자.

 

수정하기 전 먼저 Test_2DTO를 새로 생성한다

1
<code class="hljs typescript"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Test_2DTO</span> </span>{  <span class="hljs-keyword">private</span> <span class="hljs-built_in">String</span> name;   <span class="hljs-keyword">private</span> int age;      <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-title">Test_2DTO</span>(<span class="hljs-params"></span>)</span> {      <span class="hljs-built_in">super</span>();     }   <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-title">Test_2DTO</span>(<span class="hljs-params"><span class="hljs-built_in">String</span> name, int age</span>)</span> {       <span class="hljs-built_in">super</span>();         <span class="hljs-built_in">this</span>.name = name;        <span class="hljs-built_in">this</span>.age = age;  }   <span class="hljs-keyword">public</span> <span class="hljs-built_in">String</span> <span class="hljs-function"><span class="hljs-title">getName</span>(<span class="hljs-params"></span>)</span> {      <span class="hljs-keyword">return</span> name;  }   <span class="hljs-keyword">public</span> <span class="hljs-built_in">void</span> <span class="hljs-function"><span class="hljs-title">setName</span>(<span class="hljs-params"><span class="hljs-built_in">String</span> name</span>)</span> {      <span class="hljs-built_in">this</span>.name = name;    }   <span class="hljs-keyword">public</span> int <span class="hljs-function"><span class="hljs-title">getAge</span>(<span class="hljs-params"></span>)</span> {         <span class="hljs-keyword">return</span> age;   }   <span class="hljs-keyword">public</span> <span class="hljs-built_in">void</span> <span class="hljs-function"><span class="hljs-title">setAge</span>(<span class="hljs-params">int age</span>)</span> {      <span class="hljs-built_in">this</span>.age = age;  } } </code>
1
<code class="hljs typescript"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TestDTO</span> </span>{    <span class="hljs-keyword">private</span> Integer id;   <span class="hljs-keyword">private</span> <span class="hljs-built_in">String</span> password;   <span class="hljs-keyword">private</span> List details;             <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-title">TestDTO</span>(<span class="hljs-params"></span>)</span> {        <span class="hljs-built_in">super</span>();     }       <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-title">TestDTO</span>(<span class="hljs-params">Integer id, <span class="hljs-built_in">String</span> password, List details</span>)</span> {        <span class="hljs-built_in">super</span>();         <span class="hljs-built_in">this</span>.id = id;        <span class="hljs-built_in">this</span>.password = password;        <span class="hljs-built_in">this</span>.details = details;  }       <span class="hljs-keyword">public</span> Integer <span class="hljs-function"><span class="hljs-title">getId</span>(<span class="hljs-params"></span>)</span> {      <span class="hljs-keyword">return</span> id;    }       <span class="hljs-keyword">public</span> <span class="hljs-built_in">void</span> <span class="hljs-function"><span class="hljs-title">setId</span>(<span class="hljs-params">Integer id</span>)</span> {        <span class="hljs-built_in">this</span>.id = id;    }       <span class="hljs-keyword">public</span> <span class="hljs-built_in">String</span> <span class="hljs-function"><span class="hljs-title">getPassword</span>(<span class="hljs-params"></span>)</span> {      <span class="hljs-keyword">return</span> password;  }       <span class="hljs-keyword">public</span> <span class="hljs-built_in">void</span> <span class="hljs-function"><span class="hljs-title">setPassword</span>(<span class="hljs-params"><span class="hljs-built_in">String</span> password</span>)</span> {      <span class="hljs-built_in">this</span>.password = password;    }       <span class="hljs-keyword">public</span> List <span class="hljs-function"><span class="hljs-title">getDetails</span>(<span class="hljs-params"></span>)</span> {        <span class="hljs-keyword">return</span> details;   }       <span class="hljs-keyword">public</span> <span class="hljs-built_in">void</span> <span class="hljs-function"><span class="hljs-title">setDetails</span>(<span class="hljs-params">List details</span>)</span> {         <span class="hljs-built_in">this</span>.details = details;  }       <span class="hljs-meta">@Override</span>    <span class="hljs-keyword">public</span> <span class="hljs-built_in">String</span> <span class="hljs-function"><span class="hljs-title">toString</span>(<span class="hljs-params"></span>)</span> {         <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> Gson().toJson(<span class="hljs-built_in">this</span>);  } } </code>

 

생성했다면, 

 

1
<code class="hljs swift"><span class="hljs-keyword">public</span> void test() {                 <span class="hljs-type">String</span> jsonString <span class="hljs-operator">=</span> <span class="hljs-string">"{<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                 <span class="hljs-string">"    <span class="hljs-subst">\"</span>id<span class="hljs-subst">\"</span>: 1,<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                  <span class="hljs-string">"    <span class="hljs-subst">\"</span>password<span class="hljs-subst">\"</span>: <span class="hljs-subst">\"</span>1234<span class="hljs-subst">\"</span>,<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                 <span class="hljs-string">"    <span class="hljs-subst">\"</span>details<span class="hljs-subst">\"</span>: [<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                  <span class="hljs-string">"        {<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>               <span class="hljs-string">"            <span class="hljs-subst">\"</span>name<span class="hljs-subst">\"</span>: <span class="hljs-subst">\"</span>test<span class="hljs-subst">\"</span>,<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                 <span class="hljs-string">"            <span class="hljs-subst">\"</span>age<span class="hljs-subst">\"</span>: 20<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                 <span class="hljs-string">"        },{<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                 <span class="hljs-string">"            <span class="hljs-subst">\"</span>name<span class="hljs-subst">\"</span>: <span class="hljs-subst">\"</span>test2<span class="hljs-subst">\"</span>,<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                <span class="hljs-string">"            <span class="hljs-subst">\"</span>age<span class="hljs-subst">\"</span>: 21<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                 <span class="hljs-string">"        }<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>               <span class="hljs-string">"    ] <span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                  <span class="hljs-string">"}"</span>;       <span class="hljs-type">Gson</span> gson <span class="hljs-operator">=</span> new <span class="hljs-type">Gson</span>();        <span class="hljs-type">TestDTO</span> t <span class="hljs-operator">=</span> gson.fromJson(jsonString, <span class="hljs-type">TestDTO</span>.class);      <span class="hljs-type">System</span>.out.println(<span class="hljs-string">"id : "</span> <span class="hljs-operator">+</span>t.getId());      <span class="hljs-type">System</span>.out.println(<span class="hljs-string">"password : "</span><span class="hljs-operator">+</span>t.getPassword());       <span class="hljs-type">System</span>.out.println(<span class="hljs-string">"name1 : "</span><span class="hljs-operator">+</span>t.getDetails().get(<span class="hljs-number">0</span>).getName());         <span class="hljs-type">System</span>.out.println(<span class="hljs-string">"age1: "</span><span class="hljs-operator">+</span>t.getDetails().get(<span class="hljs-number">0</span>).getAge());        <span class="hljs-type">System</span>.out.println(<span class="hljs-string">"name2 : "</span><span class="hljs-operator">+</span>t.getDetails().get(<span class="hljs-number">1</span>).getName());         <span class="hljs-type">System</span>.out.println(<span class="hljs-string">"age2: "</span><span class="hljs-operator">+</span>t.getDetails().get(<span class="hljs-number">1</span>).getAge());            } </code>

위에 사용한 Json내용이다., 

 

1
<code class="hljs">{     <span class="hljs-attr">"id"</span>: <span class="hljs-number">1</span>,     <span class="hljs-attr">"password"</span>: <span class="hljs-string">"1234"</span>,     <span class="hljs-attr">"details"</span>: [         {             <span class="hljs-attr">"name"</span>: <span class="hljs-string">"test"</span>,             <span class="hljs-attr">"age"</span>: <span class="hljs-number">20</span>         },{             <span class="hljs-attr">"name"</span>: <span class="hljs-string">"test2"</span>,             <span class="hljs-attr">"age"</span>: <span class="hljs-number">21</span>         }     ]  }</code>

 

위 test() 메소드를 실행하면 아래와 같이 Deserializaion한 JsonString이 파싱되어 JsonObject에 알맞게 들어간다.

 

 

2. Jackson의 ObjectMapper를 이용한 Json String to JsonObject 이다.

 

Json내용은 위와 동일한 상태에서 진행하였다.

 

1
<code class="hljs swift"><span class="hljs-keyword">public</span> void test() {         <span class="hljs-type">ObjectMapper</span> objectMapper <span class="hljs-operator">=</span> new <span class="hljs-type">ObjectMapper</span>();                <span class="hljs-type">String</span> jsonString <span class="hljs-operator">=</span> <span class="hljs-string">"{<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                 <span class="hljs-string">"    <span class="hljs-subst">\"</span>id<span class="hljs-subst">\"</span>: 1,<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                  <span class="hljs-string">"    <span class="hljs-subst">\"</span>password<span class="hljs-subst">\"</span>: <span class="hljs-subst">\"</span>1234<span class="hljs-subst">\"</span>,<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                 <span class="hljs-string">"    <span class="hljs-subst">\"</span>details<span class="hljs-subst">\"</span>: [<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                  <span class="hljs-string">"        {<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>               <span class="hljs-string">"            <span class="hljs-subst">\"</span>name<span class="hljs-subst">\"</span>: <span class="hljs-subst">\"</span>test<span class="hljs-subst">\"</span>,<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                 <span class="hljs-string">"            <span class="hljs-subst">\"</span>age<span class="hljs-subst">\"</span>: 20<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                 <span class="hljs-string">"        },{<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                 <span class="hljs-string">"            <span class="hljs-subst">\"</span>name<span class="hljs-subst">\"</span>: <span class="hljs-subst">\"</span>test2<span class="hljs-subst">\"</span>,<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                <span class="hljs-string">"            <span class="hljs-subst">\"</span>age<span class="hljs-subst">\"</span>: 21<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                 <span class="hljs-string">"        }<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>               <span class="hljs-string">"    ] <span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span>                  <span class="hljs-string">"}"</span>;         <span class="hljs-keyword">try</span> {               <span class="hljs-type">TestDTO</span> t <span class="hljs-operator">=</span> objectMapper.readValue(jsonString, <span class="hljs-type">TestDTO</span>.class);    <span class="hljs-comment">// String to Object로 변환               System.out.println("ObjectMapper테스트");              System.out.println("id : " +t.getId());                 System.out.println("password : "+t.getPassword());              System.out.println("name1 : "+t.getDetails().get(0).getName());                 System.out.println("age1: "+t.getDetails().get(0).getAge());                System.out.println("name2 : "+t.getDetails().get(1).getName());                 System.out.println("age2: "+t.getDetails().get(1).getAge());                        } catch (IOException e) {               e.printStackTrace();            }        } </span></code>

gson과 마찬가지로 잘 작동된다.

3. Jackson JsonNode 를 이용한 Deserializaion String to JsonObject

 

어떻게 보면 가장 핵심인 부분일 수도 있다. 클래스 생성없이 할 수 있다는 큰 장점이있다.

 

Deserializaion Json Data는 위와 동일한 데이터를 사용한다.

 

 

1
<code class="hljs swift"><span class="hljs-keyword">public</span> void test() {         <span class="hljs-type">ObjectMapper</span> objectMapper <span class="hljs-operator">=</span> new <span class="hljs-type">ObjectMapper</span>();        <span class="hljs-type">String</span> jsonString <span class="hljs-operator">=</span> <span class="hljs-string">"{<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span> <span class="hljs-string">"    <span class="hljs-subst">\"</span>id<span class="hljs-subst">\"</span>: 1,<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span> <span class="hljs-string">"    <span class="hljs-subst">\"</span>password<span class="hljs-subst">\"</span>: <span class="hljs-subst">\"</span>1234<span class="hljs-subst">\"</span>,<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span>               <span class="hljs-operator">+</span> <span class="hljs-string">"    <span class="hljs-subst">\"</span>details<span class="hljs-subst">\"</span>: [<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span> <span class="hljs-string">"        {<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span> <span class="hljs-string">"            <span class="hljs-subst">\"</span>name<span class="hljs-subst">\"</span>: <span class="hljs-subst">\"</span>test<span class="hljs-subst">\"</span>,<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span>                <span class="hljs-operator">+</span> <span class="hljs-string">"            <span class="hljs-subst">\"</span>age<span class="hljs-subst">\"</span>: 20<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span> <span class="hljs-string">"        },{<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span> <span class="hljs-string">"            <span class="hljs-subst">\"</span>name<span class="hljs-subst">\"</span>: <span class="hljs-subst">\"</span>test2<span class="hljs-subst">\"</span>,<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span>                <span class="hljs-operator">+</span> <span class="hljs-string">"            <span class="hljs-subst">\"</span>age<span class="hljs-subst">\"</span>: 21<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span> <span class="hljs-string">"        }<span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span> <span class="hljs-string">"    ] <span class="hljs-subst">\r</span><span class="hljs-subst">\n</span>"</span> <span class="hljs-operator">+</span> <span class="hljs-string">"}"</span>;         <span class="hljs-keyword">try</span> {             <span class="hljs-type">System</span>.out.println(<span class="hljs-string">"Jackson JsonNode 테스트"</span>);             <span class="hljs-type">JsonNode</span> t <span class="hljs-operator">=</span> objectMapper.readValue(jsonString, <span class="hljs-type">JsonNode</span>.class); <span class="hljs-comment">// String to Object로 변환                        JsonNode id = t.get("id");          System.out.println("id : " + id.asInt());                       JsonNode password = t.get("password");          System.out.println("password : " + password.asText());                      JsonNode details = t.get("details");            JsonNode details_1 = details.get(0);                    System.out.println("name1 : " + details_1.get("name").asText());            System.out.println("age1: " + details_1.get("age").asInt());                        JsonNode details_2 = details.get(1);                System.out.println("name2 : " + details_2.get("name").asText());            System.out.println("age2: " + details_2.get("name").asText());          } catch (IOException e) {           e.printStackTrace();        } } </span></code>

class 생성없이 파싱이 잘 되었다

 

이 처럼 웬만한 것들은 class를 생성하여 모든 Deserializaion을 파싱할 수 있으며,

Jackson JsonNode 를 이용하여 처리할 수 있다. 

반응형
반응형

 

 

이 글은 Windows(윈도우) 에서 설치하는 방법이다.

 

1. Visual Studio Code를 통한 React-Native 프로젝트 개발

2. 안드로이드 스튜디오를 통한 React-Native 실행하는 방법

위 2가지를 다룰 것이다.

 

Expo를 이용한 React Native 설치는 아래 링크에 있다.

2018/11/11 - [Develop/React Native] - React Native expo를 이용한 설치 Windows, Android Studio (v31.0.0)

 

1. 먼저 React Native를 설치한다.

 

설치하기전에 Node.js를 설치해야한다. 링크 - https://nodejs.org/

Node.js를 설치했다면 React Native를 설치한다

npm install -g react-native-cli

 

2. 설치후 React Native 프로젝트를 생성한다.

 

아래의 명령어를 통해 test1 프로젝트를 생성한다.

1
<code class="hljs">react-native <span class="hljs-keyword">init</span> test1 </code>

 

 

3. React Native Visual Studio Code

 

React Native 의 에디터로 atom, vscode, sublimetext 등이 있지만 vscode가 가장 빠르다고 한다. 그래서 vscode를 사용한다.

https://code.visualstudio.com/ 옆의 홈페이지를 통해 간단하게 설치를 할 수 있다. 

다음 Visaul Stuido Code를 연다 연다음 아까 만든 test1 프로젝트를 추가한다.

 

 

추가 후에 App.js 파일의 빨간 줄 표시를 한번 수정해보자. 

 

 

필자는 아래와 같이 수정해 보았다. 굳이 안해도 됨.

 

4. React Native Android Studio

 

https://developer.android.com/studio/install?hl=ko 사이트에 접속하여 안드로이드 스튜디오를 우선 설치한다.

 

Tools - SDK Manager에 들어간다.

 

 

React Native 는 4.1 부터 지원하므로 필자는 9.0과 8.1를 설치했다.

그리고 SDK Location을 복사한다.

 

 

복사한 SDK LOCATION을 환경변수에 추가한다 ANDROID_HOME 그리고 JAV_HOME이라는 환경변수를 추가한다

JAVA_HOME은 c드라이브의 programfile에 java폴더의 jdk 폴더 경로를 추가한다. (C:\Program Files\Java\jdk1.8.0_191)

 

 

그리고 SDK Tools에 들어가 체크되어있는 것들을 설치한다.

 

 

그리고 Tools - AVD Manager에 들어가서

 

 

Create Virtual Device를 통해 ADV를 설치한다 필자는 API Ver 28을 설치했다. 그리고 Action의 시작버튼을 클릭하면 가상에뮬레이터가 실행된다.

 

 

마지막으로 다시 cmd창에서 

아래의 명령어를 입력한다.

 

cd test1 react-native run-android

 

아래와 같이 실행 된다.

 

 

 

필자는 아까 Visual Studio Code에서 수정한 것을 실수로 저장을 하지 않아서 내용이 바뀌지 않았지만,

이렇게 실행되는 모습을 볼 수 있다.

 

반응형
반응형

 

이 글은 Windows(윈도우) 에서 설치하는 방법이다.

1. 직접 스마트폰으로 React-Native를 실행하는 방법

2. Visual Studio Code를 통한 React-Native 프로젝트 개발

3. 안드로이드 스튜디오를 통한 React-Native 실행하는 방법

위 3가지를 다룰 것이다.

 

기본 React Native 설치하는 방법

2018/11/11 - [Develop/React Native] - React Native 설치 Windows, Android Studio 사용하기.

 

 

Expo 가 v31.0.0 이 되면서 홈페이지에 XDE설치하는 것이 사라지고 Expo SDK를 설치하는 것이 생겼다.

예전의 강의들을 찾아보면 죄다 XDE를 설치하라고 되어있는데, XDE를 설치하고 싶다면 v29이하에서 설치할 수 있다.

 

https://docs.expo.io/versions/latest/

위 사이트에 접속해서 v29.0.0 의 Installation 메뉴엔 XDE를 설치 하는 것이 있다.

 

하지만 이 글은 최신버전인 v31.0.0 을 설치하는 방법이다.

 

1. https://docs.expo.io/versions/latest/ - 사이트에 접속하여 Installation 메뉴에 들어간다.

 

그리고 Node.js가 없다면 Node.js를 먼저 설치한다.

 

 

 

2. Node.js 가 정상 설치되었다면 

 

package.json 파일을 만들어야한다. (안만들고 바로 expo설치하니까 없다고 에러가 뜰 수도 있음)

 

1
<code class="hljs"><span class="hljs-built_in">npm</span> --version <span class="hljs-built_in">npm</span> install express <span class="hljs-built_in">npm</span> init -y</code>

이렇게 하면 package.json 파일이 생성되며 생성된다면 아래와 같이 입력한다

1
<code class="hljs perl">{   <span class="hljs-string">"name"</span>: <span class="hljs-string">" "</span>,   <span class="hljs-string">"version"</span>: <span class="hljs-string">"6.4.1"</span>, <span class="hljs-regexp">//</span>처음에 <span class="hljs-number">1.0</span>.<span class="hljs-number">0</span> 이라고 되어있는 걸 최신 버전에 맞게 수정   <span class="hljs-string">"description"</span>: <span class="hljs-string">""</span>,   <span class="hljs-string">"main"</span>: <span class="hljs-string">"index.js"</span>,   <span class="hljs-string">"scripts"</span>: {     <span class="hljs-string">"test"</span>: <span class="hljs-string">"echo \"Error: no test specified\" && exit 1"</span>   },   <span class="hljs-string">"keywords"</span>: [],   <span class="hljs-string">"author"</span>: <span class="hljs-string">""</span>,   <span class="hljs-string">"license"</span>: <span class="hljs-string">"ISC"</span> }  </code>

 

다음 Windows의 cmd창을 열어 아래의 명령어를 입력한다.

1
<code class="hljs coffeescript"><span class="hljs-built_in">npm</span> install -g expo-cli</code>

이러면 expo설치는 끝이난다. 

3. expo 설치를 한후 react-native 프로젝트를 만든다.

 

1
<code class="hljs csharp">expo <span class="hljs-keyword">init</span> test-app </code>

 

하면 프로젝트를 고를 수 있다 빈프로젝트로 시작하기와 아닌 걸로 시작하기. 위는 키보드의 화살표 커맨드로 선택할 수 있으며

엔터를 하면 프로젝트가 생성된다. 

프로젝트 생성 후

 

cd test-app npm start 또는 expo start

실행을 하게되면 

 

 

QR코드가 생성된다. 

이 QR코드를 안드로이드 휴대폰에 Expo라는 앱을 깔아서 스캔하면된다.

 

4. Expo 어플리케이션 설치

※ 주의할점 스마트폰과 컴퓨터의 네트워크 환경이 같은 환경에 있어야 어플리케이션이 실행됩니다.!! 같은 환경이 아니라면

7번으로 

Play스토어에 들어가서 Expo라는 앱을 설치한다. 그 후에 어플리케이션을 실행한다.

 

 

그리고 위 사진에 Scan QR Code를 클릭하고 위의 QR코드를 스캔하면

 

 

위와 같이 빌드를 한다. 맨 처음 빌드할 땐 조금 느리기때문에 기다린다.

 

빌드가 성공하면 위와 같이 되며 Expo를 이용한 React-native 설치 및 실행이 기본적으로 끝이난다.

(아래 Visual Studio Code로 프로젝트를 한번 간단하게 만져 볼 거기 때문에 종료시키지말고 기다린다.)

 

5. React Native Visual Studio Code

 

React Native 의 에디터로 atom, vscode, sublimetext 등이 있지만 vscode가 가장 빠르다고 한다. 그래서 vscode를 사용한다.

https://code.visualstudio.com/ 옆의 홈페이지를 통해 간단하게 설치를 할 수 있다. 

다음 Visaul Stuido Code를 연다 연다음 아까 만든 test-app 프로젝트를 추가한다.

 

 

6. App.js 에 들어가서 글 수정하고 Ctrl+s 를 눌러 저장을 해본다.

아래의 Open up App.js ~~~~부분을 

 

 

아래 테스트!!! 처럼 하고 바로 Ctrl+s를 눌러 저장을 해보자 

 

 

 

저장을 했으면 다시 스마트폰의 어플리케이션 화면을 보면 테스트!!! 라고 바로 바껴져있다.

실시간으로 바로바로 바뀌는 것을 Expo라는 것을 통해 확인 할 수 있다.

 

7. Expo Android Studio 

 

https://developer.android.com/studio/install?hl=ko 사이트에 접속하여 안드로이드 스튜디오를 우선 설치한다.

 

Tools - SDK Manager에 들어간다.

설치후 React Native 는 4.1 부터 지원하므로 필자는 9.0과 8.1를 설치했다.

그리고 SDK Location을 복사한다.

 

 

복사한 SDK LOCATION을 환경변수에 추가한다 ANDROID_HOME 그리고 JAV_HOME이라는 환경변수를 추가한다

JAVA_HOME은 c드라이브의 programfile에 java폴더의 jdk 폴더 경로를 추가한다. (C:\Program Files\Java\jdk1.8.0_191)

 

 

 

그리고 SDK Tools에 들어가 체크되어있는 것들을 설치한다.

 

 

 

그리고 Tools - AVD Manager에 들어가서

 

Create Virtual Device를 통해 ADV를 설치한다 필자는 API Ver 28을 설치했다. 그리고 Action의 시작버튼을 클릭하면 가상에뮬레이터가 실행된다.

 

 

마지막으로 다시 cmd창에서 

아래의 명령어를 입력한다.

1
<code class="hljs sql">npm run android 또는 expo <span class="hljs-keyword">start</span> <span class="hljs-comment">--android </span></code>

 

 

설치후 성공적으로 테스트!!! 화면이 에뮬레이터에 뜨는 것을 확인할 수 있다.

 

반응형

+ Recent posts