코로나, 폰갭, 티타늄 비교


310

저는 웹 개발자이며 웹 제품을 iPhone으로 옮기고 싶습니다. 제품 중 하나는 Google지도와 같습니다. 휴대 전화 화면에지도 표시를 사용하면지도를 드래그하거나 크기를 조정하고지도에 추가 한 정보를 볼 수 있습니다.

HTML, CSS 및 Javascript를 사용하여 기본 iPhone 앱을 개발할 수있는 기술이 있다는 것을 알고 있습니다. 몇 가지를 확인했습니다.

다른 유사한 제품이 있습니까? 그들 사이의 차이점은 무엇입니까? 어느 것을 선택해야합니까?


1
2011 년 6 월 기준으로 iPhone 앱을 생성 할 수있는 Adobe FLEX도 있습니다. adobe.com/products/flex
neoneye

1
확인 해봐. 친구 여기에 포인트 비교입니다. savagelook.com/blog/portfolio/…
Hikmat 칸

답변:


368

나는 가장 많이 투표 된 답변에 댓글을 달기 위해 stackoverflow에 등록했습니다. 나쁜 점은 스택 오버플로로 인해 새로운 회원이 의견을 게시 할 수 없다는 것입니다. 따라서이 의견을 답변처럼 보이게 만들어야합니다.

Rory Blyth의 답변에는 두 가지 자바 스크립트 모바일 프레임 워크에 대한 몇 가지 유효한 점이 포함되어 있습니다. 그러나 그의 요점은 올바르지 않습니다. 진실은 티타늄과 PhoneGap이 다른 것보다 더 비슷하다는 것입니다. 둘 다 자바 스크립트 API 세트를 통해 휴대 전화 기능을 노출하며 애플리케이션의 로직 (html, css, javascript)은 기본 WebView 컨트롤 내에서 실행됩니다.

  1. PhoneGap은 단순한 웹 앱 래퍼가 아닙니다. PhoneGap 자바 스크립트 API를 통해 "웹 앱"은 위치 정보, 가속도계 카메라, 연락처, 데이터베이스, 파일 시스템 등과 같은 휴대폰 기능에 액세스 할 수 있습니다. 기본적으로 휴대폰 SDK가 제공하는 모든 기능은 자바 스크립트 세계. 반면에 모바일 웹 브라우저에서 실행되는 일반 웹 앱은 이러한 기능의 대부분에 액세스 할 수 없습니다 (보안이 주요 이유 임). 따라서 PhoneGap 앱은 웹 앱보다 모바일 앱에 가깝습니다. PhoneGap을 사용하여 PhoneGap API를 전혀 사용하지 않는 웹 앱을 래핑 할 수는 있지만 PhoneGap이 만들어진 것은 아닙니다.

  2. 티타늄은 HTML, CSS 또는 자바 스크립트 코드를 "네이티브 비트"로 컴파일하지 않습니다. 이들은 포함 된 이미지 파일과 매우 유사하게 실행 가능한 번들에 리소스로 패키지됩니다. 응용 프로그램이 실행될 때 이러한 리소스는 UIWebView 컨트롤에로드되어 네이티브 비트가 아닌 자바 스크립트로 실행됩니다. javascript-to-native-code (또는 to-objective-c) 컴파일러와 같은 것은 없습니다. 이것은 PhoneGap에서도 같은 방식으로 이루어집니다. 아키텍처 관점에서 보면이 두 프레임 워크는 매우 유사합니다.

자, 그것들이 다른가요? 예. 첫째, 티타늄은 더 많은 휴대 전화 기능을 자바 스크립트에 연결함으로써 PhoneGap보다 기능이 더 풍부한 것으로 보입니다. 가장 눈에 띄게 PhoneGap은 많은 네이티브 UI 컴포넌트를 자바 스크립트에 노출시키지 않습니다. 반면, 티타늄에는 모든 종류의 기본 UI 컨트롤을 만들고 제어하기 위해 자바 스크립트로 호출 할 수있는 포괄적 인 UI API가 있습니다. 이러한 UI API를 사용하여 Titanium 앱은 PhoneGap 앱보다 "기본"처럼 보일 수 있습니다. 둘째, PhoneGap은 티타늄보다 더 많은 휴대 전화 플랫폼을 지원합니다. PhoneGap API는보다 일반적이며 iPhone, Android, Blackberry, Symbian 등과 같은 다양한 플랫폼에서 사용할 수 있습니다. 티타늄은 현재 적어도 iPhone과 Android를 대상으로합니다. 일부 API는 iPhone UI API와 같이 플랫폼에 따라 다릅니다.

따라서 앱에 대한 관심이 더 "네이티브"인 것처럼 보이게하려면 티타늄이 더 나은 선택입니다. 앱을 다른 플랫폼으로보다 쉽게 ​​"포팅"하려면 PhoneGap이 더 좋습니다.

2010 년 8 월 13 일 업데이트 됨 : Mickey의 질문에 대한 티타늄 직원의 답변으로 연결하십시오.

2010 년 12 월 4 일 업데이트 : 이 게시물의 정보를 최신으로 유지하기 위해이 게시물을 매년 검토하기로 결정했습니다. 초기 게시물의 일부 정보를 구식으로 만든 많은 것들이 일년에 변경되었습니다.

