<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>향채소의 데이터 저장소</title>
    <link>https://unityvr.tistory.com/</link>
    <description>하루가 지나면 알고 있던 내용도 잊는 개발자가 기록하고 복습하기 위한 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Tue, 19 May 2026 16:35:31 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>향채소</managingEditor>
    <item>
      <title>[Android] Emulator localhost 설정</title>
      <link>https://unityvr.tistory.com/46</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;로컬 환경에서 테스트 시 localhost 혹은 127.0.0.1로 테스트 하는 경우가 많은데,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;windows 에서는 &quot;Windows가 설치된 드라이브(보통 C:)\windows\System32\drivers\etc\hosts&quot;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;mac 에서는 &quot;/etc/hosts&quot; 를 보면 localhost나 127.0.0.1이나 같은 의미로 쓰인다는 것을 많이 볼 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Android Emulator에서 로컬 서버 등을 테스트 할 때 localhost로 설정 했을 경우 서버를 못 찾는 경우가 있는데,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;에뮬레이터(에뮬레이션된 기기)는 네트워크에서 개발머신이나 다른 에뮬레이터 인스턴스를 감지하지 못해 발생하는 경우로,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이더넷을 통해 라우터나 방화벽에 연결되었다는 것만 감지한다고 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Android Emulator에서 식별하는 네트워크 주소로 설정을 해주면 되는데 아래 링크에 잘 설명되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.android.com/studio/run/emulator-networking?hl=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Android Emulator 네트워킹 설정 - 사용자 가이드&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;핵심&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-10 오전 10.58.51.png&quot; data-origin-width=&quot;601&quot; data-origin-height=&quot;167&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddxWG7/btrYMW5Efe1/TVLSK2pxaXEobpcuVwIEFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddxWG7/btrYMW5Efe1/TVLSK2pxaXEobpcuVwIEFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddxWG7/btrYMW5Efe1/TVLSK2pxaXEobpcuVwIEFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddxWG7%2FbtrYMW5Efe1%2FTVLSK2pxaXEobpcuVwIEFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;601&quot; height=&quot;167&quot; data-filename=&quot;스크린샷 2023-02-10 오전 10.58.51.png&quot; data-origin-width=&quot;601&quot; data-origin-height=&quot;167&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;localhost 혹은 127.0.0.1 대신&amp;nbsp;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;10.0.2.2&lt;/span&gt;로 접근을 하면 Android Emulator가 식별할 수 있게 된다.&lt;/p&gt;</description>
      <category>Android</category>
      <category>10.0.2.2</category>
      <category>127.0.0.1</category>
      <category>Emulator</category>
      <category>localhost</category>
      <author>향채소</author>
      <guid isPermaLink="true">https://unityvr.tistory.com/46</guid>
      <comments>https://unityvr.tistory.com/46#entry46comment</comments>
      <pubDate>Fri, 10 Feb 2023 11:46:05 +0900</pubDate>
    </item>
    <item>
      <title>[Linux] 현재 열려있는 PORT 확인</title>
      <link>https://unityvr.tistory.com/45</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1) 열려있는 모든 포트 확인&lt;/p&gt;
&lt;pre id=&quot;code_1675842051040&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;netstat -an | more&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LISTENING : 접속 요청을 기다리고 있는 상태&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ESTABLISHED : 서버와 클라이언트 사이에 연결된 상태&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLOSED : 완전히 연결이 종료 된 상태&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TIME-WAIT : 연결이 종료 상태지만 소켓을 잠시 열어놓은 상태&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) LISTEN 상태 포트 확인&lt;/p&gt;
&lt;pre id=&quot;code_1675841936478&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;netstat -an | grep LISTEN&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Linux</category>
      <author>향채소</author>
      <guid isPermaLink="true">https://unityvr.tistory.com/45</guid>
      <comments>https://unityvr.tistory.com/45#entry45comment</comments>
      <pubDate>Wed, 8 Feb 2023 17:58:19 +0900</pubDate>
    </item>
    <item>
      <title>[AWS] IP 주소 확인 명령어</title>
      <link>https://unityvr.tistory.com/44</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;사설(private) IP&lt;/h3&gt;
