Ti CLI Hook : ticonfig 소개

tishadow를 만든 David Bankier 가 만든 GitHub - dbankier/ticonfig: hook ti cli config from tiapp.xml titianium cli hook 플러그인이 있는데 이걸 보고 몇가지 기능이 더 있으면 좋을 것 같아서 구현해서 pull request하여 반영되어 이 기능에 대해 소개글을 올립니다.

제가 추가한 기능은 아래와 같습니다.

1. dev.xxx : development 또는 test 환경에서 property overwrite 하기

배포 환경에 따라 다른 값을 tiapp.xml에 지정하고 싶으면, property name 앞에 dev. 을 붙여넣어 주세요. 그러면 development(시뮬레이터) 이거나 test(run on device) 배포환경으로 build 할때 해당 값으로 적용됩니다.

<property name="ti.facebook.appid">FACEBOOK_APP_ID_FOR_PRODUCT</property>
<property name="dev.ti.facebook.appid">FACEBOOK_APP_ID_FOR_DEVELOPMENT</property>

2. 로컬 IP 주소 placeholder

tiapp.xml 에 속성을 넣을 때 현재 build 하고 있는 로컬을 ip 주소를 넣고 싶다면, value 부분에 __IP_ADDRESS__를 넣으세요. build 시 로컬 ip 주소로 치환됩니다.

<property name="service-base-url">http://__IP_ADDRESS__:8080</property>

참고로 이 기능은 external IPv4 주소만 취급합니다. 또한 하나 이상의 external IPv4가 있을 경우 build시 cli prompt를 통해 아래와 같이 하나를 선택하라고 나옵니다. 선택은 순서 번호를 입력하면 됩니다. ip 선택하게 하는 prompt는 따로 ipselector 라는 node package로 분리해서 구현했습니다.

ipselector prompt


참고 : facebook app id 를 왜 따로 분리해서 쓰나요?

facebook의 app의 경우 development 와 production용 app을 따로 구분해야합니다. 페이스북은 acs처럼 하나 앱에 대해 개발/실서버 용 key를 따로 제공하지 않고 development mode만 제공하다보니 이미 오픈해서 마켓에 앱일 경우 따로 개발용 app id를 생성해서 하는게 좋습니다. ios든 android든 이런 key를 tiapp.xml 에 지정하고 js 파일에서 필요할 경우
아래와 같이 접근하면 배포 환경에 맞게 위 dev.xxx 기능에서 지정한 값에 접근가능합니다.

var fb_app_id = Ti.App.Properties.getString("ti.facebook.appid");

이 기능은 예전에 gist 로 올린 것과 동일합니다. http://tidev.kr/t/ti-cli-hook-facebook-app-id/296