가장 큰 변화는 티타늄에서 나왔습니다. 올해 초 Appcelerator는 Titanium 1.0을 출시했습니다.이 버전은 이전 버전과 크게 다른 아키텍처 관점에서 출발했습니다. 1.0에서는 UIWebView 컨트롤이 더 이상 사용되지 않습니다. 대신 UI 함수에 대해 Titanium API를 호출합니다. 이 변경은 몇 가지 사항을 의미합니다.

  1. 앱 UI가 완전히 기본이됩니다. 기본 Titanium API가 모든 UI 요구를 제어하기 때문에 앱에 더 이상 웹 UI가 없습니다. 티타늄은 "Cross-Platform Native UI"프론티어를 개척함으로써 많은 크레딧을받을 가치가 있습니다. 네이티브 UI의 모양과 느낌을 선호하지만 공식 프로그래밍 언어는 싫어하는 프로그래머에게 대안을 제공합니다.

  2. 웹보기가 사라지면 앱에서 HTML 또는 CSS를 사용할 수 없습니다. (참고 : 티타늄에서 웹보기를 만들 수는 있지만 웹보기에서 활용할 수있는 티타늄 기능은 거의 없습니다.) 티타늄 Q & A : HTML 및 CSS는 어떻게 되었습니까?

  3. DOM 객체가 있다고 가정하는 JQuery와 같은 널리 사용되는 JS 라이브러리를 사용할 수 없습니다. 코딩 언어로 JavaScript를 계속 사용합니다. 그러나 이것은 웹 프로그래머로서 Titanium 1.0에 온다면 활용할 수있는 유일한 웹 기술입니다.

티타늄 비디오 : 티타늄 1.0의 새로운 기능.

이제 Titanium 1.0에서 JavaScript를 "네이티브 비트"로 컴파일합니까? 아닙니다. Appcelerator는이 개발자 블로그 : Titanium Guides Project : JS Environment 에서이 문제를 해결했습니다 . 우리 프로그래머는 마케팅 부서보다 ​​더 진정한 사람들입니다. :-)

PhoneGap으로 이동하십시오. PhoneGap에 대해 할 말이 많지 않습니다. 필자는 IBM이 올해 후반에 출시 될 때까지 PhoneGap 개발이 그다지 활발하지 않았다는 것을 알고 있습니다. 일부 사람들은 IBM이 Nitobi보다 PhoneGap에 더 많은 코드를 제공한다고 주장했습니다. 그것이 사실이든 아니든, PhoneGap이 활발히 개발되고 있음을 아는 것이 좋습니다.

PhoneGap은 웹 기술, 즉 HTML, CSS 및 JavaScript에 계속 기반을두고 있습니다. PhoneGap은 Titanium이 수행하는 동안 기본 UI 기능을 JavaScript에 연결하려는 계획이없는 것처럼 보이지 않습니다. 웹 UI는 여전히 성능과 기본 모양과 느낌면에서 기본 UI보다 뒤떨어 지지만 이러한 격차는 급격히 줄어들고 있습니다. 웹 기술에는 성능 측면에서 모바일 웹 UI에 대한 밝은 기능을 보장하는 두 가지 트렌드가 있습니다.

  1. 인터프리터에서 가상 머신으로 이동하는 JavaScript 엔진. JavaScript는 빠른 실행을 위해 원시 코드로 JIT 컴파일됩니다. Safari JS 엔진 : SquirrelFish Extreme

  2. 웹 페이지 렌더링은 CPU 의존에서 GPU 가속 사용으로 이동합니다. 하드웨어 가속 덕분에 페이지 전환 및 3D 애니메이션과 같은 그래픽 집약적 인 작업이 훨씬 매끄러 워집니다. Chrome의 GPU 가속 합성

데스크톱 브라우저에서 시작된 이러한 개선 사항은 모바일 브라우저에 빠르게 제공됩니다. 실제로 iOS 3.2 및 Android 2.0 이후로 모바일 웹 뷰 컨트롤은 훨씬 더 성능이 우수하고 HTML5에 친숙해졌습니다. 모바일 웹의 미래는 그래서 마을에 큰 아이를 끌었다 것을 약속한다 : JQuery와는 최근 모바일 웹 프레임 워크를 발표했다. UI 가젯을 제공하는 JQuery Mobile과 전화 기능을 제공하는 PhoneGap을 사용하면 두 가지를 결합하여 완벽한 모바일 웹 플랫폼을 만들 수 있다고 생각합니다.

또한 Sencha Touch 를 다른 모바일 웹 UI 가젯 프레임 워크로 언급해야합니다 . Sencha Touch 버전 1.0은 최근 GPLv3가 포함 된 이중 라이센스 모델로 출시되었습니다. Sencha Touch는 JQuery Mobile과 마찬가지로 PhoneGap 과도 잘 작동합니다.

나와 같은 GWT 프로그래머 라면 GWT 를 사용하여 모바일 웹 앱을 만들기위한 오픈 소스 프로젝트 인 GWT Mobile 을 확인하십시오 . GWT에서 PhoneGap을 사용할 수있는 PhoneGap GWT 래퍼가 포함되어 있습니다.


10
음 ... 당신은 "PhoneGap은 단순한 웹 앱의 래퍼가 아닙니다"라고 말합니다. 기본 장치 기능에 대한 액세스 권한에 대해 계속 설명합니다. "PhoneGap이 제공하는 것은 JavaScript와 기본 장치 API 사이를 연결하는 것입니다. 따라서 PhoneGap API에 대해 JavaScript를 작성하면 PhoneGap은 해당하는 해당 네이티브 호출을 수행합니다. 평범한 오래된 웹 앱을 배포하는 것과는 다릅니다. " 내 진술을 반박하기 위해 등록했다면, 그 내용을 전부 읽었을 것입니다. 내 게시물이 길지만 여전히 ...
Rory Blyth

5
나는 명확 수 있었다, 그러나이 장치에 장치에서 시간이 지남에 따라 변화 이후 어떤 API를 세부 사항은 복잡 무엇을 당신이 (가 많이 향상,하지만 다른 플랫폼의 기능 매트릭스 적지 개정을 겪었다) 할 수 있습니다. 나는 주요 차이점 중 하나에 대해 썼고 내가 쓴 것은 정확합니다. 사실, 그것은 당신이 쓴 것과 일치합니다. 액세스 할 수있는 API에 대해 자세히 설명했습니다.
Rory Blyth