&lt;pre id=&quot;code_1675839970792&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ifconfig&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;공용(public) IP&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;case 1)&lt;/p&gt;
&lt;pre id=&quot;code_1675839907507&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl http://169.254.169.254/latest/meta-data/public-ipv4&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;case 2)&lt;/p&gt;
&lt;pre id=&quot;code_1675839919337&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl ifconfig.me&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Cloud Platform/AWS</category>
      <category>AWS IP 주소 확인</category>
      <author>향채소</author>
      <guid isPermaLink="true">https://unityvr.tistory.com/44</guid>
      <comments>https://unityvr.tistory.com/44#entry44comment</comments>
      <pubDate>Wed, 8 Feb 2023 16:07:06 +0900</pubDate>
    </item>
    <item>
      <title>[Linux] IP 주소 확인 명령어</title>
      <link>https://unityvr.tistory.com/43</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;사설(Private) IP&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1675839364431&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ifconfig&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-08 오후 3.55.55.png&quot; data-origin-width=&quot;693&quot; data-origin-height=&quot;137&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blDoxs/btrYzZVSHeY/nmigDDJvqkmLIJQ6L6k9U0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blDoxs/btrYzZVSHeY/nmigDDJvqkmLIJQ6L6k9U0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blDoxs/btrYzZVSHeY/nmigDDJvqkmLIJQ6L6k9U0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblDoxs%2FbtrYzZVSHeY%2FnmigDDJvqkmLIJQ6L6k9U0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;693&quot; height=&quot;137&quot; data-filename=&quot;스크린샷 2023-02-08 오후 3.55.55.png&quot; data-origin-width=&quot;693&quot; data-origin-height=&quot;137&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공용(Public) IP&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1675839741972&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl ifconfig.me&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-08 오후 4.02.09.png&quot; data-origin-width=&quot;208&quot; data-origin-height=&quot;37&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWh7zT/btrYzoPdD2t/W5MwSy8NxG2Xt0WRMFpET0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWh7zT/btrYzoPdD2t/W5MwSy8NxG2Xt0WRMFpET0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWh7zT/btrYzoPdD2t/W5MwSy8NxG2Xt0WRMFpET0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWh7zT%2FbtrYzoPdD2t%2FW5MwSy8NxG2Xt0WRMFpET0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;208&quot; height=&quot;37&quot; data-filename=&quot;스크린샷 2023-02-08 오후 4.02.09.png&quot; data-origin-width=&quot;208&quot; data-origin-height=&quot;37&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Linux</category>
      <category>ip 주소확인</category>
      <author>향채소</author>
      <guid isPermaLink="true">https://unityvr.tistory.com/43</guid>
      <comments>https://unityvr.tistory.com/43#entry43comment</comments>
      <pubDate>Wed, 8 Feb 2023 16:04:51 +0900</pubDate>
    </item>
    <item>
      <title>[NVM] 여러 버전의 nodeJS 관리</title>
      <link>https://unityvr.tistory.com/42</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Angular를 이용한 프로젝트들이 nodeJS 버전이 달라 로컬에서 테스트 시 버전을 관리해야 하는 상황이 발생해,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;nvm(Node version Manager)를 이용해 버전 별 nodeJS를 이용한 프로젝트 관리에 사용을 해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;nvm 이란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;nvm은 nodeJS 버전 매니저로 시스템에 여러개의 nodeJS를 설치하고 사용할 버전을 쉽게 전환 하도록 해주는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;shell script&lt;/span&gt; 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;설치&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;brew로 nvm 설치&lt;/p&gt;
&lt;pre id=&quot;code_1675750753038&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;brew install nvm&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;환경설정&lt;/p&gt;
&lt;pre id=&quot;code_1675750837374&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;window는 ~/.bashrc
mac은 ~/.zshrc

