크로스 플랫폼 모바일 애플리케이션 개발 [닫기]


109

점점 더 많은 모바일 플랫폼이 출시되고 있으며 개발자가 SDK를 사용할 수 있습니다. Android, iOS, Moblin, Windows mobile 7, RIM, symbian, bada, maemo 등 다양한 모바일 플랫폼을 사용할 수 있습니다.

그리고 크로스 플랫폼 애플리케이션을 만드는 것은 개발자에게 골칫거리입니다. 모든 플랫폼에 응용 프로그램을 이식하려는 개발자에게 도움이 될 플랫폼 전반에서 공통된 사항을 찾고 있습니다. diff 화면 해상도, 입력 방법, open gl 지원 등이 무엇인지와 같이 플랫폼에 대해 알고있는 세부 정보를 공유하십시오.

또는 html (위젯 유형)로 코드를 작성하고 기본 애플리케이션에로드하여 가능성이 있습니까? 나는 안드로이드에 대해 알고있다. 여기서 우리는 웹뷰를 애플리케이션에 추가 할 수있다.setContentView(view)

알고있는 다른 유형의 플랫폼의 기본 애플리케이션에 html보기를 추가 할 수있는 클래스 세부 사항을 공유하십시오.

이 스레드의 목적은 개발자간에 공통된 세부 정보를 공유하는 것입니다. 커뮤니티 위키로 표시.

크로스 플랫폼 도구 및 라이브러리


1
이 스레드와 관련된 흥미로운 스레드를 발견했지만 stackoverflow.com/questions/3326110/…
sohilv

크로스 플랫폼 개발에 대한 또 다른 좋은 게시물 : stackoverflow.com/questions/51988/…
sohilv 2010-08-06

1
중복으로 마감하도록 투표했습니다. 이것은 두 가지 질문으로 나누기에는 너무 중요합니다. stackoverflow.com/questions/51988/...
ripper234

1
나는 최근에 이것에 대해 블로그에 stronia.com/2014/05/building-cross-platform-mobile-apps.html
Anshu Dwibhashi을

답변:


97

여기 내 대답 은 크로스 플랫폼 도구의 기술적 한계 중 일부를 다루지 만 조금 확장하겠습니다.

크로스 플랫폼 도구는 역사적으로 항상 란이됐다고 생각합니다. 그러한 도구는 잘못된 철학적 초점을 가지고 있기 때문입니다.

플랫폼 간 도구의 모든 판매 포인트는 개발자 에게 제공하는 이점 입니다 . 개발자 가 어디서나 한 번만 실행할 수 있다는 생각으로 판매됩니다 . 개발자 가 새로운 API를 배우지 않고도 시장을 확장 할 수 있다는 생각으로 판매됩니다 . 그들은 개발자 가 비용과 시장 출시 시간을 줄일 수 있다는 생각으로 판매됩니다 .

교차 플랫폼 도구가 판매 되지 않는 것은 최종 사용자에게 제공되는 이점 입니다.

크로스 플랫폼 개발은 최종 사용자에게 거의 혜택이되지 않기 때문에 최종 사용자에게주는 이점은 판매 포인트가 아닙니다. 최종 사용자는 개발자가 제품을 시장에 출시하기 위해 얼마나 열심히 노력해야하는지 신경 쓰지 않습니다. 또한 그들은 사용하지 않고 하나의 플랫폼을 사용할 때 앱이 얼마나 많은 플랫폼에서 실행될 수 있는지 신경 쓰지 않습니다. 앱을 실행하는 데 필요한 하드웨어에서 앱이 필요한 작업을 수행하는지 여부 만 중요합니다. 많은 다른 플랫폼에서 앱을 실행해야 할 특별한 필요가없는 한, 앱을 실행한다는 사실은 가치를 제공하지 않습니다.

반대로 크로스 플랫폼 API를 만드는 피할 수없는 타협은 API에 의해 생성 된 모든 앱이 모든 플랫폼에서 기껏해야 B 등급이 될 것임을 의미합니다. 그들은 각 플랫폼에서 사용하기에 가장 좋은 도구가 될 수 없습니다.

즉, 대부분의 사용 사례에서 크로스 플랫폼 도구는 플랫폼 별 API로 만든 제품에 비해 최종 사용자에게 열등한 제품을 제공합니다. 최종 사용자는 항상 더 나은 선택을 할 수 있습니다.

최종 사용자에게 가장 유용한 도구를 제공하여 장기적으로 수익을 창출합니다. 최종 사용자의 삶을보다 쉽고 생산적으로 만드는 데 철학적으로 집중하지 않으면 처음부터 거의 운명에 처하게됩니다. 최종 사용자에게는 많은 선택권이 있으며 귀하의 도구가 최고 중 하나가 아니라면 시장에서 만들 수 없습니다.