9
티타늄과 "네이티브 비트"에 관해서는 필자의 실수는 Appcelerator의 첫 페이지에서 "티타늄을 최고의 성능을 위해 네이티브 코드로 컴파일하기 때문에 훌륭하게 실행된다"고 생각합니다. 아마도 그들이 틀렸다는 것을 알리기 위해 그들에게 편지를 써야 할 것입니다. 그것을 체크 아웃 : tinyurl.com/yzlzvk5
로리 블라이스

6
자세한 내용은 첫 번째 주제 인 "이러한 모바일 웹앱 또는 기본 모바일 애플리케이션입니까?"인 티타늄 FAQ를 확인하십시오. 여기 견적을 재 게시 싶지만, 난 당신이 아니라있는 그대로, 내가 믿는, 직접 회사에서 그것을 얻을 거라고 생각, 그들의 제품에 기관 : tinyurl.com/ya9topg
로리 블라이스

4
데니스, 좋은 답변 주셔서 감사합니다. 아직도 티타늄으로 개발하고 있습니까? 1.7이 착륙했다고 말할 수 있습니까?
PaulM

193

내가 수집 한 것에서 두 가지의 차이점은 다음과 같습니다.

  • PhoneGap은 기본적으로 여전히 웹 응용 프로그램에 대한 기본 래퍼를 생성 합니다 . 그것은 무엇이든 플랫폼 프로젝트를 뱉어 내고, 구축하고, 배포합니다. 우리가 (내가 내 시간을 보내는 곳 이는), 당신이처럼 실행할 수 있도록 웹 응용 프로그램 실행기 (자체 스프링 아이콘을 유도 할 수있는 바로 가기를 만들 크게 다르지을하지 않는 것 아이폰에 대해 이야기하는 경우 ( 같은 ) 기본 앱). "앱"자체는 여전히 html / js / etc이며 호스팅 된 브라우저 컨트롤 내에서 실행됩니다. PhoneGap이 그 이상으로 제공하는 것은 JavaScript와 기본 장치 API 사이의 다리입니다. 따라서 PhoneGap API에 대해 JavaScript를 작성하면 PhoneGap은 해당하는 해당 기본 호출을 수행합니다. 그런 점에서, 그것은 것입니다 일반 오래된 웹 응용 프로그램을 배포 다릅니다.

  • 티타늄 소스는 네이티브 비트로 컴파일됩니다. 즉, html / js / etc입니다. 단순히 프로젝트에 연결되어 웹 브라우저 컨트롤 내부에 호스팅되는 것이 아니라 기본 앱으로 바뀝니다. 예를 들어 앱의 인터페이스는 기본 UI 구성 요소로 구성됩니다. 네이티브 앱을 사용하지 않고 네이티브 룩앤필을 얻는 방법이 있지만 ... 음 ... 보통 악몽이되는 것입니다.

두 가지는 일반적인 웹 기술 (html / js / css / blah blah blah)을 사용하여 모든 내용을 작성하고 사용자 정의 JavaScript API를 통해 기본 기능에 액세스한다는 점에서 비슷합니다.

그러나 PhoneGap 앱 (PhonGapps? 모르겠습니다 ... 어리석은 이름입니까? 더 쉽게 말할 수 있습니다-많이 알고 있습니다)은 웹 앱으로 인생을 시작하고 웹 앱으로 인생을 끝내는 것입니다. iPhone에서 html / js / etc. UIWebView 컨트롤 내에서 실행되며 js 호출이 기본 API로 라우팅되는 PhoneGap JavaScript API입니다.

티타늄 앱은 기본 앱이됩니다. 웹 개발 기술을 사용하여 개발 된 것입니다.

이것이 실제로 무엇을 의미 합니까?

  1. 티타늄 응용 프로그램은 것 보면 , 궁극적으로,이 때문에 "진짜"애플 리케이션과 같은 것입니다 "진짜"응용 프로그램.

  2. 폰갭 응용 프로그램은, 궁극적으로,이 때문에 웹 애플리케이션은 브라우저 컨트롤에서 호스팅되는 것처럼 보이는 것 입니다 웹 애플리케이션은 브라우저 컨트롤에서 호스팅되고.

어느 것이 당신에게 옳습니까?

  • 웹 개발 기술을 사용하여 기본 앱을 작성하려면 티타늄이 가장 좋습니다.

  • 여러 플랫폼 (iPhone, Android, Blackberry 및 기타 포함하기로 결정)에 실제로 배포 할 수있는 웹 개발 기술을 사용하여 앱을 작성하려는 경우 기본 플랫폼 기능 (GPS, 통합 자바 스크립트 API를 통한 가속도계 등), PhoneGap은 아마도 당신이 원하는 것입니다.

웹에서 호스팅되는 웹 앱 대신 PhoneGapp (이름을 사용하기로 결정)을 작성하고 싶은 이유는 무엇입니까? 그래도 여전히 일부 기본 장치 기능에 액세스 할 수 없지만 사용자가 "기본"앱을 다운로드하여 설치하도록 강요하지 않고 진정한 웹 배포의 편의성을 가질 수 있습니까?

이에 대한 답변은 PhoneGapp을 App Store에 제출하고 요금을 청구 할 수 있기 때문입니다. 또한 런처 아이콘을 사용하면 사용자가 앱을 잊기 어려워집니다 (앱 아이콘보다 북마크를 잊어 버릴 가능성이 큽니다).