export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버전 확인&lt;/p&gt;
&lt;pre id=&quot;code_1675750847566&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;nvm -v&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;명령어&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;목록&lt;/p&gt;
&lt;pre id=&quot;code_1675749676517&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 설치 가능한 nodeJS 버전 목록
nvm ls-remote&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;설치&lt;/p&gt;
&lt;pre id=&quot;code_1675749763748&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 최신 버전 nodeJS 설치
nvm install --lts

# 16.18.0 버전 설치
nvm install 16.18.0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;선택&lt;/p&gt;
&lt;pre id=&quot;code_1675749851587&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 현재 설치된 nodeJS 목록
nvm ls

# 자신이 설치한 버전 사용 (install시 기본적으로 use가 적용되어 있다.)
nvm use 'version'&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Tool</category>
      <category>nodejs</category>
      <category>nodeJS version</category>
      <category>nvm</category>
      <author>향채소</author>
      <guid isPermaLink="true">https://unityvr.tistory.com/42</guid>
      <comments>https://unityvr.tistory.com/42#entry42comment</comments>
      <pubDate>Tue, 7 Feb 2023 15:06:35 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] path_provider - Ios 다운로드 한 파일 보기</title>
      <link>https://unityvr.tistory.com/39</link>
      <description>&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;사용 패키지