"사용자가 여러 플랫폼에서이 앱을 실행하면 실제로 혜택을 볼 수 있습니다."라고 생각하는 경우에만 크로스 플랫폼 도구를 사용해야합니다. 크로스 플랫폼 도구가 (개발자)의 삶을 더 편하게 해줄 것이라는 이유만으로 시작했다면, 잘못된 이유로 선택한 것이므로 도움이되는 것보다 더 큰 상처를 입을 것입니다.


52
개발자를위한 (불필요한) 작업이 훨씬 적다는 것은 더 빠른 업데이트주기, 더 빠른 새로운 기능, 더 빠른 버그 수정 등을 의미합니다. 같은 인력으로 더 많은 것을 얻을 수 있습니다. 나는 이것이 최종 사용자에게 이익이라고 생각합니다.
schoetbi

10
이론적으로는 더 빠른 개발이 최종 사용자에게 더 좋을 수 있지만 이것이 대부분의 크로스 플랫폼 API의 철학적 토대는 아닙니다. 나는 많은 환경에서 그러한 도구를 사용하려는 많은 시도를 보았고 항상 최종 제품의 품질을 희생하면서 개발자의 삶을 편하게 만드는 데 초점을 맞추고 있습니다. 더욱이, 더 빠르고 더 저렴하다는 약속이 거의 드러나지 않습니다. 대부분의 시간을 절약하는 어딘가에는 항상 쇼 스톱 히치가있는 것 같습니다.
TechZen

5
내 포인트를 집으로 가져 가려면 다음을 고려하십시오. 크로스 플랫폼 API는 다양한 종류의 하드웨어 및 OS에 존재합니다. 개인적으로 정기적으로 사용하는 크로스 플랫폼 앱은 몇 개입니까? 잘 생각하는 크로스 플랫폼 앱을 얼마나 많이 사용해 보셨습니까? 사람들은 둘 이상의 플랫폼이기 때문에 크로스 플랫폼 API를 추진해 왔지만 실제로는 어디에서나 성공한 적이 없습니다. 최종 사용자에게 가장 유용한 앱을 만들지 못하기 때문에 성공하지 못합니다.
TechZen

4
@TechZen-현재 웹 브라우저에서 StackOverflow를 사용하고 있으며 기본 클라이언트를 찾을 이유가 없습니다. 나는 당신이 당신의 주장을 지나치게 일반화했다고 생각합니다.
Youval Bronicki 2011 년

4
나는 이런 종류의 주관적인 철학적 논쟁이 기술 웹 사이트에서 올바른 표식을 얻는 것에 매우 화가 난다. 설상가상으로이 게시물의 논문은 오늘날 우리가 사용하는 대부분의 주요 소프트웨어에 대해 유효하지 않습니다. 웹 브라우저는 크로스 플랫폼입니다. Photoshop, MS Office, Dropbox 등은 크로스 플랫폼입니다. 시작 메뉴 또는 Finder를 열고 플랫폼 별 사용자를 나열하십시오. 소형 유틸리티를 찾을 가능성이 가장 높습니다. 휴대폰이 근본적으로 다르다고 생각한다면 (매우 타당한 가정) 당신의 주장은 타당 할 것이지만, 그 토대를 구축 할 주장은없는 것 같습니다.
kizzx2

14

모바일 장치에서 크로스 플랫폼 개발에 대한 몇 가지 접근 방식이 있습니다. 물론 그들은 모두 한계가 있습니다. 네이티브 애플리케이션이 할 수있는 방식으로 모든 장치의 기능을 활용하는 솔루션은 없습니다.

코드 재사용

모든 모바일 OS가 동일한 개발 언어 및 API를 사용하지는 않지만 때때로 일부 클래스 또는 논리 계층 코드를 공유 할 수 있습니다.

예를 들어 C ++ 는 iOS 애플리케이션 , NDK 를 사용하는 Android 앱 , C ++로 개발 된 Symbian 앱 등에서 재사용 할 수 있습니다 .