당신은 확실히 웹 호스팅 웹 앱에 대한 액세스 비용을 청구 할 수 있지만, 얼마나 많은 사람들이 실제로 프로세스를 진행할 것입니까? App Store에서 앱을 선택하고 "구매"버튼을 누르고 비밀번호를 입력하면 완료됩니다. 설치합니다. 몇 초 후, 나는 그것을 사용하고 있습니다. 다른 사람의 일회성 모바일 웹 거래 인터페이스를 사용해야한다면 내 이름, 주소, 전화 번호, CC 번호 및 기타 탭하고 싶지 않은 것을 탭해야 할 가능성이 거의 있습니다. 그것으로 간다. 또한, 나는 애플을 믿습니다. Steve Jobs가 내 정보를 기록하지 않고 차기 위해 CC에 많은 잡지 구독을 청구하지 않을 것이라고 확신합니다.

어쨌든 웹 개발자 기술이 관련되어 있다는 사실을 제외하고 PhoneGap과 Titanium은 표면적으로 비교할 수 있다는 점에서 매우 다릅니다.

나는 웹 앱을 싫어하고 iTunes App Store 리뷰를 읽으면 사용자가 그 점을 잘 알 수 있습니다. 이름은 지정하지 않지만 휴대 전화에는 가비지처럼 보이고 실행되는 몇 가지 "앱"이 있으며 이는 UIWebView 인스턴스 내에서 호스팅되는 웹 앱이기 때문입니다. 웹 응용 프로그램을 사용하려면 Safari를 열고 웹 응용 프로그램으로 이동하십시오. iPhone-y 인 것을 원하기 때문에 iPhone을 구입했습니다. Safari에서 멋진 Google 웹 앱을 사용하는 데 아무런 문제가 없지만 Google이 웹 앱을 기본 앱으로 표시하여 Springboard에 북마크를 가져다 놓는 경우 속임수입니다.

지금 가야만 해. 제 여자 친구는 3 초 동안 컴퓨터 사용을 중지 할 수있었습니다.


22
대답의 문제는 그것이 대부분 잘못되었다는 것입니다. 아래 DennisJZH의 답변을 참조하십시오.
jbwiv 2009

9
@jbwiv-귀하의 의견에 대한 문제는 대부분 DennisJZH의 답변을 기반으로한다는 것입니다. 아래 내 답변을 참조하십시오. 더 혼란을 피하기 위해 제품에 대한 공식 문서를 확인하고 내 게시물 을 전체적으로 읽어보십시오 . 정말 고마워
Rory Blyth

15
@Matthew-아, gf는 분명히 우선 순위가 있습니다 :) 이러한 질문은 기본적으로 변경이 발생하기 때문에 관련이 없습니다 (내가 당신의 의미를 잘못 이해하면 사과합니다). 우리는 지구가 미래에 연료를 태우고 팽창하여 지구를 파괴하면서 태양에 의해 요리 될 것이기 때문에이 문제가 없다고 주장 할 수 있지만 ... 이것은 우리가 기다리는 동안 할 일을 제공합니다.
Rory Blyth

2
@Matthew-또한이 사람 새로운 것을 시도 할 의향 이 있습니다. 그것은 당신이 선호하는 방식이 아닐 수도 있지만 여전히 새로운 것입니다. 여전히 iPhone 개발에 대해 배워야합니다 (UI 지침에 대한 문서 읽기 등). 가치가 보이지 않기 때문에 누군가가 무언가를 달성하려고하지 못하게 할 이유는 없습니다. 예를 들어, 나는 버섯을 싫어하지만 다른 사람들이 먹는 것을 막으려 고하지는 않습니다. 나는 그들이 사프란을 좋아하는 것과 같은 방식으로 버섯을 좋아한다는 것을 알고 있으며, 나는 그들이 사프란을 좋아하지 않기 때문에 사프란을 빼앗아 가려는 사람을 원하지 않는다는 것을 알고 있습니다.
Rory Blyth

1
네,하지만 당신이 진정한 웹 기술 마법사라면 아무도 당신의 "웹 앱"이 실제로 네이티브 앱이 아님을 깨닫지 못할 것입니다. 앱이 UIWebView로 래핑 된 "웹 앱"이라는 것이 명백한 경우, 제작자가 충분한 품질로 만들기 위해 시간이 걸리지 않았거나 돌보지 않았 음을 의미합니다.
trusktr

62

나는 안드로이드 / 아이폰 개발 과정을 밟고 있으며 티타늄으로 8 주를 보냈습니다 (풀 타임 아님) (버전은 티타늄 1.4.2 였고 시간은 2010 년 11 월경이었습니다). 여기 내 경험이 있습니다.

아이폰 안드로이드 듀얼 타겟팅

API 가이드에서 기능을 Android와 iPhone 모두에서 사용할 수 있다고 주장하지만, 그렇지 않습니다. 대부분의 플랫폼은 플랫폼 중 하나에서 작동하지 않습니다. 일부는 다르게 작동합니다.

수업 시간에 많은 사람들이 iPhone 응용 프로그램을 수행했으며 주요 재 작성 없이는 Android에서 작동하도록 할 수 없습니다. 나는 Animap (스웨덴의 Android 마켓 / Appstore 참조)이라는 간단한 어린이 앱을 개발하고 Windows에서 개발을 시작했습니다. Android 대상이 작동하면 OS X에서 프로젝트를 열었습니다. iPhone 용 빌드 항목은 표시되지 않으며 Android 전용입니다. OS X에서 이중 대상 프로젝트를 시작해야합니다. (관련 파일을 새 프로젝트에 복사했습니다.) 다음 문제-애니메이션은 iPhone에서 작동하지 않습니다 (Android에서 작동 함). 스크롤 이벤트는 iPhone에서 동일하게 작동하지 않습니다. (즉, Android에서는 사용자가 스크롤을 중지하고 화면에서 손가락을 when 때 untouch 이벤트가 발생합니다. 이는 iPhone에서 발생하지 않습니다).