- path_provider
- flutter_downloader&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;path_provider를 이용해서 기기의 경로를 불러와 파일을 다운로드 하는 기능을 추가해주는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Android 기기에서는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;다운로드 폴더&lt;/span&gt;를 직접 명시해주어 파일이 다운로드 되는 것은 확인 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ios 기기를 테스트를 하는데 Ios 기기 사용자가 아니라 다운로드 방식에 대해 테스트를 해보고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 명령문을 이용해 경로를 불러오는 것을 확인 후 테스트를 진행 했는데, 파일을 찾을 수가 없었습니다.&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;abnf&quot;&gt;&lt;code&gt;await getApplicationDocumentsDirectory();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 프로젝트에 있는 Info.plist에 아래 명령문을 추가 해준다면 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;다운로드 받은 파일의 폴더&lt;/span&gt;가 보입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(/MyProject/ios/Runner/Info.plist)&lt;/p&gt;
&lt;pre id=&quot;code_1668062093043&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Info.plist
----------
&amp;lt;key&amp;gt;LSSupportsOpeningDocumentsInPlace&amp;lt;/key&amp;gt;
&amp;lt;true/&amp;gt;
&amp;lt;key&amp;gt;UIFileSharingEnabled&amp;lt;/key&amp;gt;
&amp;lt;true/&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;</description>
      <category>Flutter</category>
      <author>향채소</author>
      <guid isPermaLink="true">https://unityvr.tistory.com/39</guid>
      <comments>https://unityvr.tistory.com/39#entry39comment</comments>
      <pubDate>Thu, 10 Nov 2022 15:47:08 +0900</pubDate>
    </item>
    <item>
      <title>[Android Build] bundletool 사용하여 bundle을 apk로 변환하기</title>
      <link>https://unityvr.tistory.com/38</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://flutter-ko.dev/docs/deployment/android#signing-the-app&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://flutter-ko.dev/docs/deployment/android#signing-the-app&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667978209817&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Android 앱 출시 준비하기&quot; data-og-description=&quot;Flutter 앱을 개발하는 동안, 커멘드 라인에서의 &amp;#96;flutter run&amp;#96;을 실행하거나IDE에 있는 툴바 **Run** 과 **Debug**를 선택하여 앱을 테스트할 수 있습니다. Flutter는 기본적으로 앱의 _debug_ 버전을 빌드합니&quot; data-og-host=&quot;flutter-ko.dev&quot; data-og-source-url=&quot;https://flutter-ko.dev/docs/deployment/android#signing-the-app&quot; data-og-url=&quot;https://flutter-kr.io/docs/deployment/android&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dB2myC/hyQwMI4qsg/MzwBTF8am2499k5TFWAKV1/img.png?width=937&amp;amp;height=461&amp;amp;face=0_0_937_461,https://scrap.kakaocdn.net/dn/cFJ9PD/hyQwEqIJV7/kjivF6v8rUfMrCDGdvs23k/img.png?width=729&amp;amp;height=465&amp;amp;face=0_0_729_465,https://scrap.kakaocdn.net/dn/bmo7nL/hyQvkHptX3/tYFr9jfsBEJtSOJLC5LLN1/img.png?width=680&amp;amp;height=458&amp;amp;face=0_0_680_458&quot;&gt;&lt;a href=&quot;https://flutter-ko.dev/docs/deployment/android#signing-the-app&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://flutter-ko.dev/docs/deployment/android#signing-the-app&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dB2myC/hyQwMI4qsg/MzwBTF8am2499k5TFWAKV1/img.png?width=937&amp;amp;height=461&amp;amp;face=0_0_937_461,https://scrap.kakaocdn.net/dn/cFJ9PD/hyQwEqIJV7/kjivF6v8rUfMrCDGdvs23k/img.png?width=729&amp;amp;height=465&amp;amp;face=0_0_729_465,https://scrap.kakaocdn.net/dn/bmo7nL/hyQvkHptX3/tYFr9jfsBEJtSOJLC5LLN1/img.png?width=680&amp;amp;height=458&amp;amp;face=0_0_680_458');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Android 앱 출시 준비하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Flutter 앱을 개발하는 동안, 커멘드 라인에서의 `flutter run`을 실행하거나IDE에 있는 툴바 **Run** 과 **Debug**를 선택하여 앱을 테스트할 수 있습니다. Flutter는 기본적으로 앱의 _debug_ 버전을 빌드합니&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;flutter-ko.dev&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Flutter 앱 빌드 테스트를 하기 위해서는 아래 2가지 방법이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1) 번들 도구를 이용한 오프라인 테스트&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2) 구글 플레이를 이용한 온라인 테스트&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작성자는 1번 방법을 이용하여 테스트를 해봤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) bundletool 다운로드 하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 깃허브에 들어가서 최신 버전 다운 받기 (&lt;a href=&quot;https://github.com/google/bundletool&quot;&gt;https://github.com/google/bundletool&lt;/a&gt; or &lt;a href=&quot;https://github.com/google/bundletool/releases/download/1.13.0/bundletool-all-1.13.0.jar&quot; data-turbo=&quot;false&quot; data-view-component=&quot;true&quot;&gt;&lt;span data-view-component=&quot;true&quot;&gt;bundletool-all-1.13.0.jar&lt;/span&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- brew install bundletool&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) (깃허브에서 다운 받았다면) alias 등록하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;맨 처음 다운 받았다면 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;bundletool-all-1.13.0.jar &lt;/span&gt;라는 이름의 파일인데, 해당 파일 이름을 bundletool.jar로 바꿨습니다. (선택 사항)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2-1) 각자 환경에 맞게 ~/.bashrc 또는 ~/.zshrc 에 아래 명령어 추가 (맨 밑에 복붙해도 됨)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- alias bundletool = 'java -jar {bundletool 경로}/bundletool.jar'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령어 추가 이후에는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;source&lt;/span&gt; ~/.bashrc 또는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;source&lt;/span&gt; ~/.zshrc 를 사용하여 소스를 사용할 수 있게 해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3) apk 파일 생성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;aab 파일이 있는 곳에 가서 아래 명령어 사용 (bundle에는 aab 파일, output에는 생성될 apk 파일 이름)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- bundletool build-apks --bundle=app-debug.aab --output=myapp.apks&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4 ) 현재 연결된 기기에 apk 실행&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;bundletool&amp;nbsp;install-apks&amp;nbsp;--apks=myapp.apks&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4-1) Error: More than one device connected, please provide --device-id 에러 발생 시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- adb devices 명령어를 이용하여 디바이스를 지정해준다.&lt;/p&gt;
