픽셀북으로 안드로이드 개발을 편하게 할 수 있다고 해서 시도하고 있는데 편하다고 하는 이유는 픽셀북에서 바로 안드로이드 앱 화면을 띄울 수 있기 때문인것 같다. 그러나 그러기 위해서는 픽셀북을 Developer Mode 로 변경해야 하는데 이렇게 하면 3가지 문제가 있다.
그래서 약간(?) 불편하지만 실제 폰으로 테스트 하는 방법을 쓰기로 했다.
최신 SDK 다운로드 : https://flutter.dev/docs/development/tools/sdk/releases?tab=linux
적당한 위치에 압축 해제
$ cd ~/dev
$ tar xf ~/Downloads/flutter_linux_v1.7.8+hotfix.4-stable.tar.xz
flutter 경로를 path에 추가 : ~/.bashrc파일에 아래의 라인을 추가하는 것이 편하다
export PATH="$PATH:/home/My/dev/flutter/bin"
왜 Java가 필요하냐고? Android sdkmanager 가 Java인 듯 -.- 어차피 설치할 Java라면 지금 설치하자.
최신 Java를 설치해도 되지만 나는 1.8 버전이면 충분하기 때문에 1.8을 설치하겠다. 그리고 OpenJDK보다 OracleJDK가 빠르다고 하니 OracleJDK를 설치하겠다.
Tharanga 란 분이 Github에 설치 스크립트를 공유해 주셔서 이것을 사용하려 한다. uninstall 스크립트도 제공해준다고 좋지 아니한가
https://github.com/chrishantha/install-java
설치 스크립트 다운로드
$ wget https://raw.githubusercontent.com/chrishantha/install-java/master/install-java.sh
JDK 다운로드
jdk-8u212-linux-x64.tar.gz를 여기에서 다운로드 받자. https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8u211-later-5573849.html
암호화 확장 기능 다운로드
암호화 확장 기능은 Java 개발시에만 필요한 기능이지만 Pixelbook에서 Java개발에 필요할거 같아 같이 설치했다. jce_policy-8.zip 는 여기에서 다운로드 한다. https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
설치 스크립트 실행
다운로드한 3개의 파일은 모두 하나의 폴더에 있어야 한다.
설치 중 선택사항을 물어보는데 모두 Y로 했다.
$ sudo ./install-java.sh -f ./jdk-8u212-linux-x64.tar.gz
Android SDK 용 폴더 생성
$ mkdir ~/dev/android-sdk
$ cd ~/dev/android-sdk
명령행 툴 받기 : https://developer.android.com/studio/#downloads 에서 “Command line tools only” 의 리눅스 버전을 받거나 ‘19.08.02 현재 최신버전을 wget으로 받을 수 있다.
$ wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
압축을 해제 한다.
$ unzip android-studio-ide-182.5264788-linux.zip
~/.bashrc파일에 path 추가
export PATH="$PATH:/home/My/dev/android-sdk/tools/bin"
sdkmanager 로 필요한 SDK 받기 : 각각의 버전 번호는 ‘19.08.02 현재 최신 버전인데 버전업 될 수 있으니 확인 후 최신버전을 받자.
$ sdkmanager "build-tools;29.0.1" "tools" "platform-tools" "platforms;android-29" "extras;google;google_play_services" "extras;google;webdriver" "system-images;android-29;google_apis_playstore;x86_64"
sdk목록과 버전 확인 방법
$ sdkmanager --list
~/.bashrc파일에 path 추가
export PATH="$PATH:~/Utils/android-sdk/platform-tools"
~/.bashrc파일에 ANDROID_HOME 시스템 변수 추가
export ANDROID_HOME="/home/bluedskim/Utils/android-sdk"
지금까지 설정한 시스템 변수를 적용한다
$ . ~/.bashrc
Android 라이센스 동의
$ flutter doctor --android-licenses
여기까지 하고 flutter doctor 를 실행해보면 “Downloaded executables cannot execute on host” 라면서 불평을 한다. lib32stdc++6를 설치하자.
$ sudo apt-get install lib32stdc++6
우리는 픽셀북을 개발자모드를 켜지 않았다. 그래서 픽셀북에서 바로 안드로이드 앱을 테스트 할 수 없고 실제 안드로이드 폰에 adb로 연결 후 디버깅할 것이다. 그러기 위해서는 usb케이블로 폰을 연결하던지 wifi와 adb를 이용해서 연결 하는 방법이 있다. 케이블 없는 개발을 위해 wifi와 adb를 이용해서 폰에 연결하도록 한다.
해당 폰을 wifi로 디버깅 가능하도록 설정변경
최소 한번은 해당 폰과 usb로 연결해야 한다. 연결 후 다음 명령을 실행한다.
$ adb tcpip 5555
adb over wifi 연결
$ adb connect 해당폰의_내부ip:5554
연결된 기기 목록을 조회하면 해당 폰 정보가 뜬다.
$ adb devices -l
List of devices attached
해당폰의_내부ip:5554 device product:kltektt model:SM_G900K device:kltektt transport_id:1
여기서 다운로드 하자 https://code.visualstudio.com/docs/?dv=linux64_deb
리눅스 터미널에서 설치하거나
$ sudo apt install ./code_1.36.1-1562627527_amd64.deb
탐색기에서 더블클릭하면 바로 설치할 수도 있다
설치가 끝나면 터미널에서 실행하자. 실행 명령어는 code
$ code
혹은 바로가기를 클릭한다.
실행 후에는 공식가이드에 따라 Flutter extensions을 설치한다 https://flutter.dev/docs/get-started/editor?tab=vscode
설치 후에는 테스트용 앱을 띄워보자 https://flutter.dev/docs/get-started/test-drive?tab=vscode
아직 크롬북 리눅스 앱에서 scaling 문제로 화면이 흐릿하게 보이는 문제가 있다 -.- 다행히도 vs code 는 자체적으로 scaling 할 수 있는 옵션을 제공한다. vs code의 바로가기에 이 옵션을 추가면 쨍쨍한 화면을 볼 수 있다. /usr/share/applications/code.desktop 을 열어서 –force-device-scale-factor=2 인수를 추가한다
[Desktop Entry]
Name=Visual Studio Code
Comment=Code Editing. Redefined.
GenericName=Text Editor
Exec=/usr/share/code/code --force-device-scale-factor=2 --unity-launch %F
Icon=com.visualstudio.code
Type=Application
StartupNotify=false
StartupWMClass=Code
Categories=Utility;TextEditor;Development;IDE;
MimeType=text/plain;inode/directory;
Actions=new-empty-window;
Keywords=vscode;
X-Desktop-File-Install-Version=0.23
[Desktop Action new-empty-window]
Name=New Empty Window
Exec=/usr/share/code/code --force-device-scale-factor=2 --new-window %F
Icon=com.visualstudio.code
Flutter 공부를 하던 중 ‘나에게 이 기술이 꼭 필요할까’ 라는 질문에 도달하게 되었다. 딱히 잘하는 것도 없으면서 하고 싶은 것은 참 많기는 한데 GUI(Graphical User Interface)쪽은 내 분야가 아니라는 생각이 들었다. 적어도 앞으로는. 이제는 선택과 집중이 필요할 때.