이것은 어딘가에 언급되어 있지 않으므로 기본적으로 첫 번째 플랫폼에서 시행 착오 프로그래밍을 수행 한 다음 다른 플랫폼에서 시행해야합니다. 시행 착오로 Animap과 같은 간단한 앱을 다른 플랫폼에서 사용하려면 약 2 일이 걸릴 것입니다. 또한 코드 전체에 if (android) 또는 if (iphone) ...이 있어야합니다.

다운로드 및 설정

서신에 대한 지침을 따라야합니다. Java 64 비트를 사용하지 마십시오. KitchenSink 1.4.0 데모 애플리케이션은 컴파일하지 않습니다. (1.3 작동 OK!) 긴 경로 이름으로 인해 외부 프로그램이 길어질 경우 모든 명령 행 매개 변수를받지 못하게하므로 파일을 C 드라이브에 직접 두어야합니다. (작은 프로그램에는 적합) 1/3의 시간에 툴체인은 단순히 정지하고 '시작'을 다시 눌러야합니다. 그러면 아마 잘 작동 할 것입니다 ... 시작시 시뮬레이터를 찾을 수 없으므로 Ctrl + Alt + Delete를 사용하여 adb.exe를 종료 한 후 다시 시도해야합니다.

네트워크 연결

Wi-Fi 네트워크에서는 때때로 라이브 연결이 끊어지고 티타늄이 충돌합니다 (컴파일 / 배포 인터페이스) 인터넷에 연결되어 있지 않으면 서버에 로그인 할 수 없으므로 시작되지 않습니다.

API

CSS, HTML 및 jQuery는 이것에 비해 산들 바람입니다. 티타늄은 기존의 다른 GUI API와 비슷하며 모든 단일 버튼 / 필드 / 등에 대해 일부 속성을 설정해야합니다. 필드를 잘못 얻는 것은 설정하는 데 필요한 모든 속성을 기억하는 것이 쉬운 일입니까? 올바른 장소에 대문자로 철자를 썼습니까? (이것은 컴파일러에 의해 잡히지 않지만 해당 부분을 테스트하는 것이 운이 좋으면 런타임 오류로 표시됩니다)

Titanium에서는 컨트롤 위에 다른보기를 추가하거나 GUI의 다른 곳을 클릭하면 문제가 발생합니다.

선적 서류 비치

여러 API 페이지에는 Android 기호가 있지만 컨트롤을 만들려고 할 때만 null을 반환합니다. 기호에도 불구하고 단순히 Android 플랫폼에서 사용할 수 없습니다. 때로는 안드로이드가 특정 메소드를 지원하지 않는다고 언급하지만 전체 API가 누락되었습니다.

부엌 싱크대

데모 애플리케이션. 경로가 너무 길어 Eclipse 프로젝트 폴더에 넣으면 컴파일되지 않는다고 언급 했습니까? C 드라이브의 루트 폴더에 있어야합니다. 나는 현재 symbolik 링크를 사용합니다 (mklink / J ...)

문서화되지 않은 방법

레이블을 안정적으로 변경하려면 레이블을 set.setText ( 'Hello World')로 적절하게 사용해야하지만 전혀 문서화되어 있지 않습니다.

디버깅

Titanium.API.info ( '인쇄는 디버깅하는 유일한 방법입니다');

편집

API는 올바른 형식으로 제공되지 않으므로 Eclipse에서 도움말 등으로 일반적인 코드 완성을 얻을 수 없습니다. 앱 타나 도와주세요!

하드웨어

컴파일러 / 도구는 다중 스레드가 아닌 것이므로 많은 시행 착오를해야하므로 빠른 하드 드라이브가 장착 된 빠른 컴퓨터가 필수입니다. 잘못된 문서를 언급 했습니까? 믿을 수 없으므로 모든 것을 시험해보십시오!

긍정적 인 것들

  • 오픈 소스
  • 이전 프로젝트에서 나는 단순히 시간과 인력을 투입하여 문제를 해결할 수 없으므로 폐쇄 소스를 다시 사용하지 않겠다고 약속했습니다. 프로젝트에 늦어서 어려운 마감일을 전달해야 할 때 중요합니다. 이것은 오픈 소스이며 툴 체인이 왜 깨져서 실제로 수정했는지 알 수 있습니다.

  • 버그 데이터베이스

  • 또한 열려 있습니다. 당신은 단순히 혼자가 아니라는 것을 알 수 있으며 시행 착오에 소비 된 다른 4 시간 대신 해결 방법을 수행하십시오.

  • 커뮤니티

  • 그들의 포럼에서 활동적인 것 같습니다.

버그

  • 티타늄 1.4는 스레드 세이프가 아닙니다 . 즉, 스레드를 사용하고 (createWindow 호출에서 url : 속성 사용) 스레드가 작동하는 것과 같은 프로그램을 사용하여 데이터가있는 이벤트를 앞뒤로 보내면 매우 이상한 것들이 많이 발생합니다. 창, 너무 많은 이벤트, 너무 적은 이벤트 등. 이것은 모두 타이밍에 따라 달라 지므로 코드 행을 다른 순서로 배치하면 응용 프로그램이 중단되거나 치유 될 수 있습니다. 다른 file.js에 창을 추가하면 app.js 실행이 중단됩니다. 이것은 또한 내부 데이터 구조를 병렬화하여 병렬로 내부 데이터 구조를 업데이트하여 변경된 값을 다른 것으로 덮어 쓸 수 있습니다.