&lt;pre id=&quot;code_1667979118800&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; adb devices
List of devices attached
emulator	device&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;background-color: #f6e199;&quot;&gt;bundletool install-apks --apks=myapp.apks --device-id emulator&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5) 결과&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;디바이스에 앱이 설치된 것을 확인 할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;</description>
      <category>Android</category>
      <category>bundletool</category>
      <author>향채소</author>
      <guid isPermaLink="true">https://unityvr.tistory.com/38</guid>
      <comments>https://unityvr.tistory.com/38#entry38comment</comments>
      <pubDate>Wed, 9 Nov 2022 16:34:05 +0900</pubDate>
    </item>
    <item>
      <title>Keystore 패스워드 찾기 - AndroidKeystoreBrute 사용법</title>
      <link>https://unityvr.tistory.com/37</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc9af;&quot;&gt;mac 환경 기준으로 작성한 글 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인계 받은 Keystore를 이용하여 빌드를 하려는데 아래 에러가 발생했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FAILURE: Build failed with an exception.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*&amp;nbsp;What&amp;nbsp;went&amp;nbsp;wrong:&lt;br /&gt;Execution&amp;nbsp;failed&amp;nbsp;for&amp;nbsp;task&amp;nbsp;':app:signReleaseBundle'.&lt;br /&gt;&amp;gt;&amp;nbsp;A&amp;nbsp;failure&amp;nbsp;occurred&amp;nbsp;while&amp;nbsp;executing&amp;nbsp;com.android.build.gradle.internal.tasks.FinalizeBundleTask$BundleToolRunnable&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;Failed to read key key from store &quot;MyPath&quot;: Keystore was tampered with, or password was incorrect&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 아래 사이트에 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;Download the latest version of the Tool&lt;/b&gt;&lt;/span&gt; 아래 링크를 눌러 파일을 다운 받습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://code.google.com/archive/p/android-keystore-password-recover/wikis/HowTo.wiki&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://code.google.com/archive/p/android-keystore-password-recover/wikis/HowTo.wiki&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667976222535&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Google Code Archive - Long-term storage for Google Code Project Hosting.&quot; data-og-description=&quot;&quot; data-og-host=&quot;code.google.com&quot; data-og-source-url=&quot;https://code.google.com/archive/p/android-keystore-password-recover/wikis/HowTo.wiki&quot; data-og-url=&quot;https://code.google.com/archive/p/android-keystore-password-recover/wikis/HowTo.wiki&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://code.google.com/archive/p/android-keystore-password-recover/wikis/HowTo.wiki&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://code.google.com/archive/p/android-keystore-password-recover/wikis/HowTo.wiki&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Google Code Archive - Long-term storage for Google Code Project Hosting.&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;code.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1-1) &lt;b&gt;Java 7 is required to run this tool!!&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;해당 툴을 사용하려면 Java 7 이 필요하다고 하는데, 그 이상의 버전도 상관 없는 것 같습니다. (작성자는 Java 11 사용)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1-2) 실행 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 명령어를 이용하여 실행을 하는데 매개변수 별로 쓰는 방법이 다릅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #006600;&quot;&gt;java -jar AndroidKeystoreBrute.jar &amp;lt;args&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;background-color: #ffffff; color: #4d5156;&quot;&gt;무차별 대입 공격&lt;/span&gt; 방법 (brute&lt;span style=&quot;background-color: #ffffff; color: #4d5156;&quot;&gt;-&lt;/span&gt;force attack - &lt;span style=&quot;background-color: #ffffff; color: #4d5156;&quot;&gt;특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 것&lt;/span&gt;&lt;span style=&quot;color: #252525;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #006600;&quot;&gt;java -jar AndroidKeystoreBrute_v1.05.jar -m 1 -k &amp;lt;...keystore&amp;gt; -start AAAAAA&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #252525;&quot;&gt;- &lt;span style=&quot;color: #252525;&quot;&gt;사전 공격&lt;/span&gt;&amp;nbsp;방법 (Dictionary attack - &lt;span style=&quot;background-color: #ffffff; color: #4d5156;&quot;&gt;사전에 있는 단어를 입력하여 암호를 알아내거나 해독하는 컴퓨터 공격법&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #006600;&quot;&gt;java -jar AndroidKeystoreBrute_v1.05.jar -m 2 -k &quot;C:\\mykeystore.keystore&quot; -d &quot;wordlist.txt&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #252525;&quot;&gt;- 스마트 워드 리스트 공격 방법 (*추천*)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #006600;&quot;&gt;java -jar AndroidKeystoreBrute_v1.05.jar -m 3 -k &quot;C:\\mykeystore.keystore&quot; -d &quot;wordlist.txt&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) wordlist 작성&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;추천하는 방식인 스마트 워드 리스트 방법을 이용하려고 합니다. 비슷한 단어를 알고 있다면 해당 방법이 가장 유효한데,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;wordlist.txt 파일을 생성하여, 해당 패스워드를 생각나는대로 적고 저장을 하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1667977356399&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wordlist.txt