일부 솔루션은 장치에서 일반적으로 사용하는 언어가 아닌 다른 언어로 앱을 작성할 수도 있습니다. 가장 유명한 (실제로 내가 아는 유일한 것)은 상업용이며 Mono 프로젝트 (C # 개발)를 기반으로합니다 .

그러나 코드의 재사용이 장치에 따라 제한되기 때문에이 크로스 플랫폼 개발이라고 부를 수 있을지 모르겠습니다.

  • Windows Phone 7은 네이티브 코드 개발을 허용하지 않습니다 (추가 업데이트에있을 수 있음).
  • AFAIK mono like project는 모든 플랫폼 (아직?) bada, webOS, maemo 등에 대해 존재하지 않습니다.

또한 UI 부분은 각 장치에 따라 다릅니다.

웹 개발

모바일 용 크로스 플랫폼 개발에 대해 질문 할 때 일반적인 대답은 웹 개발입니다. 그런 다음 모바일 브라우저를 사용하여 네이티브 애플리케이션처럼 보이고 작동하도록하는 래퍼가 필요합니다. 이것이 우리가 작업에서 더 많이 보게 될 크로스 플랫폼 프레임 워크의 일부입니다.

HTML5의 등장은 지리적 위치, 오프라인 애플리케이션, 로컬 스토리지와 같은 기본 애플리케이션에서만 수행 할 수있는 웹 개발 기능을 제공합니다.

최신 웹 표준 HTML5, CSS3, Js를 활용하여 네이티브 룩앤필로 모바일 용 웹 애플리케이션을 개발하기위한 프레임 워크를 점점 더 많이 찾을 수 있습니다.

그러나 HTML5는 아직 매우 젊고 구현은 브라우저마다 다를 수 있습니다. 대부분의 기본 모바일 브라우저는 WebKit 엔진을 사용하며 (주요 예외는 Internet Explorer를 사용하는 Windows 모바일 / 전화), 그렇더라도 반드시 동일한 기능을 지원 하지는 않습니다 . 로컬 데이터베이스는 여전히 작업하기가 어색하며 다른 브라우저에서 어떻게 구현 될지 확신 할 수 없습니다. 또한 HTML5를 사용하더라도 웹 개발은 기본 앱에 비해 여전히 매우 제한적입니다. 연락처, 카메라, 가속도계 등에 액세스 할 수 없습니다.

편집 : 이달 초 W3C는 HTML5의 진화에 대한 경고를 전달했습니다 : ZDNet의 기사

따라서 제한된 범주의 응용 프로그램에만 적합합니다.

크로스 플랫폼 프레임 워크

그리고 크로스 플랫폼 모바일 애플리케이션 프레임 워크가 있습니다. 이를 통해 한 번 개발하고 다른 플랫폼에 배포 할 수 있습니다. 이러한 솔루션은 일반적으로 iOS 및 Android에 중점을두고 WebKit 엔진에 의존합니다. 웹 기술로 개발하는 동안 전화 기능과 더 많은 상호 작용을 제공합니다. 가장 잘 알려진 것은 Nitobi PhoneGap, RhoMobile Rhodes, Appcelerator Titanium입니다. 그러나 다른 많은 사람들이 거기에 있으며 원하는 플랫폼을 위해 컴파일하기 전에 코드를 자체 중간 언어로 변환하는 MoSync와 같은 동일한 기술을 모두 사용하지 않습니다.

[1] Apple에는 플랫폼 용으로 작성된 앱에 대한 특별 정책 이 있습니다. 현재로서는 이러한 앱을 차단하지 않는 것 같지만 고려해야 할 정보입니다. 편집 : Apple은 9 월 9 일부터이 정책 을 변경 했습니다 .


6

웹앱 (위에서 언급 한 html5)으로 배포 할 때 약간의 공통점이 있지만 리치 네이티브 앱의 경우 API는 다양한 스마트 폰에 대해 완전히 다릅니다.

HTML5는 다소 개선 될 수 있지만 네이티브로 전환하는 데 필요한 흥미로운 작업을 수행합니다.

Phonegap과 같은 '크로스 플랫폼'스마트 폰 프레임 워크가 있지만 '실제'작업에 사용하는 것에 대해 대부분 나쁜 이야기를 들었습니다. (많은 오버 헤드 등)


5

예, html5가 주목을 받고 있습니다. 4 분기에 나올이 컨소시엄 및 플랫폼도 살펴 봐야합니다. 큰 도전처럼 들리기 때문에 해당 프로젝트의 성공 여부는 확실하지 않지만 세부 사항은 다음과 같습니다.

웹 사이트 : http://www.wholesaleappcommunity.com/default.aspx

뉴스 : http://news.google.de/news/search?aq=f&pz=1&cf=all&ned=us&hl=ko&q=%22Wholesale+Applications+Community%22

WAC는 11 월에 개발자에게 SDK의 초기 사양과 구성 요소를 게시하는 것을 목표로합니다. 이 사양은 W3C 표준을 기반으로하며 풍부한 모바일 웹 애플리케이션을 개발하기위한 강력한 플랫폼을 만듭니다. WAC는 또한 현재 JIL 및 BONDI 사양을 기반으로 장치에 대한 하위 호환성을 제공합니다. ( http://www.convergedigest.com/Bandwidth/newnetworksarticle.asp?ID=31021 )

.

모든 개발자에게 개방 된 플랫폼을 만들고 모든 휴대 전화 사용자에게 판매하는 것을 목표로하는 약 25 개 통신 회사의 국제 연합입니다. ( http://www.downloadsquad.com/2010/02/15/atandt-wholesale-applications-community-is-a-platform-not-an-app/ )


1

내가 아는 한 대부분의 장치는 이것을 실행할 수 있습니다.

Java ME-모바일 장치를위한 가장 유비쿼터스 애플리케이션 플랫폼

나는 이것이 좋은 예와 나쁜 예가 될 수 있다고 생각합니다.


사실, 아이폰에는 자바가 없다, 그리고 내가 아는 한, 자바 나 안드로이드에서 실행되지 않습니다
알라 Nassef을


세부 사항은 모르지만 Avian JVM을 사용하면 Java를 iOS 장치에서 실행할 수 있습니다.
Quazi Irfan 15.01.08
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.