티타늄과 관련된 많은 문제는 수백 개의 스레드, 이벤트 및 메시지 전달을 지원하는 OSE와 같은 실시간 시스템에서 저의 배경에서 비롯됩니다. 이것은 티타늄 1.4에서 작동해야하지만 안정적으로 작동하지 않습니다.

  • Javascript (나에게 새로운)는 런타임 오류로 자동으로 죽습니다. 또한 변수 이름의 철자를 잘못 입력하거나 널 포인터로 읽는 것과 같은 작고 일반적인 버그는 디버그해야 할 때 충돌하지 않습니다. 대신 문자를 잘못 입력하거나 잘못 입력했기 때문에 이벤트 처리기와 같은 프로그램의 일부가 작동을 멈 춥니 다.

  • 그런 다음 함수에서 작동하지 않는 일부 매개 변수와 같은 티타늄에 더 간단한 버그가 있습니다 (적어도 Android 플랫폼에서 일반적 임).

  • 평가판 및 오류 디버그주기 속도 여러 컴퓨터에서 Titnium Developer를 실행 한 결과 병목 현상이 하드 드라이브라는 것을 알았습니다. 랩톱의 SSD 드라이브는 4200rpm 드라이브보다 빌드주기가 약 3-5 배 빠릅니다. 데스크탑에서 RAID 1 (스트라이핑 모드)에 이중 드라이브를 사용하면 CPU가 약간 빠른 단일 드라이브보다 약 25 % 더 빠르게 빌드 할 수 있으며 SSD 드라이브 랩톱을 능가합니다.

요약

  • 이 스레드의 의견에서 이와 같은 도구가 앱을 제공 할 수있는 플랫폼 수에 맞서 싸울 것 같습니다. API의 수가 핵심 판매 포인트 인 것 같습니다.

이것은 당신이 그것을 사용하기 시작할 때 매우 빛난다. 열려있는 버그 추적기를 보면 버그 수가 수정 된 버그 수보다 계속 빠르게 증가하고 있음을 알 수 있습니다. 이것은 일반적으로 개발자가 버그 수를 줄이는 데 집중하는 대신 기능을 계속 추가한다는 신호입니다.

고객에게 멀티 플랫폼에 간단한 앱을 제공하려는 컨설턴트로서 실제로 두 플랫폼에서 기본 앱을 개발하는 것보다 이것이 더 빠르지는 않습니다. 이것은 당신이 속도를 낼 때 티타늄으로 빠르다는 사실 때문입니다. 그러나 갑자기 당신은 구멍을 뚫고 깊이 빠져 나와서 해결책을 찾기 위해 얼마나 많은 시간을 소비해야하는지 알지 못합니다. 특정 마감 시간 / 시간 / 비용에 대해 특정 기능을 약속 할 수는 없습니다.

나 자신에 관하여 : wxPython과 함께 2 년 동안 Python을 사용했다. (GUI는 무의식적이지만 결코 깨지지 않습니다. Javascript와 Titanium에서 사용하는 스레딩 모델을 이해하지 못했을 수도 있지만 공개 토론 포럼에 따르면 GUI 개체가 갑자기 잘못된 컨텍스트를 사용하고 있습니다 / 그 전에 업데이트하지 않습니다 .. ???) 전에 모바일 장치에 대한 C 및 ASM 프로그래밍에 대한 배경 지식이 있습니다.

[편집-버그가있는 부분이 추가되었으며 스레드로부터 안전하지 않음] [편집-이제는 한 달 이상 (대부분 PC에서는 작동했지만 일부는 OS X에서도) 작동했습니다. iPhone 및 Android 이중 타겟팅이 추가되었습니다. 평가판 및 오류 디버그주기 속도가 추가되었습니다.]


1
Titanium 1.4 릴리스에서는 Titanium에서 제공되는 .apk 파일을 살펴 보았지만 그다지 좋지 않습니다. 그것들은 작동하지만 완전한 빌드 디렉토리는 일종의 압축되어 있습니다. 즉, 큰 스플래시 화면 이미지가 있기 때문에 스플래시 화면을 3 개의 다른 위치로 복사하는 등의 작은 빌드 결함이 갑자기 소모됩니다. 전화에 약 1 메가의 저장 공간이 있습니다. 그리고 이것은 매우 간단한 hello-world 변형입니다. 또한 자바 스크립트 소스 코드는 빌드 및 .apk 파일로 복사되어 모든 고객에게 제공됩니다.
user288299

릴리스 1.5는 이제 출시되었으며 Android 플랫폼의 주요 재 작성이라고합니다. 이제 기본 안드로이드 개발을 배우기 위해 이것을 테스트하지 않을 것입니다.
user288299

릴리스 1.5는 이제 출시되었으며 Android 플랫폼의 주요 재 작성이라고합니다. 우리는 지금 네이티브 안드로이드 개발을 배우기 위해 움직 였으므로 이것을 테스트하지 않을 것입니다. 오늘 네이티브 안드로이드의 수명주기에 대해 배웠 듯이, 두 번째로 가변 콘텐츠를 잃어버린 일부 창에서 발생하는 문제는 티타늄이 수명주기의 onPause () 상태 이전에 상태를 저장하지 않기 때문에 발생했다고 생각합니다. developer.android.com/guide/topics/fundamentals.html#lcycles . Titanium.Map.MapView.hide () 및 이후 show ()를 호출하면 맵의 로컬 변수가 단순히 종료 될 수 있습니다.
user288299

1
방금 1.7로 연주했는데 설명이 맞습니다. 이 플랫폼은 끔찍한 성능과 수많은 검색 작업 시간으로 매우 인기가 높습니다. 프로젝트를 시작할 때 리소스가있는 경우 각 플랫폼마다 기본 리소스를 구축하십시오.
Jonathon Kresner

25

Corona SDK (Ansca Mobile)는 Lua를 코딩 언어로 사용합니다. Lua에 대한 자세한 내용은 lua.org를 참조하십시오.