-----------------------------------------
password1
pass1
Password
...&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 실행하기&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 명령어를 이용하여 실행하면 됩니다. (KeyStore 경로와 wordlist.txt의 경로를 입력)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #006600;&quot;&gt;java -jar AndroidKeystoreBrute_v1.05.jar -m 3 -k &quot;Keystore 경로&quot; -d &quot;wordlist.txt 경로&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4) 결과&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제대로 패스워드를 찾았다면 아래처럼 ok가 뜨고 alias를 알 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;(작성자는 대소문자 문제였습니다.)&lt;/s&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1667977515379&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Number of keys in keystore: 1
Found alias: key
Creation Date: 

Start smart wordlist attack on key!!

Capitalize first letter
Current Pass: a || est. 0 Pass/Sec

Got Password in 0 seconds
Password is: Password for alias key

For updates visit http://code.google.com/p/android-keystore-password-recover/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;감사합니다.&lt;/p&gt;</description>
      <category>Android</category>
      <author>향채소</author>
      <guid isPermaLink="true">https://unityvr.tistory.com/37</guid>
      <comments>https://unityvr.tistory.com/37#entry37comment</comments>
      <pubDate>Wed, 9 Nov 2022 16:09:19 +0900</pubDate>
    </item>
    <item>
      <title>[Android] Android Studio 설치</title>
      <link>https://unityvr.tistory.com/36</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Android Studio 설치&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.android.com/studio?hl=ko&amp;amp;gclid=EAIaIQobChMI56W4r76g-wIVWqqWCh2GmA4rEAAYASAAEgJXCvD_BwE&amp;amp;gclsrc=aw.ds&quot;&gt;https://developer.android.com/studio?hl=ko&amp;amp;gclid=EAIaIQobChMI56W4r76g-wIVWqqWCh2GmA4rEAAYASAAEgJXCvD_BwE&amp;amp;gclsrc=aw.ds&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1667975904283&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Download Android Studio &amp;amp; App Tools - Android Developers&quot; data-og-description=&quot;Android Studio provides app builders with an integrated development environment (IDE) optimized for Android apps. Download Android Studio today.&quot; data-og-host=&quot;developer.android.com&quot; data-og-source-url=&quot;https://developer.android.com/studio?hl=ko&amp;amp;gclid=EAIaIQobChMI56W4r76g-wIVWqqWCh2GmA4rEAAYASAAEgJXCvD_BwE&amp;amp;gclsrc=aw.ds&quot; data-og-url=&quot;https://developer.android.com/studio&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dEdwwP/hyQwBndsjS/gSWAoheFW5RkUByNKmmr41/img.png?width=1480&amp;amp;height=1080&amp;amp;face=0_0_1480_1080,https://scrap.kakaocdn.net/dn/Bx9QH/hyQwEjWlt1/DEUc6pDps8875YF1XpZQP0/img.png?width=916&amp;amp;height=541&amp;amp;face=0_0_916_541,https://scrap.kakaocdn.net/dn/bb4Bq0/hyQvmFdnV6/h0HAbdBhSDy9FXI68xBcK1/img.png?width=740&amp;amp;height=393&amp;amp;face=0_0_740_393&quot;&gt;&lt;a href=&quot;https://developer.android.com/studio?hl=ko&amp;amp;gclid=EAIaIQobChMI56W4r76g-wIVWqqWCh2GmA4rEAAYASAAEgJXCvD_BwE&amp;amp;gclsrc=aw.ds&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.android.com/studio?hl=ko&amp;amp;gclid=EAIaIQobChMI56W4r76g-wIVWqqWCh2GmA4rEAAYASAAEgJXCvD_BwE&amp;amp;gclsrc=aw.ds&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dEdwwP/hyQwBndsjS/gSWAoheFW5RkUByNKmmr41/img.png?width=1480&amp;amp;height=1080&amp;amp;face=0_0_1480_1080,https://scrap.kakaocdn.net/dn/Bx9QH/hyQwEjWlt1/DEUc6pDps8875YF1XpZQP0/img.png?width=916&amp;amp;height=541&amp;amp;face=0_0_916_541,https://scrap.kakaocdn.net/dn/bb4Bq0/hyQvmFdnV6/h0HAbdBhSDy9FXI68xBcK1/img.png?width=740&amp;amp;height=393&amp;amp;face=0_0_740_393');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Download Android Studio &amp;amp; App Tools - Android Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Android Studio provides app builders with an integrated development environment (IDE) optimized for Android apps. Download Android Studio today.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.android.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 방법은 검색해도 충분히 나오기에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추후에 업데이트 예정&lt;/p&gt;</description>
      <category>Android</category>
      <author>향채소</author>
      <guid isPermaLink="true">https://unityvr.tistory.com/36</guid>
      <comments>https://unityvr.tistory.com/36#entry36comment</comments>
      <pubDate>Wed, 9 Nov 2022 15:39:19 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] new_version Unhandled Exception: RangeError</title>
      <link>https://unityvr.tistory.com/35</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;new_version: ^0.3.1 버전을 받고 테스트를 해봤는데 아래 에러가 발생했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[ERROR:flutter/runtime/dart_vm_initializer.cc(41)]&amp;nbsp;Unhandled&amp;nbsp;Exception:&amp;nbsp;RangeError&amp;nbsp;(index):&amp;nbsp;Invalid&amp;nbsp;value:&amp;nbsp;Valid&amp;nbsp;value&amp;nbsp;range&amp;nbsp;is&amp;nbsp;empty:&amp;nbsp;1&lt;br /&gt;List.[] (dart:core-patch/growable_array.dart:264:36)&lt;br /&gt;&amp;nbsp;NewVersion._getAndroidStoreVersion (package:new_version/new_version.dart:195:26)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 new_version.dart 에 가서&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;
// 183번째 줄을 아래 처럼 바꾸면 된다.
(elm) =&amp;gt; elm.text.contains('key: \'ds:4\'')
// ds:4 -&amp;gt; ds:5
(elm) =&amp;gt; elm.text.contains('key: \'ds:5\''),&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 처럼 적용했더니 버전 체크가 정상적으로 이뤄졌다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Flutter/Flutter Error</category>
      <category>flutter</category>
      <category>flutter error</category>
      <category>new_version</category>
      <author>향채소</author>
      <guid isPermaLink="true">https://unityvr.tistory.com/35</guid>
      <comments>https://unityvr.tistory.com/35#entry35comment</comments>
      <pubDate>Fri, 21 Oct 2022 15:02:18 +0900</pubDate>
    </item>
  </channel>
</rss>