TiShadow 란?
‘the complete toolset for rapid titanium app development’, tishadow 타이타늄으로 앱 개발시에 빠른 개발을 도와주는 컴파일 및 테스트 도구이다. tishadow 이해하고 적절히 활용하면 상당히 많은 도움이 된다.
tishadow 기본 설치법
npm install -g tishadow --unsafe-perm
sudo를 붙여줘야하는 경우 아래와 같이 --unsafe-perm
필요
sudo npm install -g tishadow --unsafe-perm
개발 환경 및 개인 기호에 따라 다양한 방법으로 tishadow를 활용가능하다. 여기서는 제가 주로 사용하는 방법(A)과 단순한 방법(B) 두가지를 다룬다.
사용 방법 A
Step 1. TiShadow 서버 실행
ts server -z
-z
option을 붙이면 tishadow서버가 각 앱들 버전 관리하고 자동으로 업데이트 해준다.
(-z 옵션은 tishadow와 중간에 접속이 끊어졌던 디바이스에서 다시 앱을 실행시 지금까지의 변경사항을 다시해준다는 의미이다. appify를 다시 해준다는 의미는 아님)
Step 2. 파일 변경 시 자동 update하기
ts @ run -u
실행하려는 titanium 프로젝트 root 폴더에서 이 명령을 실행해주면 파일 변경하고 저장하면 이를 감지하여 자동으로 tishadow server에 연결된 디바이스(혹은 에뮬)에 update해준다.
-u
옵션은 업데이트된 사항만 보내는 것으로 alloy컴파일 시간 및 디바이스로 전송 시간을 줄여준다.
-P
옵션은 특정 platform만 사용할 경우 지정하면 된다 (예. -P ios
)
Step 3 appify로 실행한다.
ti build -p ios --appify
최근 추가된 flag로 --appify
만 붙여주면 appify 프로젝트를 생성하고 실행까지 알아서 해준다. 동시에 확인하고 싶은 환경이 있다면 아래 명령을 참고하여 실행한다. Command Line을 통해 build 하는 방법은 titanium cli 문서를 참고하거나 기본 cli의 사용법이 복잡할 경우 tn 같은 3rd party 툴을 이용해도 된다.
-
ti build -p android --appify
: android (기본) 에뮬로 실행 -
ti build -p android -T device --appify
: android device로 를 실행
QnA
- Q. 변경한 내용이 반영이 안되요!
- 사용방법 1의 경우 tiapp.xml이나 font파일 등을 추가하여 native적인 변화가 생겼을 때는 Step 3. appify를 다시해야한다.
- 뭔가 이전 코드로 계속 실행된다고 느껴질때는 다른 터미널을 열어
ts run
을 시행하여 모든 파일을 다시 보내본다. 그래도 안될경우 디바이스에서 설치된 앱을 삭제하고 다시 Step 3 appify를 실행한다. - ts server 나 ts run 명령어가 종료되지 않았는지 확인해본다.
- Q. 앱이 실행과 동시에 종료되요.
- 문제가 되는 부분을 해결해도 계속 종료가 된다고 생각될 때는 --appify를 빼고 일반적인 빌드를 통해 정상 작동하는지 확인하고 정상 작동할경우 디바이스에서 설치된 앱을 삭제하고 다시 Step 3 appify를 실행한다.
사용 방법 B
--shadow
: 한방에 실행 but 느림
ti build -p ios --shadow
위의 사용방법 A가 복잡하다고 생각될 경우 --shadow
옵션을 주고 build만 하면 Step 1,2,3을 순차적으로 자동으로 실행 해준다. 이 과정의 단점은 appify만 다시 해도 될경우에도 Step 1,2,3 모든 과정을 전부 다시 실행하므로 사용방법 1에 비해 느리다.
질문. TiShadow 어떻게 동작하나요?
titanium은 런타임에 사용자가 작성한 js코드를 background thread의 js 엔진에서 실행한다. 한줄 한줄 실행하면서 필요한 titanium native sdk의 코드를 실행시키는 방식이다. 타이타늄 소개 ppt 19페이지 부터 참조
tishadow는 이런 점을 활용하여 앱을 시뮬레이터나 디바이스에 설치하기 위해 패키징 할 때 모든 titanium native sdk를 포함해서 시켜서 앱 파일을 만듭다. 앱이 실행되면 소켓으로 tishadow server에 접속하여 변경된 js파일을 받아 실행하는 구조이다. 그래서 변경된 파일을 app의 build 과정 없이 빠르게 확인 가능합니다. ts server에는 여러 디바이스나 에뮬이 동시 접속이 가능하므로 앱 개발시 변경사항을 동시에 여러 디바이스에서 바로 확인 가능하다.