웹 통합과 기본 UI 요소를 추가 할 계획이지만 웹 기반 기술이 아닌 게임 개발과 같은 그래픽 중심 응용 프로그램에 중점을 둘 것입니다. 다시 말해, 코로나 앱을 작성하는 사람들이 Javascript / HTML / CSS로 완전히 구상하지는 않습니다.


기본 UI 스크립팅에 대한 계획 또는 시간 척도가 있습니까? 나는 Lua와 꽤 많은 일을 해왔고 코로나를 정말 좋아합니다. 비 게임 개발의 경우 티타늄이 약간 앞서 보입니다.
uroc

4
안녕하세요. 릴리스 1.1 (이번 주 ETA!)에 기본 UI 기능이 추가되었으며 곧 더 많은 기능이 추가 될 예정입니다. 그러나 티타늄에 대한 제 생각은 많은 네이티브 UI 요소를 노출시키는 훌륭한 작업을 수행했지만 애니메이션 및 렌더링 기능에 더 많은 엔지니어링 노력을 기울이면서 가장 중요한 UI 요소에 초점을 맞출 것입니다. 그 이유는 (i) 이미 UI 전용 앱을위한 좋은 제품이 있고, (ii) UI가 Cocoa (상대적으로 말하면!)에서 가장 친근한 부분이지만, (iii) OpenGL 애니메이션과 관련된 모든 것은 iPhone에서 고통스러운 지점입니다. 순간.
Evan Kirchhoff

그것은 코로나 앱 대신 게임 개발에 적합한 것 같습니다, 맞습니까?
anticafe

18

나는 일주일 이상 티타늄과 함께 일해 왔으며 그 약점에 대해 좋은 느낌을 가지고 있다고 생각합니다.

1) 여러 플랫폼에서 동일한 코드를 사용하기를 바랍니다. 당신은 backgroundGradient와 같은 것을 보게 될 것이고 안드로이드 버전이 그것을 지원하지 않는 것을 알 때까지 놀랄 것입니다. 그런 다음 그라디언트 이미지 사용으로 되돌려 야합니다. 코드를 더 쉽게 만들기 위해 두 버전 모두에 사용할 수 있습니까?

2) 많은 이상한 행동, Titanium android sdk에서 뒤로 버튼이 작동하거나 더 나은 방향 이벤트 추적을하기 위해 "무거운"창이 무엇인지 이해해야합니다. 이것은 안드로이드 플랫폼의 실제 방식이 아니라 Titanium이 API를 작동시키는 방식입니다.

3) 어둠 속에서 던져지면 상황이 추락하여 코드에 주석을 달기 시작하면 찾을 때 절대 사용하지 마십시오. 6 개월 이상 문제가 된 안드로이드의 오리엔테이션 및 퍼센트와 같은 명백한 버그가 있습니다.

4) 버그 .... 많은 버그가 있으며,보고 될 것이며, 몇 달 동안 앉아 있고, 며칠 안에 고쳐질 것입니다. 안드로이드에 많은 다른 문제가있을 때 블랙 베리 모바일 SDK를 출시 할 계획이라고 놀랐습니다.

5) 티타늄 아이폰과 티타늄 안드로이드 자바 스크립트 엔진은 완전히 다릅니다. 안드로이드 버전에서는 원격 자바 스크립트 파일을 다운로드하고 mootools, jquery 등과 같은 라이브러리를 포함하고 사용할 수 있습니다. 내 안드로이드 앱을 계속 컴파일 할 필요가 없기 때문에 이것을 발견했을 때 나는 하늘에있었습니다. 안드로이드 APK 설치 과정이 너무 오래 걸립니다! 아이폰도 가능하지 않으며 아이폰 버전은 훨씬 빠른 자바 스크립트 엔진을 가지고 있습니다.

많은 기본 UI 파트에서 멀리 떨어져있는 경우 즉, setInterval을 사용하여 방향 변경을 감지하고 그라디언트 이미지를 고수하고 뒤로 버튼을 잊어 버리고 자신 만의 애니메이션을 만들고 창 헤더, 도구 모음 및 대시 보드를 잊어 버리십시오. 재 작성이 많이 필요하지 않은 두 가지 모두에서 작동하는 API를 만들 수 있습니다. 그러나 그 시점에서 웹 애플리케이션만큼 부진합니다.

그만한 가치가 있습니까? 모든 고통 후에, 매분의 가치. 로직을 추상화하고 다른 곳을 원한다면 각각 다른 UI를 만들 수 있습니다. 티타늄을 사용하면 유동적 인 응용 프로그램을 만들 수 있습니다. 각 플랫폼의 강력한 레이아웃 기능을 잃어 버리지 만 단순하다고 생각하면 단일 언어로 작업을 수행 할 수 있습니다.

왜 웹앱이 아닌가? 엔트리 레벨 시장에서 안드로이드 폰은 웹보기를 생성하는 데 엄청나게 느리고 더 복잡한 논리를 수행하는 데 사용할 수있는 많은 메모리를 소비합니다.




8

HTML5 위젯을 아이폰 위젯처럼 보이게 만드는 것은 한 가지 일이지만, 동일한 성능을 발휘하게하는 것은 또 다른 문제입니다. html5 애니메이션 (일반적인보기 전환)의 성능, 긴 목록 스크롤, 제스처에 대한 반응이 끈적 거리고 거친 느낌입니다. iPhone 사용자는 차이점을 알 수 있습니다.

플랫폼마다 다른 코드와 사용성 문제를 야기하는 다양한 장치에서 지원하는 제스처 종류에는 약간의 차이가 있습니다.

지금은 기본 앱을 유지하겠습니다.


7

Rhomobile Rhodes ( http://rhomobile.com/products/rhodes )는 PhoneGap과 매우 유사하지만 다음과 같은 유일한 프레임 워크입니다.

  1. Model View Controller 패턴 (대부분의 웹 프레임 워크가 제공하는)
  2. 객체 관계 관리자
  3. 모든 인기있는 스마트 폰 (Windows Phone 7 포함) 지원
  4. 호스팅 개발 서비스 (호스트 빌드가 아닌) : http://rhohub.com
  5. RhoStudio IDE의 전체 디버거 및 SDK가없는 에뮬레이터
  6. 동기화 된 오프라인 데이터 지원

6

티타늄에 관심이있는 사람이라면 클래스, 속성, 메소드가 누락 된 문서가 없다고 말해야합니다. 그러나 샘플 앱인 KitchenSink에 많은 것이 문서화되어 있으므로 그렇게 나쁘지 않습니다.


5

PhoneGap에 대한 나의 이해는 Javascript API를 많은 iPhone API에 제공한다는 것입니다.

웹 개발자 배경에서는 티타늄이 더 쉬워 보입니다. 기본 TabView 애플리케이션을 작성하는 간단한 XML 파일이며 컨텐츠 영역의 모든 것은 HTML / JS에 의해 제어됩니다. 또한 티타늄이 일부 프레임 워크 (특히 위치 정보, 전화 ID 등)에 대한 일부 자바 스크립트 액세스를 제공한다는 것을 알고 있습니다.

업데이트 : Titanium은 프레임 워크 버전 0.8에서 Maps API를 추가했습니다.


"티타늄은 웹 개발자 배경이 더 쉬워 보입니다." 성명서. 당신은 기본 권리보다 쉬운 것을 의미합니까? PhoneGap이 티타늄보다 웹 개발자 배경을 가진 사람과 더 잘 어울리는 것 같습니다.
Serhiy

4

객관적인 c를 배우고 기본 앱을 프로그래밍해야합니다. 인생을 더 편하게 할 것이라고 생각하는 것들에 의존하지 마십시오. Apple은 가장 쉬운 방법은 기본 도구와 언어를 사용하는 것입니다. 100 줄의 자바 스크립트에서 요소에 따라 3 줄의 코드에서 똑같이하거나 전혀 코드를 사용할 수 없습니다. 일부 자습서를보십시오-자바 스크립트를 이해하면 objective c는 어렵지 않습니다. 해결 방법은 비참하며 Apple은 언제든지 언제든지 플러그를 뽑을 수 있습니다.


3
애플은 플러그를 뽑을지도 모른다 ... 그게 내가 관심있는 부분이다
Mickey Shine

6
인용 : "Apple은 가장 쉬운 방법은 기본 도구와 언어를 사용하는 것입니다." 그들은 실제로하지 않았습니다. 그들이 원한다면 파이썬 지원을 제공 할 것입니다. 가비지 콜렉션이 있습니다 (혼자서 충돌 빈도를 줄이십시오-대부분의 iPhone 앱은 끔찍하게 작성되었습니다). 나는 ObjC를 파고, 당신처럼, js보다 오히려 그것을 사용하고 싶지만 그것은 op의 질문이 아닙니다. 또한 MonoTouch는 이러한 옵션 중 하나보다 개발이 더 쉽습니다. 한 줄에 속성을 만들 수 있습니다. 한 줄로 Document 폴더에 대한 참조를 얻으십시오 ... 등. 애플의 비트는 크게 향상 될 수 있습니다.
Rory Blyth

6
좋은 해결책은 Apple이 자체 ObjC 대안을 제공하는 것입니다. ObjC가 제공하는 제어 수준이 필요없는 앱을위한 것. 특히 개발자가 참조 계산 및 속성 특성이 아닌 기능에 중점을 두어야하는 엔터프라이즈 앱의 경우. 또는 적어도 Xcode와 컴파일러를 사용하여 대부분을 자동화하십시오. 개발자가 선택한 코드 (예 : 기본적으로 객체 속성 유지 및 @synthesize- "실제"ObjC 2.0과 같은)에서 지원 지역을 생성하는 코드에서 무시할 수있는 스위치를 제공하십시오. 나를 위해). 기타
로리 블라이스

2
기본적으로 당신이 말하는 것은 C #에서 아이폰 앱을 작성해 봅시다. :)
Justin

3

언급 한 솔루션 중에서 OS 3.0에 도입 된 MapKit 프레임 워크에 직접 액세스 할 수있는 솔루션은 없습니다.

Google Maps HTML 위젯이 MapKit만큼 좋지는 않으므로 (예를 들어 Google Latitude 참조) 기본 Cocoa touch 애플리케이션을 개발하거나 MapKit 통합을 추가하기 위해 확장 할 수있는 솔루션을 선택하는 것이 가장 좋습니다. PhoneGap은 이러한 방식으로 확장 가능하며 (오픈 소스이므로 기본적으로 제공됨) 다른 솔루션도 가능합니다.

편집 : 티타늄은 이제 MapKit을 지원합니다


감사합니다. 그러나 PhoneGap과 Titanium간에 근본적인 차이점이 있습니까?
미키 샤인

1
MapKit은 티타늄에서 오랫동안 오랫동안 사용할 수있었습니다.
jhaynie

@jhaynie : 감사합니다. 나는 (이 9 월에 작성된 때하지 않았다) 티타늄 지금 지원을하고 있음을 반영하기 위해이 답변을 수정 한
rpetrich

1

나는 코로나를 시도했다. mp3 오디오 스트리밍을 지원하지 않는다는 것을 알기 전까지는 좋았습니다. 그래서 나는 거기서 멈췄다. 아이폰 앱 개발자가되고 싶다면 obj c를 배워야한다고 생각합니다. 라디오 방송국 목록이있는 앱을 만들고 싶었을 때 재생을 시작합니다.


2
코로나는 MP3 파일 재생을 지원합니다 ( developer.anscamobile.com/reference/index/mediaplaysound )
Luc Stepniewski
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.